Hallo zusammen,
ich stehe irgendwie an:
Offensichtlich ist es nicht möglich, in einem Teilausdruck mit :d den Zahlenwert zu extrahieren, um damit zu vergleichen.
Funktioniendes Beispiel:
(([hz.wt.wz:desiredTemperature:d1]) < ([hz.wt.wz:temperature:d1]))
(set MaLaBot message @T. TestDoif Heizung $DEVICE aktiv!)
DOELSE (set MaLaBot message @T. TestDoif-Heizung $DEVICE deaktiviert!)
Wenn ich jetzt versuche, mit einem Teilausdruck zu filtern:
((["hz.wt:desiredTemperature:d1"]) > (["$DEVICE:temperature:d1"]))
(set MaLaBot message @T. TestDoif Heizung $DEVICE aktiv!)
DOELSE (set MaLaBot message @T. TestDoif-Heizung $DEVICE deaktiviert!)
Sobald ich die :d1 weglasse, bekomme ich den Fehler, dass c1 not numeric ist.
Wie kann ich die beiden Werte (alle Devices sind MAX! Wandthermostate) vergleichen bzw. vorher in eine Zahl umwandeln? ReadingsVal geht ja nicht, ist eine Perl Funktion.
Hintergrund: Sobald einer der 4 Wandthermostate eine gewünschte höhere Temperatur hat, als tatsächlich vorherrscht, soll der Brenner aktiviert werden. Da hängt ein simples Shelly dran, welches einfach einschaltet. Mehr Intelligenz hatte die Heizung bis jetzt nicht.
Ich wollte damit dieses DOIF ersetzen:
(([hz.wt.wz:temperature] < [hz.wt.wz:desiredTemperature]) or
([hz.wt.bz:temperature] < [hz.wt.bz:desiredTemperature]) or
([hz.wt.vz:temperature] < [hz.wt.vz:desiredTemperature]) or
([hz.wt.jz:temperature] < [hz.wt.jz:desiredTemperature]) or
([hz.ve.sz.1:temperature] < [hz.ve.sz.1:desiredTemperature]))
(set MaLaBot message @#Home Heizung wurde eingeschaltet!)
(set sw.bz.therme on)
DOELSE (set sw.bz.therme off) (set MaLaBot message @#Home Gewünschte Temperatur errreicht - Heizung wieder ausgeschalten!)
lg Shamal
Warum hast du die Vergleiche in Anführungszeichen gesetzt? Ohne sollte es wie gewohnt funktionieren:
(["^hz.:temperature"] and [$DEVICE:desiredTemperature:d1] > [$DEVICE:temperature:d1])
(set MaLaBot message @T. TestDoif Heizung $DEVICE aktiv!)
DOELSE (set MaLaBot message @T. TestDoif-Heizung $DEVICE deaktiviert!)
Hallo Damian,
danke - jetzt funktioniert es. Ich hatte wohl irgendwo ein Brett vorm Kopf.
Jetzt muss ich mir dann nur noch eine Variante überlegen, wie ich vor dem Ausschalten checke, ob irgendeines der 4 Thermostate doch noch "Wärme" (=on) benötigt, sprich die Therme "eingeschalten" lässt.
Grüße aus Wien,
shamal2008