Batterieüberwachung mit Whatsapp
Verfasst: 19. Okt 2024 11:30
Hallo zusammen,
ich nutze seit langem dieses Forum zum mitlesen, und ab heute bin ich auch aktives Mitglieg, da ich mit meiner Problematik nicht weiterkomme.
Ich versuche eigentlich etwas sehr Banales. Ich möchte mit einer Rule, beim unterschreiten des SoC der Batterie eine Whatsappnachricht auf mein Handy schicken lassen. Ist die Batterie dann irgendwann wieder über den Schwellwert, soll auch eine Nachricht geschickt werden. Zum experimentieren, habe ich als Eingangsgöße einen Temperatursensor genommen, welchen ich über Anfassen und Loslassen an dem Schwellwert vorbei laufen lasse.
Leider greift meine IF Abfrage nicht. Obwohl die Bedingung erfüllt ist, geht er nicht in den Zweig, welcher das Versenden der Nachricht auslöst.
Der Code ist wie folgt:
Im Log erscheint das dann so:
Meiner Meinung nach, müsste er in den Else Zweig gehen, da die Temperatur (später SoC) ja von unten kommt. Aber wie man an den Logeinträgen sieht, kommt die entsprechende Meldung nicht, obwohl previousState 27.2 und newState 29.3 ist.
Wo liegt der Fehler... ich sehe es nicht. Wahrscheinlich betriebsblind...
Vielen Dank vorab für eure Hilfe,
Boris
ich nutze seit langem dieses Forum zum mitlesen, und ab heute bin ich auch aktives Mitglieg, da ich mit meiner Problematik nicht weiterkomme.
Ich versuche eigentlich etwas sehr Banales. Ich möchte mit einer Rule, beim unterschreiten des SoC der Batterie eine Whatsappnachricht auf mein Handy schicken lassen. Ist die Batterie dann irgendwann wieder über den Schwellwert, soll auch eine Nachricht geschickt werden. Zum experimentieren, habe ich als Eingangsgöße einen Temperatursensor genommen, welchen ich über Anfassen und Loslassen an dem Schwellwert vorbei laufen lasse.
Leider greift meine IF Abfrage nicht. Obwohl die Bedingung erfüllt ist, geht er nicht in den Zweig, welcher das Versenden der Nachricht auslöst.
Der Code ist wie folgt:
Code: Alles auswählen
rule "WA Batterie fast leer"
when
Item Hzng2kW_Temp changed
then
if(!(previousState instanceof Number)) {
return;
}
if(!(newState instanceof Number)) {
return;
}
logInfo("Rule Batterymonitor", "Vorher: "+previousState) //debug
logInfo("Rule Batterymonitor", "Aktuell: "+newState) //debug
if(previousState >= 28 && newState < 28.0) {
logInfo("Rule Batterymonitor", "Battery low") //debug
var MessageWhatsApp = ("Batterie unter 28%.")
MessageWhatsApp = MessageWhatsApp.replace(" ", "%20")
executeCommandLine ("wget", "https://api.callmebot.com/whatsapp.php?source=openHAB&phone=+xxxxxxxxxxxxx&apikey=xxxxxx&text="+MessageWhatsApp)
}
else if(previousState < 28.0 && newState >= 28.0) {
logInfo("Rule Batterymonitor", "Battery OK") //debug
var MessageWhatsApp = ("Batterie wieder über 28%.")
MessageWhatsApp = MessageWhatsApp.replace(" ", "%20")
executeCommandLine ("wget", "https://api.callmebot.com/whatsapp.php?source=openHAB&phone=xxxxxxxxxxxxxx&apikey=xxxxxx&text="+MessageWhatsApp)
}
end
Code: Alles auswählen
2024-10-19 11:03:40.761 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'whatsappnotifications.rules'
2024-10-19 11:03:58.292 [INFO ] [ore.model.script.Rule Batterymonitor] - Vorher: 26.7 °C
2024-10-19 11:03:58.292 [INFO ] [ore.model.script.Rule Batterymonitor] - Aktuell: 26.6 °C
2024-10-19 11:04:08.276 [INFO ] [ore.model.script.Rule Batterymonitor] - Vorher: 26.6 °C
2024-10-19 11:04:08.277 [INFO ] [ore.model.script.Rule Batterymonitor] - Aktuell: 27.2 °C
2024-10-19 11:04:13.276 [INFO ] [ore.model.script.Rule Batterymonitor] - Vorher: 27.2 °C
2024-10-19 11:04:13.277 [INFO ] [ore.model.script.Rule Batterymonitor] - Aktuell: 29.3 °C
2024-10-19 11:04:18.278 [INFO ] [ore.model.script.Rule Batterymonitor] - Vorher: 29.3 °C
2024-10-19 11:04:18.279 [INFO ] [ore.model.script.Rule Batterymonitor] - Aktuell: 30.6 °C
2024-10-19 11:04:23.280 [INFO ] [ore.model.script.Rule Batterymonitor] - Vorher: 30.6 °C
Wo liegt der Fehler... ich sehe es nicht. Wahrscheinlich betriebsblind...
Vielen Dank vorab für eure Hilfe,
Boris