Ankündigung

Einklappen
Keine Ankündigung bisher.

Aktiv-Status einer UZSU auslesen für eval

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

    Aktiv-Status einer UZSU auslesen für eval

    Hallo,

    ich möchte in einem Item auswerten, ob verschiedene Parameter gegeben sind. Dabei soll unter anderem das Item nur schalten, wenn eine bestimmte Zeitschaltuhr aktiv ist. Wie bekomme ich diesen Wert ausgelesen?

    aktuell habe ich das, hier fehlt noch die abfrage der Zeitschaltuhr, bei der ich nicht weiter komme:

    eval: 1 if sh.Outside.front.presence.value.dark_outside() == True and sh.Outside.patio.tree_light.switch_time() == True else 0
    eval_trigger: Outside.front.presence.value
    Gruß und danke Manuel

    #2
    Die kurze Antwort:
    Code:
    sh.foo.bar.uszu().active
    Die etwas längere hängt davon ab, was du als aktiv betrachtest. Man kann ja eine ganze UZSU deaktivieren oder nur einzelne (auch alle) Zeilen davon. Oder man kann eine UZSU haben, aber keine Zeilen darin. Oder das Item mit der UZSU wird definiert, aber nie befüllt.

    Kommentar


      #3
      Hallo Stefan,

      danke für deine Hilfe. Ich meine schon die gesamte Zeitschaltuhr.
      Ich werde deinen Vorschlag mal testen.

      Danke Manuel

      Kommentar


        #4
        Hallo Stefan,

        habe es nun mal getestet. Allerdings bekomme ich diese Fehlermeldung:

        2018-06-14 14:45:25 WARNING Outside.patio.tree_light.auto_light Item Outside.patio.tree_light.auto_light: problem evaluating 1 if sh.Outside.patio.tree_light.switch_time.uzsu().act ive == True and sh.Outside.front.presence.value.dark_outside() == True and sh.Outside.patio.tree_light.switch_time() == True else 0: 'dict' object has no attribute 'active'
        Habe ich ein Übertragungsfehler gemacht?

        Gruß Manuel

        Kommentar


          #5
          Du hast wahrscheinlich keine Daten in Deiner UZSU gespeichert. Schau mal im Backend nach, was der Wert ist. Ich vermute ein {}, richtiger wäre aber ein gefülltes Dict wie `{'active': True, 'list': [{'timeCron': '07:20', 'time': '07:20', 'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR', 'timeOffset': '', 'timeOffsetType': 'm', 'event': 'time', 'timeMax': '', 'timeMin': '', 'value': '1'}, {'timeCron': '9:00', 'time': '9:00', 'active': True, 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR', 'timeOffset': '', 'timeOffsetType': 'm', 'event': 'time', 'timeMax': '', 'timeMin': '', 'value': '0'}]}`

          Kommentar


            #6
            Genau, das wäre der letzte von mir genannte Fall. Diesen kannst du folgendermassen abfangen:

            Code:
            1 if sh.Outside.patio.tree_light.switch_time.uzsu() and sh.Outside.patio.tree_light.switch_time.uzsu().active == True and sh.Outside.front.presence.value.dark_outside() == True and sh.Outside.patio.tree_light.switch_time() == True else 0

            Kommentar


              #7
              Hallo,

              ich habe eure Vorschläge getestet, jedoch ohne Erfolg:

              Ich bekomme immer noch folgende Meldung:

              Code:
              2018-06-14  18:15:52 WARNING  Outside.patio.tree_light.auto_light Item Outside.patio.tree_light.auto_light: problem evaluating 1 if sh.Outside.patio.tree_light.switch_time.uzsu() and sh.Outside.patio.tree_light.switch_time.uzsu().active == True and sh.Outside.front.presence.value.dark_outside() == True and sh.Outside.patio.tree_light.switch_time() == True else 0: 'dict' object has no attribute 'active'
              Hier die config.yaml:

              Code:
              %YAML 1.1
              ---
              Outside:
                  front:
                      presence:
                          type: bool
                          visu_acl: rw
                          knx_dpt: 1
                          knx_send: 15/0/29
                          knx_init: 15/0/29
                          value:
                              type: num
                              visu_acl: rw
                              knx_dpt: 9
                              knx_init: 15/0/27
                              enforce_updates: 'true'
              
                              dark_outside:
                                type: bool
                                visu_acl: rw
                                knx_dpt: 1
                                enforce_updates: 'true'
                                eval: 1 if sh.Outside.front.presence.value() <= 10 else 0
                                eval_trigger: Outside.front.presence.value
              
                  patio:
                      tree_light:
                          type: bool
                          visu_acl: rw
                          knx_dpt: 1
                          knx_init: 15/0/33
                          knx_send: 15/0/32
                          enforce_updates: 'true'
              
                          auto_light:
                           type: bool
                           visu_acl: rw
                           knx_dpt: 1
                           knx_init: 15/0/33
                           knx_send: 15/0/32
                           enforce_updates: 'true'
                           eval: 1 if sh.Outside.patio.tree_light.switch_time.uzsu() and sh.Outside.patio.tree_light.switch_time.uzsu().active == True and sh.Outside.front.presence.value.dark_outside() == True and sh.Outside.patio.tree_light.switch_time() == True else 0
                           eval_trigger: Outside.front.presence.value
              
                          switch_time:
                              type: bool
                              visu_acl: rw
              
                              uzsu:
                                  type: dict
                                  uzsu_item: Outside.patio.tree_light.switch_time
                                  cache: 'True'
                                  visu_acl: rw
                                  enforce_updates: 'true'
              Und hier ein Auszug aus dem Backend:

              Code:
              Attribut    Wert
              Pfad    Outside.patio.tree_light.switch_time.uzsu
              Name    Outside.patio.tree_light.switch_time.uzsu
              Typ (type)    dict
              Wert (value)    
              {'list': [{'delayedExec': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'timeMin': '', 'condition': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'timeMax': '', 'time': '01:01', 'event': 'time', 'value': '0', 'holiday': {'workday': False, 'weekend': False}, 'timeOffsetType': 'm', 'timeOffset': '', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'timeCron': '01:01', 'active': True}, {'delayedExec': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'timeMin': '', 'condition': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'timeMax': '', 'time': 'sunset+45m', 'event': 'sunset', 'value': '1', 'holiday': {'workday': False, 'weekend': False}, 'timeOffsetType': 'm', 'timeOffset': '45', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'timeCron': 'sunset', 'active': True}, {'delayedExec': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'condition': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'timeMin': '', 'timeCron': '18:13', 'time': '18:13', 'event': 'time', 'value': '1', 'holiday': {'workday': False, 'weekend': False}, 'timeOffsetType': 'm', 'timeOffset': '', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'timeMax': '', 'active': True}], 'active': True}
              Änderungsinformationen:
              Letztes Update    2018-06-14 18:12:48.673404+02:00
              Letzte Änderung    2018-06-14 18:12:48.672609+02:00
              Alter (Update)    6 Minuten, 56.63 Sekunden
              Alter (Änderung)    6 Minuten, 56.63 Sekunden
              Update durch    Visu:192.168.8.62:65033
              Geändert durch    Visu:192.168.8.62:65033
              vorheriger Wert    {'list': [{'delayedExec': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'condition': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'timeMax': '', 'timeCron': '01:01', 'holiday': {'workday': False, 'weekend': False}, 'event': 'time', 'value': '0', 'time': '01:01', 'timeOffsetType': 'm', 'timeOffset': '', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'timeMin': '', 'active': True}, {'delayedExec': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'condition': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'timeMax': '', 'timeCron': 'sunset', 'holiday': {'workday': False, 'weekend': False}, 'event': 'sunset', 'value': '1', 'time': 'sunset+45m', 'timeOffsetType': 'm', 'timeOffset': '45', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'timeMin': '', 'active': True}, {'delayedExec': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'condition': {'deviceString': '', 'active': False, 'value': '', 'type': 'String'}, 'timeMin': '', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'holiday': {'workday': False, 'weekend': False}, 'timeMax': '', 'event': 'time', 'value': '1', 'time': '18:09', 'timeOffsetType': 'm', 'timeOffset': '', 'active': True, 'timeCron': '18:09'}], 'active': True}
              vorheriges Update    2018-06-14 18:08:22.206456+02:00
              vorherige Änderung    2018-06-14 18:08:22.206456+02:00
              vorh. Alter (Update)    4 Minuten, 26.47 Sekunden
              vorh. Alter (Änderung)    4 Minuten, 26.47 Sekunden
              Initialisierungs-, Evaluations- und Trigger-Konfiguration:
              cache    on
              enforce_updates    on
              eval    -
              eval_trigger    -
              on_update    -
              on_change    -
              cycle    -
              crontab    -
              autotimer    -
              threshold    -
              Plugin spezifische Konfigurationen:
              uzsu_item    Outside.patio.tree_light.switch_time
              visu_acl    rw
              Verbundene Trigger:
              bound method WebSocket.update_item of plugins.visu_websocket.WebSo
              bound method UZSU.update_item of plugins.uzsu.
              definiert in    outside.yaml
              Gruß und danke

              Manuel

              Kommentar


                #8
                Entschuldige, ich lag falsch. Es soll heissen:
                Code:
                sh.foo.bar.uszu().get('active')
                Python unterscheidet ja zwischen einem dict und einem Objekt.

                Wenn du get() nutzt, kannst du dir auch den ersten Teil sparen. get() gibt None zurück, wenn der Schlüssel nicht existiert und None == True wird nicht erfüllt.

                Kommentar

                Lädt...
                X