Ankündigung

Einklappen
Keine Ankündigung bisher.

Im Zustandsautomat auf Attribute des ausgewählten Items zugreifen

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

    [callidomus] Im Zustandsautomat auf Attribute des ausgewählten Items zugreifen

    Hallo (Waldemar und Marcus),

    nach der gestrigen inspirierenden Vorstellung des Zustandsautomaten habe ich heute versucht, meine Alarmanlage komplett in mehrere Zustandsautomaten zu gießen. Das ist mir bisher auch ganz gut gelungen.

    Ich habe eine SM die ich an jedes Fenster (bzw. ein Alarm-Item unterhalb jedes Fensters) gebunden habe, welches ein Attribut "window" hat:
    Code:
    Item Selektor: *.alarm:window
    Abhängig ist die SM von einem Status (auf/zu = bool):
    Code:
    Abhängigkeiten: *.windowstate:window
    Das klappt auch alles einwandfrei.

    Jetzt habe ich aber eine Frage. Wie kann ich in einem Zustand auf Attribute des Items an den die SM gebunden ist zugreifen? Wie ist die Python-Notation dafür?

    Hintergrund: Da jeweils eine Instanz der SM ja nun jeweils an die einzelnen Fenstern gebunden ist (im Gegensatz zu meiner Logik), könnte ich doch jetzt auch den Namen des Fensters per SMS oder Pushbullet senden (z.B."Das Fenster Arbeitszimmer Thomas wurde geöffnet"). Den Namen des Fensters würde ich dann individuell als Attribut zum Item anlegen.

    Ich hoffe, ihr versteht, was ich meine.


    Gruß
    Thomas

    #2
    Hi Thomas,

    Du solltest in einer action sagen können
    Code:
    Zielitem(:Attributname)
    Habe ich witzigerweise so noch nie verwendet, immer nur in conditions, da geht es auf jeden Fall... Versuch es einfach, und falls es nicht geht, schauen wir nochmal. Ich darf erst morgen wieder an callidomus ran...

    Gruß, Waldemar

    OpenKNX www.openknx.de

    Kommentar


      #3
      Hi Waldemar,

      ich kenne das Zielitem ja nicht. Es ist ja das jeweilige Item an die SM gebunden ist.

      Gruß
      Thomas

      Kommentar


        #4
        Hallo Thomas,

        Du meinst in einem Codeblock?

        Bis bald

        Marcus

        Kommentar


          #5
          Ja, genau.

          Kommentar


            #6
            Hi Thomas,

            wir reden hier aneinander vorbei. Ich meinte mit Zielitem das Item, dass den Wert des Attributs bekommen soll. Aus meiner Sicht wäre das das Item, dass die Sendelogik triggert.

            Um es konkret zu machen, schreib doch mal, wie Du es für ein festes State-Item, also für genau eine Instanz der SM machen würdest. Und dann schreibst Du noch den Pfad des State-Items. Dann mach ich einen Vorschlag, wie man es dynamisieren kann. Und falls ich es nicht weiß, fragen wir Marcus...

            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #7
              Hallo,

              wenn ich Thomas richtig verstanden habe, so möchte er in etwa so etwas schreiben:
              Code:
              cd.sendmail("Achtung! Der Rollanden an Fenster {} klemmt".format(.attr['MeinAttribut']))
              Wobei MeinAttribut bei dem SM Item definiert ist.

              Das funktioniert momentan nicht.

              Bis bald

              Marcus

              Kommentar


                #8
                Hi Marcus,

                das funktioniert nicht, was aber funktionieren sollte:
                • Ein Item "Zimmermail" vom typ Zeichenkette
                • im codeblock des Items: cd.sendmail("Achtung! Der Rolladen an Fenster {} unvorhergesehen geöffnet!".format(value))
                • Als action in der SM: Zimmermail(:Fenstername), wobei Fenstername das Attribut an dem State-Item der SM ist.
                Ich habe das nicht ausprobiert, aber in conditions klappt ja die Doppelpunkt-Notation für Attribute

                Für Thomas Stereofeld : Falls das obige nicht klappt, hier ein Workaround, der klappt:
                • Statt einem Attribut machst Du ein Item "Fenstername". typ Zeichenkette, Initialwert "Arbeitszimmer" (quasi ein konstantes Item)
                • Dieses Item ist direktes Kind des SM-Items
                • Als action in der SM: Zimmermail(.Fenstername)
                Das habe ich schon probiert und das funktioniert.

                Gruß, Waldemar
                Zuletzt geändert von mumpf; 23.01.2017, 10:36. Grund: Tippfehler korrigiert
                OpenKNX www.openknx.de

                Kommentar


                  #9
                  Zitat von callidomus Beitrag anzeigen
                  wenn ich Thomas richtig verstanden habe, so möchte er in etwa so etwas schreiben [...]
                  So hatte ich mir das gedacht.

                  Kommentar


                    #10
                    Zitat von mumpf Beitrag anzeigen
                    [...] Falls das obige nicht klappt, hier ein Workaround, der klappt [...]
                    Danke, Waldemar! Probiere ich heute gleich mal aus.

                    Gruß
                    Thomas

                    P.S.: Meine Alarmanlage läuft jetzt komplett auf SM. Die Logikfiles habe ich schon gelöscht. ;-)

                    Kommentar


                      #11
                      Hi Thomas,

                      hat mein Vorschlag jetzt geklappt bzw. welcher tut denn?

                      Gruß, Waldemar
                      OpenKNX www.openknx.de

                      Kommentar


                        #12
                        Zitat von mumpf Beitrag anzeigen
                        Hi Thomas,

                        hat mein Vorschlag jetzt geklappt bzw. welcher tut denn?

                        Gruß, Waldemar
                        Hi Waldemar,

                        ich bin noch nicht zum ausprobieren gekommen. Kämpfe gerade noch mit einem anderen Problem bei dem SM ... *grummel*

                        Ich melde mich, wenn ich weiter bin oder nicht mehr weiter komme.

                        Gruß
                        Thomas

                        Kommentar

                        Lädt...
                        X