Ankündigung
Einklappen
Keine Ankündigung bisher.
Stateengine Plugin Support
Einklappen
X
-
Hab ich auch, einmal nach dem Start, ist mir vorher nie aufgefallen. Doku hab ich dir geschickt...
-
Der Fehler kommt bei jedem Start für alle Stateengines.
Hier ein Beispiel einer releativ einfachen Stateengine die seit Jahren funktioniert:
Code:hauswirtschaftsraum: licht: deckenlampe: struct: lampe_schaltbar schalten: knx_listen: 2/0/0 knx_send: 2/0/0 knx_init: 2/0/0 automatik: struct: stateengine.general rules: se_startup_delay: 30 se_item_licht: ...deckenlampe.schalten se_item_tuer: ....tuer se_item_taster: flur_kg.taster.oben_links eval_trigger: - hauswirtschaftsraum.tuer - flur_kg.taster.oben_links AN: type: foo on_enter: se_action_licht: - 'function: set' - 'to: value:true' enter_tuer: type: foo se_value_tuer: true se_value_laststate: hauswirtschaftsraum.licht.automatik.rules.AUS enter_taster: type: foo se_value_taster: true se_value_laststate: hauswirtschaftsraum.licht.automatik.rules.AUS AUS: type: foo on_enter: se_action_licht: - 'function: set' - 'to: value:false' enter: type: foo se_value_tuer: false se_value_taster: false se_value_laststate: hauswirtschaftsraum.licht.automatik.rules.ANZuletzt geändert von paularndt; 08.01.2023, 11:56.
Einen Kommentar schreiben:
-
Hmm, sonderbar, den Fehler hatte ich nie. Kommt nur direkt beim Start, aber nicht im laufenden Betrieb oder immer? Auch nach Neustart kommt der Fehler?
Kannst du mir mal ein möglichst einfaches Stateengine Item von dir posten?
Einen Kommentar schreiben:
-
Hallo zusammen,
ich habe heute versucht, von 1.9.2 auf 1.9.3 upzugraden, funktioniert auch alles top, bis auf das Stateengine Plugin. Alle Stateengines werfen diesen Fehler:
Habe leider bisher nichts dazu im Forum gefunden. Hat jemand eine Idee woran das liegt?Code:2023-01-06 15:32:57 ERROR plugins.stateengine.kinderzimmer1.rollladen.automatik.rules-Startup Delay Method plugins.stateengine.kinderzimmer1.rollladen.automatik.rules-Startup Delay exception: local variable '_wouldenter' referenced before assignment Traceback (most recent call last): File "/usr/local/smarthome/lib/scheduler.py", line 659, in _task obj(**value) File "/usr/local/smarthome/plugins/stateengine/StateEngineItem.py", line 1217, in __startup_delay_callback self.update_state(item, "Startup Delay", source, dest) File "/usr/local/smarthome/plugins/stateengine/StateEngineItem.py", line 752, in update_state self.run_queue() File "/usr/local/smarthome/plugins/stateengine/StateEngineItem.py", line 474, in run_queue _last_conditionset_id = self.__conditionsets[_wouldenter][0] UnboundLocalError: local variable '_wouldenter' referenced before assignment
Viele Grüße und vielen Dank,
PaulZuletzt geändert von paularndt; 06.01.2023, 16:06.
Einen Kommentar schreiben:
-
Prinzipiell wenn es klappt ist gut
Man muss dann halt neben manuell Item auch das suspend Item in den eval_trigger der stateengine nehmen. Das führt dann wohl zu doppelter Evaluierung, sobald es in den Suspend geht. Der Release State ist aber auch nur ein Hilfskonstrukt, das zwei Evaluierungen hintereinander auslöst.
Einen Kommentar schreiben:
-
Somit ist es keine gute Idee direkt 'suspend' auf False zu setzen? Hat bei meinem Test so funktioniert.
Einen Kommentar schreiben:
-
Bestens, werde ich gleich in develop pushen.. Aber anyway, der State bringt dir nur was direkt an 2. Stelle. Dadurch kannst du den suspend beenden, ohne zB zuerst locken zu müssen.
Einen Kommentar schreiben:
-
Habe die plugin.yaml so angepasst und stateengine.state_release als 4.Zeile in meinen structs wieder aktiviert. Jetzt wird die Suspendtime auch in diesem Fall angezeigt.Zitat von Onkelandy Beitrag anzeigenDa haben wir den Übeltäter.. Release dient als "Zustandsvorlage für Deaktivieren von Suspend und Lock und erneutes Evaluieren der Regeln", sollte also oberhalb der beiden gelistet sein. Allerdings sollte das trotzdem so nicht passieren. Füg bitte mal im plugin.yaml bei Zeilen 1184 und 1185 ein ".date_time" an. Dadurch sollte das Problem behoben sein, egal an welcher Stelle der release state kommt.
Danke für die tolle Hilfe !
Einen Kommentar schreiben:
-
Da haben wir den Übeltäter.. Release dient als "Zustandsvorlage für Deaktivieren von Suspend und Lock und erneutes Evaluieren der Regeln", sollte also oberhalb der beiden gelistet sein. Allerdings sollte das trotzdem so nicht passieren. Füg bitte mal im plugin.yaml bei Zeilen 1184 und 1185 ein ".date_time" an. Dadurch sollte das Problem behoben sein, egal an welcher Stelle der release state kommt.
Hammas doch noch geschafft.. danke für's Dranbleiben!
Einen Kommentar schreiben:
-
Habe mich schrittweise vorgearbeitet:
Ich habe zuerst beide Zeilen [1] und [2] ausgeschaltet und die Suspend-Zeit wurde korrekt in "Storen.TestY.Automatik.suspend_end" angezeigt. [1] konnte ich dann wieder aktivieren und die Zeit wurde weiter angezeigt. Als ich dann aber [2] auch wieder eingeschaltet habe, war Schluss. Es wurde keine Zeit mehr angezeigt.Code:Storen: Trigger: type: bool name: Gemeinsamer Trigger für alle Storen enforce_updates: yes cycle: 60 = 1 # Ausloesung Trigger jede Minute TestY: AufAb: type: bool enforce_updates: on visu_acl: rw value: false cache: true Position: type: num visu_acl: rw Automatik: struct: - stateengine.general - stateengine.state_lock # [1] - stateengine.state_suspend # - stateengine.state_release # [2] manuell: eval_trigger: - ...AufAb rules: se_plugin: active eval_trigger: - Storen.Trigger - ..manuell # - ..lock - ..suspend se_log_level: 2 se_item_position: ...Position Default: type: foo name: Test Default se_action_position: - 'function: set' - 'to: 0' enter: type: foo
Hoffe das das bei der Eingrenzung weiterhilft.
Einen Kommentar schreiben:
-
Wir stehen vor einem Rätsel.. Beim Start wird bei mir folgendes geloggt.. bei dir eben ohne date_time hinten dran. Der Ursprung allen Übels.
Die Frage ist nun, wann, wo und warum das verloren geht. Schaust du mal im Admin Interface unter /admin/items/structs und da stateengine.state_suspend..?Code:2022-06-07 00:16:56.307932 Actions to perform on enter or stay: 2022-06-07 00:16:56.308116 Action 'suspend': 2022-06-07 00:16:56.308239 function: special 2022-06-07 00:16:56.308352 name: suspend 2022-06-07 00:16:56.308471 repeat: True 2022-06-07 00:16:56.308591 order: 1 2022-06-07 00:16:56.308710 Special Action: suspend 2022-06-07 00:16:56.308874 value: [Item: jalousien.eg.osten_buero.automatik.suspend, 'jalousien.eg.osten_buero.automatik.manuell'] 2022-06-07 00:16:56.309003 Action 'suspend_end': 2022-06-07 00:16:56.309121 name: suspend_end 2022-06-07 00:16:56.309236 repeat: True 2022-06-07 00:16:56.309352 order: 3 2022-06-07 00:16:56.309478 item: jalousien.eg.osten_buero.automatik.suspend_end.date_time
Kannst da n Screenshot machen? Was steht im Admin Interface beim suspend_end Item unter eval_trigger und unter eval..?
Könnte irgendwo irgendwas dazwischen funken? Kannst du mal mit nur dem einen einzigen Item neustarten und vielleicht auch dort nur stateengine_default und state_suspend structs referenzieren, sonst nichts hinzufügen oder ändern außer dem manuell Item mit dem eval_trigger..?
Einen Kommentar schreiben:
-
In meinem plugin.yaml sieht dieser Abschnitt so aus:
Also identisch.Code:rules: se_item_suspend: ..suspend se_item_suspend_visu: ..suspend.visu se_item_suspend_end: ..suspend_end.date_time se_item_suspend_start: ..suspend_start.date_time se_item_suspend_active: ..settings.suspend_active se_suspend_time: item:..settings.suspendduration.seconds eval_trigger: - ..manuell
Ich habe zur Sicherheit direkt von Github via Download die Plugins aus dem Develop direkt heruntergeladen und mit der Datei plugin.yaml auf meinem Raspberry Pi verglichen. Die beiden Dateien sind exakt identisch.
Einen Kommentar schreiben:
-
Check bitte mal das plugin.yaml vom stateengine Plugin. Da muss einfach was beim gitten schief gelaufen sein..
Das hier sollte im state_suspend (nach den settings) stehen:
Code:rules: se_item_suspend: ..suspend se_item_suspend_visu: ..suspend.visu se_item_suspend_end: ..suspend_end.date_time se_item_suspend_start: ..suspend_start.date_time se_item_suspend_active: ..settings.suspend_active se_suspend_time: item:..settings.suspendduration.seconds
Einen Kommentar schreiben:
-
Hier der Screenshot der Stateengine im Suspend-Modus:
Screenshot 2022-06-08 at 17-00-18 stateengine Plugin.png
Einen Kommentar schreiben:
-
Poste bitte nochmals einen aktuellen Screenshot aus der Webinterface Visualisierung von dem Item - denn da müsste eigentlich stehen, dass nicht .._end, sondern das Unteritem date_time aktualisiert wurde.
Einen Kommentar schreiben:

Einen Kommentar schreiben: