ich habe ein MQTT Thing/Item definiert, dass ich einerseits über einen Setpoint in der Sitemap ändern kann, aber in einem bestimmten Fall dieses Item auch automatisiert anpassen lassen will.
.things
Code: Alles auswählen
Thing mqtt:topic:Pumpe "Pumpe" (mqtt:broker:MosquittoBroker) @ "Kategorie" {
Channels:
Type number : Pumpenleistung "Pumpenleistung" [ stateTopic="Pumpe/Steuerung/Pumpenleistung", commandTopic="Pumpe/Steuerung/Pumpenleistung/set"]
Type number : temperatur "temperatur" [ stateTopic="Pumpe/broadcast/temperatur"]
}
Code: Alles auswählen
Number Pumpenleistung "Pumpenleistung" { channel="mqtt:topic:Pumpe:Pumpenleistung" }
Number temperatur "temperatur [%.1f]" { channel="mqtt:topic:Pumpe:temperatur" }
Switch Manuellerbetrieb
Switch LeistungCase
Code: Alles auswählen
Switch item=Manuellerbetrieb label="Manuelle Einstellung" mappings=[OFF="OFF", ON="ON"] icon="settings"
Setpoint item=Pumpenleistung label="Leistungsregelung [%.0f]" minValue=30 maxValue=60 step=5 icon=pump
Code: Alles auswählen
rule "Automatik Pumpenleistung in Abhängigkeit zur Temperatur steuern"
when
Time cron "0 0/1 * * * ?"
then
switch LeistungCase {
case ( temperatur.state >= 8.0 ) : {
if(Manuellerbetrieb.state != ON){
Pumpenleistung.sendCommand(60)
}
}
case ( temperatur.state >= 7.0 && temperatur.state < 8.0 ) : {
if(Manuellerbetrieb.state != ON){
Pumpenleistung.sendCommand(55)
}
}
default : { }
}
end
Wenn ich manuell einen Wert über die Sitemap einstelle, bleibt der Wert von Item Pumpenleistung konstant eingestellt. -> in Ordnung
ABER: Wenn ich im Betrieb "automatische" Regelung , automatisiert über die Rule umstellen lasse, gibt es alle paar Minuten ein hin und her.
Das Automatikprogramm stellt über die Rule 55 ein, das wird angenommen doch ein paar Minuten später stellt er zurück auf 60. Und danach plötzlich wieder in kurzem Abstand auf 55.
Woher kommt diese Fehlfunktion?
Ich habe die Vermutung, dass ich entweder methodisch etwas mit Proxyitem oder mit Datentypen ändern müsste. Doch was genau?
Mit Transformation "as Number" und "as Decimaltyp" habe ich schon experimentiert. -> Das hat aber nicht geholfen das Problem wegzubekommen.
Damit die Pumpe den Wert annnimt, muss ist der Wert ohne Kommastellen geschickt werden. also 50, oder 60, oder 55
Über Setpoint läuft das prima. Aber über die Rule gibt es diese erwähnte Fehlfunktion.
Danke euch für eure Ratschläge im Voraus.
Grüße