Ankündigung

Einklappen
Keine Ankündigung bisher.

Zwei mal eval in einem Item klappen nicht

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

    Zwei mal eval in einem Item klappen nicht

    Hallo zusammen,

    versuche gerade den Wert 0/1 eines Item mit zwei Eval befehlen zu setzen. Klappt leider nicht. Es wird immer nur das erste eval ausgewertet.
    Denke man kann Eval nur einmal pro Item nutzen, oder?


    Leider kommen an der Variable MQTT.HB.set_string verschiedene Daten an, somit kann ich mit mit "else 0" Arbeiten.

    Code:
    MQTT:
        HB:
            set_string:
             type: str
             mqtt_topic_in: 'homebridge/from/set'
             cache: 'yes'
    
            Dominik_da:
             type: bool
             eval_trigger: MQTT.HB.set_string
             eval: 0 if sh.MQTT.HB.set_string() == '{"name":"Dominik_daheim","service_name":"Dominik Daheim mqtt","characteristic":"On","value":false}' else None
             eval: 1 if sh.MQTT.HB.set_string() == '{"name":"Dominik_daheim","service_name":"Dominik Daheim mqtt","characteristic":"On","value":true}' else None
             knx_dpt: 1
             knx_send: 7/0/3
             knx_reply: 7/0/3
    Wie könnte ich das sonst lösen?

    Grüße

    Dominik
    MFG
    Dominik Auhuber

    #2
    Du musst das zu einem eval Ausdruck zusammenfassen.

    Zur besseren Handhabbarkeit würde ich vorschlagen den Ausdruck der per MQTT ankommt über ein Hilfsitem zu zerlegen. Schau Dir hiezu mal diesen Blog Eintrag an.
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Bin ein wenig weiter gekommen, aber die endgültige Lösung schaff ich noch nicht.

      Hilfsitem und zerlegen klappt.

      Hab jetzt die Info "Name" als Str in einen Item (wer hat den zustand geändert)
      und die Info True / False als Bool in einem Item (ist an oder abwesend)


      Aber wie komme ich jetzt auf mein Ergebnis aus Name (zwei verschiedene) und Zustand (in Bool)
      Da steh ich grad noch auf dem Schlauch.


      Code:
      MQTT:       
              hilfsitem:
               type: dict
               mqtt_topic_in: homebridge/from/set
               cache: True
             
              Name_itm:
               type: str
               eval: sh.MQTT.hilfsitem()['name']
               eval_trigger: MQTT.hilfsitem
               
              Wert_itm1:
               type: bool
               eval: sh.MQTT.hilfsitem()['value']
               eval_trigger: MQTT.hilfsitem
      MFG
      Dominik Auhuber

      Kommentar


        #4
        Zum Beispiel in etwa so:

        Code:
        MQTT:
            HB:
                Dominik_da:
                    type: bool
                    eval: sh.MQTT.Wert_itm1() if sh.MQTT.Wert_itm() == "Dominik_daheim" else None
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Danke,

          so Funktioniert das einwandfrei


          Grüße

          Domink
          MFG
          Dominik Auhuber

          Kommentar

          Lädt...
          X