NEWS
Javascript stürzt immer ab bei diesem Blockly
-
Moin zusammen,
ich habe ein Script zur Kühlschranküberwachung erstellt und das lässt Javascript immer wieder abstürzen:
Im Log steht nur das bei Javascript:
javascript.0 2022-07-30 13:13:58.438 info script.js.common.Aqara_Sensoren.Kühlschrank_2_zu_warm: registered 1 subscription and 0 schedules javascript.0 2022-07-30 13:13:58.434 info Start javascript script.js.common.Aqara_Sensoren.Kühlschrank_2_zu_warm javascript.0 2022-07-30 13:13:58.426 info Stop script script.js.common.Aqara_Sensoren.Kühlschrank_2_zu_warm javascript.0 2022-07-30 13:13:48.932 info script.js.common.Aqara_Sensoren.Kühlschrank_1_zu_warm: registered 1 subscription and 0 schedules javascript.0 2022-07-30 13:13:48.919 info Start javascript script.js.common.Aqara_Sensoren.Kühlschrank_1_zu_warm javascript.0 2022-07-30 13:13:48.913 info Stop script script.js.common.Aqara_Sensoren.Kühlschrank_1_zu_warm
Hat evtl. jemand eine Idee?
-
Ich habe den Fehler noch einmal reproduziert und dabei das Log beobachtet:
rainbird.0 2022-07-30 13:27:30.137 warn Status request failed. Requested B0 but got 00: {"type":"NotAcknowledgeResponse","commandEcho":48,"NAKCode":4} rainbird.0 2022-07-30 13:27:09.768 warn Status request failed. Requested B0 but got 00: {"type":"NotAcknowledgeResponse","commandEcho":48,"NAKCode":4} rainbird.0 2022-07-30 13:26:50.148 warn Status request failed. Requested B0 but got 00: {"type":"NotAcknowledgeResponse","commandEcho":48,"NAKCode":4} rainbird.0 2022-07-30 13:26:29.778 warn Status request failed. Requested B0 but got 00: {"type":"NotAcknowledgeResponse","commandEcho":48,"NAKCode":4} rainbird.0 2022-07-30 13:26:10.122 warn Status request failed. Requested B0 but got 00: {"type":"NotAcknowledgeResponse","commandEcho":48,"NAKCode":4} rainbird.0 2022-07-30 13:25:49.789 warn Status request failed. Requested B0 but got 00: {"type":"NotAcknowledgeResponse","commandEcho":48,"NAKCode":4} email.0 2022-07-30 13:25:46.349 info sent to aaa@yyy.de,bbb@yyy.de email.0 2022-07-30 13:25:45.889 info Send email: {"html":"### Kühlschrank in der Küche ist zu warm: 8.66°C ###","to":"aaar@yyy.de,bbb@yyy.de","subject":"### Kühlschrank in der Küche ist zu warm: ","from":"ioBroker@yyy.de"} rainbird.0 2022-07-30 13:25:30.120 warn Status request failed. Requested B0 but got 00: {"type":"NotAcknowledgeResponse","commandEcho":48,"NAKCode":4} host.iobroker 2022-07-30 13:25:14.663 info instance system.adapter.fitbit-api.1 terminated with code 0 (NO_ERROR) fitbit-api.1 2022-07-30 13:25:14.105 info Terminated (NO_ERROR): Without reason fitbit-api.1 2022-07-30 13:25:12.598 error Cannot read: Weight is not found fitbit-api.1 2022-07-30 13:25:12.115 info starting. Version 0.1.1 in /opt/iobroker/node_modules/iobroker.fitbit-api, node: v16.16.0, js-controller: 4.0.23 host.iobroker 2022-07-30 13:25:10.064 info instance system.adapter.fitbit-api.0 terminated with code 0 (NO_ERROR) rainbird.0 2022-07-30 13:25:09.750 warn Status request failed. Requested B0 but got 00: {"type":"NotAcknowledgeResponse","commandEcho":48,"NAKCode":4} fitbit-api.0 2022-07-30 13:25:09.496 info Terminated (NO_ERROR): Without reason host.iobroker 2022-07-30 13:25:09.488 info instance system.adapter.fitbit-api.1 started with pid 19283 fitbit-api.0 2022-07-30 13:25:07.708 error Cannot read: fat is not found fitbit-api.0 2022-07-30 13:25:07.278 info starting. Version 0.1.1 in /opt/iobroker/node_modules/iobroker.fitbit-api, node: v16.16.0, js-controller: 4.0.23 host.iobroker 2022-07-30 13:25:05.090 info instance system.adapter.fitbit-api.0 started with pid 19268 host.iobroker 2022-07-30 13:25:04.664 info instance system.adapter.dwd.0 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION) dwd.0 2022-07-30 13:25:04.138 info Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason dwd.0 2022-07-30 13:25:02.794 info starting. Version 2.8.3 in /opt/iobroker/node_modules/iobroker.dwd, node: v16.16.0, js-controller: 4.0.23 host.iobroker 2022-07-30 13:25:00.668 info instance system.adapter.dwd.0 started with pid 19253 rainbird.0 2022-07-30 13:24:50.131 warn Status request failed. Requested B0 but got 00: {"type":"NotAcknowledgeResponse","commandEcho":48,"NAKCode":4} web.0 2022-07-30 13:24:40.249 info ==> Connected system.user.admin from ::ffff:172.17.0.1 web.0 2022-07-30 13:24:39.480 info <== Disconnect system.user.admin from ::ffff:172.17.0.1 vis.0 rainbird.0 2022-07-30 13:24:29.761 warn Status request failed. Requested B0 but got 00: {"type":"NotAcknowledgeResponse","commandEcho":48,"NAKCode":4} host.iobroker 2022-07-30 13:24:18.912 info instance system.adapter.weatherunderground.0 terminated with code 0 (NO_ERROR)
Da ist kein Fehler zu sehen.
Aber der Adapter ist danach rot
-
@myssv sagte in Javascript stürzt immer ab bei diesem Blockly:
Hat evtl. jemand eine Idee?
wiederhole solange feuert im Millisekundentakt Befehle bis der Wert wieder kleiner max ist.
das überlastet den Pi -
@myssv sagte: jemand eine Idee?
Die Schleife wird mehrfach ausgeführt solange die Temperatur zu hoch ist.
Eine Schleife, die den zu prüfenden Wert pollt, ist unangebracht, wenn der Wert als Trigger dient.Vorschlag:
Wert / vorheriger Wert (unter "Trigger"):
-
@paul53
Ich habe das jetzt mal stumpf nachgebaut, aber nicht ganz verstanden:Was meinst Du mit dem Trigger?
-
@myssv sagte: Ich habe das jetzt mal stumpf nachgebaut
Hast Du nicht: Es ist wichtig, dass
vorheriger Wert
aus den Trigger-Blöcken ausgewertet wird, um einen Mehrfach-Timeout zu verhindern, der sich nicht mehr stoppen lässt. -
@paul53
Ja, das habe ich nicht verstanden, wie du es meinst bzw. was ich da wie ändern muss. -
-
Ich sehe meinen Fehler nicht ...
-
@myssv sagte in Javascript stürzt immer ab bei diesem Blockly:
Ich sehe meinen Fehler nicht ...
du hast den falschen Block.
Du musst den nehmen, den @paul53 dir gezeigt hat. -
gefunden
-
@myssv sagte: gefunden
... aber falschen Vergleichs-Operator. Richtig: <=
-
Wenn der Wert<= maxTemp ist, soll nichts passieren,
wenn der Wert > maxTemp ist, soll eine Nachricht gesendet werden.Das müsste doch so richtig sein. Irgendwie stehe ich mal wieder auf dem Schlauch
-
@myssv sagte in Javascript stürzt immer ab bei diesem Blockly:
Das müsste doch so richtig sein.
ist es aber nicht.
es muss beide male der selbe Vergleichsoperator sein, weil die zu prüfende Bedingung gegensätzlich ist -
@myssv sagte: wenn der Wert > maxTemp ist, soll eine Nachricht gesendet werden.
sonst falls vorheriger Wert <= maxTemp
entspricht
Wert > maxTemp (sonst) UND vorheriger Wert <= maxTemp,
also erstmaliges Überschreiten des Grenzwertes. -
-
@paul53 sagte in Javascript stürzt immer ab bei diesem Blockly:
also erstmaliges Überschreiten des Grenzwertes.
Jetzt verstehe ich es.
Nun ist es so, dass die Temperatur immer noch über 8° ist und ich somit keine Nachricht bekomme. Was ja korrekt ist, da die vorherige Temperatur auch schon über dem Max liegt.
Da fällt der Groschen wieder mal Cent weise ...
Danke Euch Beiden!
-
Ich habe es noch etwas verändert, da ich gerne alle 5 Minuten eine Nachricht bekommen möchte, wenn die Temperatur im Kühlschrank zu hoch ist.
Ist das dann so korrekt?
-
@myssv sagte: Ist das dann so korrekt?
Nein, so werden mehrere Timer gestartet, die sich nicht mehr stoppen lassen.
@myssv sagte in Javascript stürzt immer ab bei diesem Blockly:
gerne alle 5 Minuten eine Nachricht bekommen möchte, wenn die Temperatur im Kühlschrank zu hoch ist.
Genau das macht diese Version. Sie sendet alle 5 Minuten bis der Timeout gestoppt wird.
-
@paul53 ok, Danke!
Ich ändere das wieder zurück und werde es dann mal beobachten und etwas damit spielen.
Vielen Dank noch mal!