Ankündigung

Einklappen
Keine Ankündigung bisher.

Stateengine Plugin Support

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    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.

    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
    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..?
    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..?

    Kommentar


      Habe mich schrittweise vorgearbeitet:

      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
      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.

      Hoffe das das bei der Eingrenzung weiterhilft.

      Kommentar


        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!

        Kommentar


          Zitat von Onkelandy Beitrag anzeigen
          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.
          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.

          Danke für die tolle Hilfe !

          Kommentar


            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.

            Kommentar


              Somit ist es keine gute Idee direkt 'suspend' auf False zu setzen? Hat bei meinem Test so funktioniert.

              Kommentar


                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.

                Kommentar

                Lädt...
                X