Ankündigung

Einklappen
Keine Ankündigung bisher.

Stateengine Plugin Support

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

    #31
    Zum Log nochmals. Da steht doch alles drin?!?
    Code:
    2019-08-03 16:35:54.363604       Check condition set 'enter_temperatur'
    2019-08-03 16:35:54.373510               Condition 'temperatur': Checking all relevant stuff
    2019-08-03 16:35:54.385745                       Checking eval: se_eval.get_relative_itemvalue('..settings.suntrack.force_temperatur').
    2019-08-03 16:35:54.388228                               Executing method 'get_relative_itemvalue(..settings.suntrack.force_temperatur)'
    2019-08-03 16:35:54.399911                               Testing for relative item declaration ..settings.suntrack.force_temperatur
    2019-08-03 16:35:54.402758                               Return '28' for item jalousien.og.osten_wohnen.automatik.settings.suntrack.force_temperatur
    2019-08-03 16:35:54.406526                       Condition 'temperatur': min=[28] max=[None] negate=False current=25.9
    2019-08-03 16:35:54.417146                               Checking minvalue 28 and maxvalue None
    2019-08-03 16:35:54.420197                               too low -> not matching

    Kommentar


      #32
      Zu Punkt 5: Ja, genau so wie du geschrieben hast. Das struct könnte dann so aussehen:
      Code:
      stateengine_nacht_raffstore:
          vo:
              nacht:
                  setting_x:
                      type: num
                  .....
      
          rules:
              se_item_hoehe: ..hoehe
      
              nacht:
                  enter:
                     ...
                  on_enter_or_stay:
                     ....

      Kommentar


        #33
        Nun zum eigentlichen "cast" Problem:
        Du hast Einträge wie se_min_time: hmblind4.vo.max_time_morgens

        Das heißt, als Wert wird der String 'hmblind4.vo.max_time_morgens' herangezogen. Du musst ein item: voran stellen, damit der Wert vom Item geholt wird!
        Ich habe den Logeintrag zu dem Problem noch optimiert, aber generell solltest du echt mal deine YAMl durchchecken, das ist alles sehr inkonsistent und chaotisch.

        Kommentar


          #34
          Seit dem Pluginrelease 1.6.1 gibt es nun im WebInterface auch eine Visualisierung zur Stateengine. Feedback willkommen!

          Leider hatte ich verabsäumt, das entsprechende Verzeichnis automatisch anzulegen. Daher müsste folgender Befehl noch im shng Verzeichnis ausgeführt werden:
          Code:
          mkdir plugins/stateengine/webif/static/img/visualisations
          Das Ganze sieht dann in etwa so aus..:
          Screenshot 2019-10-13 at 06.41.01.png
          Zuletzt geändert von Onkelandy; 13.10.2019, 05:41.

          Kommentar


            #35
            schloessl Schau dir mal https://github.com/smarthomeNG/plugi...e563fa8c56b73d an.

            Das
            Code:
            self._log_debug("Currently eval results in {}", self.__get_eval())
            sollte zu deinem Log-Wunsch, den Wert aus dem Eval direkt anzuzeigen passen. Ich brauche das nun de facto für die Grafik im Webinterface, im Startlog kann es aber wohl auch nicht schaden.

            Kommentar


              #36
              Guten Abend,

              Meine Stateengine-Version ist 1.6.2.

              Ich hoffe, mir kann jemand helfen. Ich habe vor Wochen meine Stateengine, die einzig zur Führung der Rollladen dient, etwas umgestellt. Ich habe als Fahrbefehl für die Rollladen auf "fahren" umgestellt, nicht mehr auf "Position". Also
              Code:
              se_item_height: Rollladen.Erdgeschoss.Esszimmer.Wintergarten.Position
              se_item_fahren: Rollladen.Erdgeschoss.Esszimmer.Wintergarten.Fahren
              Problematisch ist, dass diesselbe GA auch die manuelle Sperre "Suspend" auslösen soll . Eigentlich habe ich es so verstanden, dass die Stateengine von selber differenzieren kann, ob der Befehl von ihr kommt oder nicht und es damit nicht zu einem selbstausgelösten Suspend kommt. Aber das hat bei mir nie so richtig funktioniert. Ich habe daher nach vielen Versuchen ein manual_include gesetzt
              Code:
              se_manual_include:
                   - knx:11.1.*
                   - Visu:*
              Nun sollten eigentlich nur noch Befehle von den Schaltern (11.1.*) oder der Visu zu Suspend führen.

              Und nun das mir Unerklärliche: Mir ist jetzt erst klar geworden, dass die Suspends von den Tastern ausgelöst werden. Aus irgendeinem Grund registriert die Stateengine nach dem (von ihm selber ausgelösten) Fahrbefehl einen weitern Fahrbefehl vom Schalter. Das sieht dann so aus:
              Code:
              2019-12-18 19:55:02.349461 Leaving Autoblind_Rollladen.Erdgeschoss.Esszimmer.Wintergarten.rules.suspend ('ausgesetzt'). Condition set was: Autoblind_Rollladen.Erdgeschoss.Esszimmer.Wintergarten.rules.suspend.enter_stay
              2019-12-18 19:55:02.388136     Running action 'suspend_end'
              2019-12-18 19:55:02.402124     Action 'suspend_end': Set 'Autoblind_Rollladen.Erdgeschoss.Esszimmer.Wintergarten.suspend_end' to ''.
              2019-12-18 19:55:02.446983     Running action 'suspend'
              2019-12-18 19:55:02.448981     Action 'suspend': Set 'Autoblind_Rollladen.Erdgeschoss.Esszimmer.Wintergarten.suspend' to 'False'.
              2019-12-18 19:55:02.481839 Entering Autoblind_Rollladen.Erdgeschoss.Esszimmer.Wintergarten.rules.nachts_wintergarten ('Rollladen Nacht_EG') based on conditionset Stateengine_allgemein.Vorgaben.nachts_eg.enter_5 ('enter_5')
              2019-12-18 19:55:02.551563     Running action 'suspend'
              2019-12-18 19:55:02.558434     Action 'suspend': Set 'Autoblind_Rollladen.Erdgeschoss.Esszimmer.Wintergarten.suspend' to 'False'.
              2019-12-18 19:55:02.572121     Running action 'fahren'
              2019-12-18 19:55:02.596045     Action 'fahren': Set 'Rollladen.Erdgeschoss.Esszimmer.Wintergarten.Fahren' to 'True'.
              2019-12-18 19:55:04.114474 Update state of item Automatik Rollladen Esszimer Wintergarten =================
              2019-12-18 19:55:04.116082 Update triggered by Eval (item=Autoblind_Rollladen.Erdgeschoss.Esszimmer.Wintergarten.rules source=Autoblind_Rollladen.Erdgeschoss.Esszimmer.Wintergarten.manuell dest=None)
              2019-12-18 19:55:04.117760 Eval initially triggered by knx (item=Rollladen.Erdgeschoss.Esszimmer.Wintergarten.Fahren source=11.1.16:ga=2/2/80)
              2019-12-18 19:55:04.119285 Checking eval: se_eval.get_relative_itemproperty('..settings.suspendduration', 'value') * 60.
              2019-12-18 19:55:04.120554     Executing method 'get_relative_itemproperty(..settings.suspendduration, value)'
              2019-12-18 19:55:04.121141     Testing for relative item declaration ..settings.suspendduration
              2019-12-18 19:55:04.122251     Item property value from Autoblind_Rollladen.Erdgeschoss.Esszimmer.Wintergarten.settings.suspendduration is: 60
              2019-12-18 19:55:04.122952 Last state: Autoblind_Rollladen.Erdgeschoss.Esszimmer.Wintergarten.rules.nachts_wintergarten ('Rollladen Nacht_EG')
              2019-12-18 19:55:04.124288 Testing for relative item declaration ..conditionset_id
              Was mich umso mehr irritiert: Ich habe zum Testen den Taster vom Bus genommen, aber dennoch registriert die Stateengine diesen Befehl. Als der oben im Protokoll stehende Fahrbefehl (2019-12-18 19:55:04.117760) registriert wurde, war der Taster mit der physikalischen Adresse 11.1.6 gar nicht am Bus!

              Ich stehe vor Rätseln.

              Dieses Verhalten tritt immer nur dann ein, wenn vorher ein wirklicher Suspend-Zustand stattgefunden hat. Also nicht generell, wenn die Stateengine Fahrbefehle gibt, das funktioniert soweit ohne Loop. Aber wenn jemand über Bedienen des Tasters ein Suspend bewirkt, wird der Suspend korrekt eine Stunde später wieder aufgelöst und dann folgt auf den von der Stateengine ausgelösten Fahrbefehl der gezeigter Geister-Tastenbefehl.

              Bevor ich das manual_include gesetzt hatte, hatte ich denselben Effekt noch mit einem Schaltbefehl aus der "source:unbekannt". Es war genau dasselbe wie oben dargestellt, da wußte ich auch nicht, wo der herkam. Den konnte ich aber über das manual_include ausschließen.

              Aber woher kommt der Schalterbefehl, den niemand abgegeben hat?

              Hat jemand eine Idee?

              Grüße

              Kommentar


                #37
                Poste doch mal das ganze Item inklusive rules. Und.. was passiert denn nach dem "Geisterbefehl"?

                Kommentar


                  #38
                  Hallo Onkelandy,

                  danke! Ich habe heute gesehen, dass die Structs bei mir doppelt angelegt sind. Was daran lag, dass ich mir eine eigene struct.yaml gemacht habe und dann die struct-joined aber wieder aufgetaucht ist, obwohl ich sie gelöscht hatte.

                  Vermutlich lag da der Fehler, denn jetzt funktioniert es.

                  Kannst Du mir sagen, was es mit der struct-joined auf sich hat und wo ich eigene structs anlegen kann, wenn nicht in einer eigenen struct.yaml?

                  Vielen Dank jedenfalls!

                  Kommentar


                    #39
                    Eigene structs sollen in die etc/structs.yaml

                    Wie im Log steht:
                    Code:
                    2019-12-21  17:06:51 WARNING  lib.item             load_itemdefinitions(): For testing the joined item structs are saved to /usr/local/shng_dev/etc/structs_joined.yaml
                    werden die structs, nachdem alle structs geladen sind (aus der etc/structs.yaml und allen geladenen Plugins) als etc/structs_joined.yaml gespeichert, damit man nachvolziehen kann, welche structs geladen sind, und wie die Struktur aussieht.

                    Die Doppelung bei Dir rührt vermutlich daher, dass Du eine struct selbst angelegt hast, die auch bereits in einem Plugin definiert ist.
                    Viele Grüße
                    Martin

                    Stay away from negative people. They have a problem for every solution.

                    Kommentar


                      #40
                      Ah, super, danke für die Eklärung. Ich habe die Zeile im Login gelesen, aber ich konnte mir unter "joined item structs" nichts vorstellen.

                      Viele Grüße

                      Kommentar

                      Lädt...
                      X