NEWS
[Gelöst] Wemos D1 mini - Batteriestatus abfragen
-
Hallo zusammen,
ich habe mir mit einem Wemos D1 mini und einem BME280 ein mit Batterien betriebenes Aussenthermometer erstellt. Der Wemos sendet alle 15 Minuten die Daten und legt sich dann wieder schlafen.
Nun möchte ich mir eine Push-Nachricht senden lassen, wenn irgendwann keine Daten mehr gesendet werden, weil dann wahrscheinlich die Batterien verbraucht sind.
Ich habe einen Datenpunkt "AT1_status" erzeugt.
Nun ist mein Ansatz, dass wenn einer der Werte (z.B. die Temperatur) des BME280 aktualisiert wird, ich den Status auf 0 setzen lasse. Danach soll alle 1 Minute der Status um 1 erhöht werden. Sollte dann der Status irgendwann größer 15 sein, soll er eine Nachricht senden und den Intervall stoppen.
Hier mein Blockly:
Leider funktioniert mein Blockly nicht ganz, wie ich es dachte.
Hier der Log dazu:2019-10-15 11:03:38.775 - info: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] connected with secret 1571130218774_4463 2019-10-15 11:03:38.799 - info: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] subscribes on "aussenthermometer/#" with regex /^aussenthermometer\..*/ 2019-10-15 11:03:38.799 - info: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] subscribes on "aussenthermometer/#" with regex /^mqtt\.0\.aussenthermometer\..*/ 2019-10-15 11:03:38.799 - info: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] publishOnSubscribe send all known states 2019-10-15 11:04:09.729 - info: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] connection closed: disconnected 2019-10-15 11:04:42.639 - info: javascript.0 Start javascript script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status 2019-10-15 11:04:42.642 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: registered 1 subscription and 0 schedules 2019-10-15 11:04:52.356 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 0 2019-10-15 11:05:52.357 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 0 2019-10-15 11:06:52.357 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 1 2019-10-15 11:07:52.356 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 2 2019-10-15 11:08:52.357 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 3 2019-10-15 11:09:52.358 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 4 2019-10-15 11:10:52.358 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 5 2019-10-15 11:11:52.358 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 6 2019-10-15 11:12:52.358 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 7 2019-10-15 11:13:52.359 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 8 2019-10-15 11:14:29.219 - info: unifi.0 Starting UniFi-Controller query 2019-10-15 11:14:29.219 - info: unifi.0 update_interval = 1800 2019-10-15 11:14:29.219 - info: unifi.0 controller = 192.168.183.180:8443 2019-10-15 11:14:29.451 - info: unifi.0 getSitesStats: default 2019-10-15 11:14:29.462 - info: unifi.0 getSiteSysinfo: 1 2019-10-15 11:14:29.472 - info: unifi.0 getClientDevices: 11 2019-10-15 11:14:29.495 - info: unifi.0 getAccessDevices: 1 2019-10-15 11:14:52.359 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 9 2019-10-15 11:15:52.360 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 10 2019-10-15 11:16:52.361 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 11 2019-10-15 11:17:22.023 - info: info.0 Popup news was read... 2019-10-15 11:17:52.362 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 12 2019-10-15 11:18:13.178 - info: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] connected with secret 1571131093177_6473 2019-10-15 11:18:13.193 - info: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] subscribes on "aussenthermometer/#" with regex /^aussenthermometer\..*/ 2019-10-15 11:18:13.193 - info: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] subscribes on "aussenthermometer/#" with regex /^mqtt\.0\.aussenthermometer\..*/ 2019-10-15 11:18:13.193 - info: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] publishOnSubscribe send all known states 2019-10-15 11:18:13.990 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 13 2019-10-15 11:18:36.994 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 0 2019-10-15 11:18:39.391 - warn: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] Message 888 deleted after 11 retries 2019-10-15 11:18:44.132 - info: mqtt.0 Client [ESPClient_2C:F4:32:77:5A:28] connection closed: disconnected 2019-10-15 11:18:52.363 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 0 2019-10-15 11:19:13.991 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 1 2019-10-15 11:19:36.996 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 2 2019-10-15 11:19:52.364 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 3 2019-10-15 11:20:13.991 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 4 2019-10-15 11:20:36.996 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 5 2019-10-15 11:20:52.364 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 6 2019-10-15 11:21:13.991 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 7 2019-10-15 11:21:36.998 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 8 2019-10-15 11:21:52.364 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 9 2019-10-15 11:22:13.991 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 10 2019-10-15 11:22:36.998 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 11 2019-10-15 11:22:52.364 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 12 2019-10-15 11:23:13.992 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 13 2019-10-15 11:23:36.999 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 14 2019-10-15 11:23:52.364 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 15 2019-10-15 11:24:13.992 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 16 2019-10-15 11:24:14.000 - info: pushover.0 Send pushover notification: {"message":"Aussenthermometer Batterie leer!","title":"ioBroker","priority":"0"} 2019-10-15 11:24:52.365 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 17 2019-10-15 11:24:52.369 - info: pushover.0 Send pushover notification: {"message":"Aussenthermometer Batterie leer!","title":"ioBroker","priority":"0"} 2019-10-15 11:25:13.993 - info: javascript.0 script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status: 18 2019-10-15 11:25:13.997 - info: pushover.0 Send pushover notification: {"message":"Aussenthermometer Batterie leer!","title":"ioBroker","priority":"0"} 2019-10-15 11:25:24.838 - info: javascript.0 Stop script script.js.common.Pushover_Benachrichtigungen.Aussenthermometer_Status
Ich hab das Script gestartet, als Daten reinkamen. Ich verstehe nicht warum das Script nach einer Minute ein zweites Mal die Info mit 0 meldet? Sollte da nicht schon eine 1 im Status sein?
Danach fuktioniert das Script wie es gedacht war, jede Minute erhöht es den Status um 1. Als aber erneut Daten ankommen, kommt das Script augenscheinlich durcheinander. Zumindest kann ich mir dieses Verhalten nicht erklären.Zum Schluß die letzte Frage, die ich mir stelle. Warum stoppt das Script den Intervall nicht? Was mache ich da falsch bzw. was muß ich anders machen?
Ich hoffe ihr könnt mir helfen.
Gruß Andreas
-
@Smallframe sagte:
Ich verstehe nicht warum das Script nach einer Minute ein zweites Mal die Info mit 0 meldet? Sollte da nicht schon eine 1 im Status sein?
Javascript arbeitet asynchron, d.h. der Befehl "aktualisiere" wird nur angeschubst und arbeitet im Hintergrund weiter. Deshalb liefert "Wert von Objekt" den vorherigen Wert.
Verwende eine Variable zum hochzählen und schreibe den Wert der Variablen in den Datenpunkt.@Smallframe sagte in Wemos D1 mini - Batteriestatus abfragen/erstellen:
Warum stoppt das Script den Intervall nicht?
Wenn man das laufende Intervall nicht vorher stoppt, laufen mehrere Intervalle.
-
@paul53 said in Wemos D1 mini - Batteriestatus abfragen/erstellen:
@Smallframe sagte:
Ich verstehe nicht warum das Script nach einer Minute ein zweites Mal die Info mit 0 meldet? Sollte da nicht schon eine 1 im Status sein?
Javascript arbeitet asynchron, d.h. der Befehl "aktualisiere" wird nur angeschubst und arbeitet im Hintergrund weiter. Deshalb liefert "Wert von Objekt" den vorherigen Wert.
Verwende eine Variable zum hochzählen und schreibe den Wert der Variablen in den Datenpunkt.@Smallframe sagte in Wemos D1 mini - Batteriestatus abfragen/erstellen:
Warum stoppt das Script den Intervall nicht?
Wenn man das laufende Intervall nicht vorher stoppt, laufen mehrere Intervalle.
Das Javascript asynchron läuft, war mir so nicht klar.
Vielen Dank für die ausführliche Hilfe! Jetzt läuft alles wie ich es mir gewünscht habe!