Ankündigung

Einklappen
Keine Ankündigung bisher.

Zustandsautomat - Bedingungen

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

    [callidomus] Zustandsautomat - Bedingungen

    Hallo,

    mir sind zwei Bedingungsoptionen noch nicht ganz klar: Auslöser Evaluation und Zustand. Könnt ihr ( mumpf oder callidomus ) dazu kurz was schreiben. Ich habe in weder in der Doku noch in der Online-Hilfe etwas gefunden.

    Zum Zustand: Ich meine mich zu erinnern, dass unter Zustand das "Alter" des Zustands abgefragt wird. Man also über diese Bedingung einen Zustand wieder beenden kann. Ich glaube, Waldemar hatte das in seinem Beispiel auf dem Stammtisch so gemacht. Ich habe dazu im Verlassen-Teil die Bedingung Zustand > 60 angelegt, in der Hoffnung, dass der Zustand nach 60 Sekunden wieder verlassen wird. Dem ist aber scheinbar nicht so. Oder?

    Zum Auslöser Evaluation: Ich hatte erwartet, dass ich hier den Wert abfragen kann, der zur Evaluation der SM geführt hat. Also wenn ich zum Beispiel die SM von einem Item abhängig mache, dass ich dann in dem Zustand als Bedingung bestimmte Werte dieses Items abfragen kann. Aber das klappt bei mir auch so nicht. Wie wäre es richtig?

    Gruß
    Thomas
    Zuletzt geändert von Stereofeld; 04.02.2017, 12:47.

    #2
    Hi Thomas,

    gerne schreib ich was...

    Zustand: Repräsentiert den aktuellen Zustand. Dieser hat ja einen Namen und natürlich ein Alter. Du kannst beides abfragen.
    Wenn Du z.B. als Bedingung für den Zustand "Offen15Minuten" definierst
    Zustand == Offen
    Zustand Alter >= 15m

    so sagst Du damit, dass der Zustand Offen15Minuten nur dann betreten werden kann, wenn der aktuelle Zustand Offen ist und dieser für mindestens 15 Minuten anliegt.

    Deine Exit-Bedingung Zustand > 60 funktioniert sicherlich, Du musst nur bedenken, dass es eine Bedingung und kein Trigger ist! Somit wird die Bedingung nur geprüft, wenn ein Trigger (Auswertung der Maschine) geschieht. Das passiert automatisch, wenn Du KEINE eigenen Trigger definiert hast. Sonst musst Du einen eigenen Trigger (z.B. Zyklisch 60) definieren oder ein "during 60 evaluate" in dem Zustand, der nach 60 Sekunden verlassen werden soll.

    Auslöser Evaluation: Hier kannst Du nicht den Wert eines Auslösers abfragen (das kannst Du ja einfach über eine Item-Bedingung machen), sondern den Auslöser (trigger) selbst. Um beim obigen Beispiel zu bleiben, den Zustand Offen könntest Du abfragen über
    Auslöser == EG.Wohnzimmer.Fenster.Sued.Status
    Item EG.Wohnzimmer.Fenster.Sued.Status != 0

    Hier sagst Du, dass der Status des Fensters nur dann geprüft werden soll, wenn sich der Status auch wirklich geändert hat. Auslöser (trigger) sollte man in Bedingungen sehr sparsam verwenden, da eine SM eine solche Bedingung nach einem Restart nie betreten kann. Je nachdem, was man für Aktionen mit solchen Zuständen macht, kann es schnell zu unerwünschtem Verhalten beim Neustart von callidomus kommen. Das obige Beispiel wäre besser ohne die Zeile mit Auslöser. Sollte aber auch nur ein Beispiel für die Funktion sein.

    Sollte es noch weitere Fragen geben, nur zu!

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      Hi Waldemar,

      vielen Dank schon mal!! Das hilft mir schon mal wieder sehr weiter.

      Stichwort "during 60 evaluate" im Zustand selbst: Das ist eigentlich genau das was ich wollte. Nur wie genau definiere ich das im Zustand? Muss ich bei Während so etwas wie "evaluate(60)" oder so als Aktion eintragen?

      Gruß
      Thomas

      Kommentar


        #4
        Hi Thomas,

        sorry dass ich immer die englischen Begriffe verwende, aber ich arbeite zu wenig mit der GUI und vergesse das immer...

        Du legst bei Während eine Gruppe an. Da wo sonst ein Gruppenname steht, trägst Du die 60 ein. Und als Aktion kommt nur ein evaluate rein (muss man eintippen, gibt es nicht als Auswahl). Das 2 Feld bleibt leer.

        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #5
          Hi Waldemar,

          perfekt. Funktioniert genauso, wie ich das wollte. Vielen Dank, wie immer.

          Gruß
          Thomas

          Kommentar

          Lädt...
          X