Hallo zusammen,
wollte mir eine einfache Notifizierung erstellen, wenn die Warmwasssertemperatur <= Heizraumtemperatur ist.
Leider funktioniert es nicht wenn ich den temperatursensor (OneWire_Sensor1) auf einen Wert unter dem von OneWire_Sensor0 einstelle über:
set OneWire_Sensor1 19
oder auch set OneWire_Sensor1 19.00
Das hier ist die Definition der Überwachung:
#Überwachung: Heizung
define WarmwasserBetrieb dummy
attr WarmwasserBetrieb alias Warmwasserbereitung
attr WarmwasserBetrieb devStateIcon off:ampel_rot on:ampel_gruen
attr WarmwasserBetrieb event-on-change-reading state
attr WarmwasserBetrieb room Keller,Zentralheizung
define WarmwasserBetriebAn notify OneWire_Sensor1:state.* {fhem ("set WarmwasserBetrieb on") if (ReadingsNum("OneWire_Sensor1","state","") > (ReadingsNum("OneWire_Sensor0","state","") && Value("WarmwasserBetrieb") ne "on"))}
define WarmwasserBetriebAus notify OneWire_Sensor1:state.* {fhem ("set WarmwasserBetrieb off") if (ReadingsNum("OneWire_Sensor1","state","") <= (ReadingsNum("OneWire_Sensor0","state","") && Value("WarmwasserBetrieb") ne "off"))}
#Benachrichtigen bei zu niedriger Warmwassertemperatur: Hirschtal
define WarmwasserPushover notify WarmwasserBetrieb:off { system ("curl -s -F 'token=xyz' -F 'user=xyz' -F 'message=Warmwassertemperatur niedrig:\nHeizung überprüfen!' https://api.pushover.net/1/messages.json")}
Warum funktioniert das notify nicht?
Kann da jmd. einen Tipp geben? (vlt. auch wie ich das anders umsetzen könnte - brauche ich hier einen watchdog?)
Um Hilfe zu Selbsthilfe zu geben:
- state wird normalerweise im notify _nicht_ verarbeitet, dazu ist ein Attribut notwendig
- Reading nicht mit Event gleichsetzen. Am besten den Event-Monitor beobachten, oder die Werte aus eventType bzw. Notify-Regexp-Wizard nehmen.
- Die von notify ausgefuehrten Befehle kann man direkt in der Eingabezeile ausfuehren, bzw. das notify mit einem passenden trigger selbst dazu veranlassen.
ich denke, dass dein notify funktioniert.
die klammersetzung im if entspricht wahrscheinlich nicht dem, was du eigentlich möchtest. wahrscheinlich willst du dieses:
if ((ReadingsNum("OneWire_Sensor1","state","") > ReadingsNum("OneWire_Sensor0","state","")) && (Value("WarmwasserBetrieb") ne "on"))
Danke Frank.
Das war das Problem.
Jetzt scheint es zu funktionieren.