Ankündigung

Einklappen
Keine Ankündigung bisher.

Platzhalter in Items

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

    Platzhalter in Items

    Laut Dokumentation kann ich im Itemtree auch auf Elemente zugreifen, indem ich das "*" verwende. Das mache ich auch, bekomme aber eine Fehlermeldung im Log, dass die beidem Items nicht gefunden wurden. Was mache ich falsch?

    Code:
               ...
               on_update:
                    - EG.*.Heizung.modus = 2 if value else 1
                    - OG.*.Heizung.modus = 2 if value else 1

    #2
    Poste bitte alle relevanten items und den log eintrag

    Kommentar


      #3
      Das ist aber viel. :-)

      Der Log-Eintrag:

      Code:
      2019-07-16  11:43:16 ERROR    lib.item           - : 'on_update' has not found dest_item EG.*.Heizung.modus = 2 if value else 1, result=2
      2019-07-16  11:43:16 ERROR    lib.item           - : 'on_update' has not found dest_item OG.*.Heizung.modus = 2 if value else 1, result=2
      2019-07-16  11:43:16 ERROR    lib.item           - : 'on_update' has not found dest_item EG.*.Heizung.modus = 2 if value else 1, result=2
      2019-07-16  11:43:16 ERROR    lib.item           - : 'on_update' has not found dest_item OG.*.Heizung.modus = 2 if value else 1, result=2
      2019-07-16  11:43:16 ERROR    lib.item           - : 'on_update' has not found dest_item EG.*.Heizung.modus = 2 if value else 1, result=2
      2019-07-16  11:43:16 ERROR    lib.item           - : 'on_update' has not found dest_item OG.*.Heizung.modus = 2 if value else 1, result=2
      2019-07-16  11:43:19 ERROR    lib.item           - : 'on_update' has not found dest_item EG.*.Heizung.modus = 2 if value else 1, result=2
      2019-07-16  11:43:19 ERROR    lib.item           - : 'on_update' has not found dest_item OG.*.Heizung.modus = 2 if value else 1, result=2
      2019-07-16  11:43:19 ERROR    lib.item           - : 'on_update' has not found dest_item EG.*.Heizung.modus = 2 if value else 1, result=2
      2019-07-16  11:43:19 ERROR    lib.item           - : 'on_update' has not found dest_item OG.*.Heizung.modus = 2 if value else 1, result=2
      Hier die gesamte Datei mit dem Items:

      Code:
      EG:
          Diele:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/0
                      visu_acl: rw
                      sqlite: yes
                      cache: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/0
                      visu_acl: rw
                      sqlite: yes
                      cache: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/0
                      knx_listen: 3/2/0
                      knx_init: 3/2/0
                      visu_acl: rw
                      cache: yes
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/0
                      visu_acl: rw
                      cache: yes
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/0
                      knx_cache: 3/4/0
                      visu_acl: rw
                      cache: yes
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: ..stellwert
      
          HWR:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/1
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                  sollwertverschiebung:
                      type: num
                  stellwert:
                      type: num
                  modus:
                      type: num
                  heizen:
                      type: bool
                      initial_value: False
      
          WC:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/2
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/2
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/2
                      knx_listen: 3/2/2
                      knx_init: 3/2/2
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/2
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/2
                      knx_cache: 3/4/2
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: EG.WC.Heizung.stellwert
      
          Buero:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/3
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/3
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/3
                      knx_listen: 3/2/3
                      knx_init: 3/2/3
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/3
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/3
                      knx_cache: 3/4/3
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: EG.Buero.Heizung.stellwert
      
          Wohnen:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/4
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/4
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/4
                      knx_listen: 3/2/4
                      knx_init: 3/2/4
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/4
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/4
                      knx_cache: 3/4/4
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: EG.Wohnen.Heizung.stellwert
      
          Essen:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/5
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/5
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/5
                      knx_listen: 3/2/5
                      knx_init: 3/2/5
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/5
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/5
                      knx_cache: 3/4/5
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: EG.Essen.Heizung.stellwert
      
          Kueche:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/6
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/6
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/6
                      knx_listen: 3/2/6
                      knx_init: 3/2/6
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/6
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/6
                      knx_cache: 3/4/6
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: EG.Kueche.Heizung.stellwert
               
      OG:
          Diele:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/7
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/7
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/7
                      knx_listen: 3/2/7
                      knx_init: 3/2/7
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/7
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/7
                      knx_cache: 3/4/7
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: OG.Diele.Heizung.stellwert
      
          Bad:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/8
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/8
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/8
                      knx_listen: 3/2/8
                      knx_init: 3/2/8
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/8
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/8
                      knx_cache: 3/4/8
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: OG.Bad.Heizung.stellwert
      
          Ankleide:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/9
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/9
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/9
                      knx_listen: 3/2/9
                      knx_init: 3/2/9
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/9
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/9
                      knx_cache: 3/4/9
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: OG.Ankleide.Heizung.stellwert
      
          Schlafen:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/10
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/10
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/10
                      knx_listen: 3/2/10
                      knx_init: 3/2/10
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/10
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/10
                      knx_cache: 3/4/10
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: OG.Schlafen.Heizung.stellwert
      
          Kind:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/11
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/11
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/11
                      knx_listen: 3/2/11
                      knx_init: 3/2/11
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/11
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/11
                      knx_cache: 3/4/11
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: OG.Kind.Heizung.stellwert
      
          Gast:
              Heizung:
                  ist:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/0/12
                      visu_acl: rw
                      sqlite: yes
                  soll:
                      type: num
                      knx_dpt: 9
                      knx_cache: 3/1/12
                      visu_acl: rw
                      sqlite: yes
                  sollwertverschiebung:
                      type: num
                      knx_dpt: 9
                      knx_send: 3/2/12
                      knx_listen: 3/2/12
                      knx_init: 3/2/12
                      visu_acl: rw
                  stellwert:
                      type: num
                      knx_dpt: 5.001
                      knx_cache: 3/3/12
                      visu_acl: rw
                  modus:
                      type: num
                      knx_dpt: 20
                      knx_send:  3/4/12
                      knx_cache: 3/4/12
                      visu_acl: rw
                  heizen:
                      type: bool
                      eval: False if value == 0 else True
                      eval_trigger: OG.Gast.Heizung.stellwert
      
      Zentral:
          Heizung:
              Heizgrenze_7Uhr:
                  type: list
                  cache: yes
      
              Heizgrenze_14Uhr:
                  type: list
                  cache: yes
      
              Heizgrenze_22Uhr:
                  type: list
                  cache: yes
      
              Heizgrenze_Temperatur:
                  type: num
                  cache: yes
      
              Heizgrenze_Sommerbetrieb:
                  type: bool
                  initial_value: False
                  cache: yes
              
              Heizung_Modus_Sommer:
                  type: bool
                  initial_value: False
                  knx_dpt: 1
                  knx_send: 3/4/13
                  knx_reply: 3/4/13
                  enforce_updates: yes
                  eval: True if sh.Zentral.Wetter.Wetterdienst.Temperatur.morgen_max() > 19 and sh.Zentral.Wetter.Wetterdienst.Temperatur.uebermorgen_max() > 19 or sh...Heizgrenze_Sommerbetrieb() else False
                  eval_trigger:
                      - Zentral.Wetter.Wetterdienst.Temperatur.morgen_max
                      - Zentral.Wetter.Wetterdienst.Temperatur.uebermorgen_max
                      - ..Heizgrenze_Sommerbetrieb
                  on_update:
                      - EG.*.Heizung.modus = 2 if value else 1
                      - OG.*.Heizung.modus = 2 if value else 1

      Kommentar


        #4
        Auf die Schnelle glaub ich dass * bei onupdate nicht funktioniert, aber kann mich irren. Kannst du die Doku/Info verlinken?

        Kommentar


          #5
          Zitat von Onkelandy Beitrag anzeigen
          Auf die Schnelle glaub ich dass * bei onupdate nicht funktioniert, aber kann mich irren. Kannst du die Doku/Info verlinken?
          http://smarthomeng.de/dev/user/konfi...iguration.html

          Vielleicht habe ich das ja falsch verstanden?

          Ein solches Schema hat den Vorteil, dass man mit *.*.Licht.*.schalten auf alle Lampen im Haus zugreifen kann, beispielsweise um eine Logik auszulösen.

          Kommentar


            #6
            Das funktioniert nur für Logik Trigger (wie auch beschrieben). Bei on_ipdate und on_change ist soetwas nicht implementiert.

            Solche Spezialitäten wie Wildcards in Item-Pfad Namen funktionieren nur, wo sie auch explizit dokumentiert sind.
            Zuletzt geändert von Msinn; 16.07.2019, 19:51.
            Viele Grüße
            Martin

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

            Kommentar


              #7
              Zitat von Msinn Beitrag anzeigen
              Das funktioniert nur für Logik Trigger (wie auch beschrieben). Bei on_ipdate und on_change ist soetwas nicht implementiert.

              Solche Spezialitäten wie Wildcards in Item-Pfad Namen funktionieren nur, wo sie auch explizit dokumentiert sind.
              Also ich finde nicht, wo das da steht. Aber jetzt weiß ich es ja. Aber das könnte man doch künftig mit umsetzen oder?

              Kommentar


                #8
                Es gilt immer: Es funktioniert was dokumentiert ist und nicht: Es funktioniert alles, es sei denn es ist dokumentiert dass es nicht geht.

                Zur künftigen Umsetzung: Vieleicht in fernerer Zukunft, da es kein häufig genutztes Szenario ist und in der Ausführung aufwendig. Anders als beim Reagieren auf einen Trigger, müsste hierzu der Item Tree ab dem ersten '*' komplett gescannt werden, um eventuell upzudatende Items zu finden.

                Du bist auch seit es on_update und on_change gibt, der auf diese Weise mehrere Items updaten will.
                Viele Grüße
                Martin

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

                Kommentar


                  #9
                  Zitat von Msinn Beitrag anzeigen
                  Es gilt immer: Es funktioniert was dokumentiert ist und nicht: Es funktioniert alles, es sei denn es ist dokumentiert dass es nicht geht.
                  Ich verstehe, was du sagst. Für mich geht das aber aus der Dokumentation so nicht hervor. Da steht zumindest - für mein Ermessen - auch nicht, wofür das überhaupt genau genutzt werden kann. Aber ist ja jetzt auch egal.

                  Zitat von Msinn Beitrag anzeigen
                  Du bist auch seit es on_update und on_change gibt, der auf diese Weise mehrere Items updaten will.
                  Das liegt sicherlich daran, dass ich viel zu viel on_update und on_change nutze. Wahrscheinlich sollte ich mehr den trigger nutzen.

                  Dennoch wäre das mit dem * natürlich schöner als jetzt. Denn jetzt sehen meine Items zum schließen aller Rollläden im EG so aus:

                  Code:
                  EG:
                      Zentral:
                          Rollladen:
                              alexa_name: Rollläden Erdgeschoß
                              alexa_alias: Rollläden, Rollläden EG
                              alexa_device: rollladen_eg
                              alexa_description: Rollläden Erdgeschoß
                              alexa_icon: SWITCH
                              move:
                                  type: bool
                                  enforce_updates: yes
                                  visu_acl: rw
                                  alexa_device: rollladen_eg
                                  alexa_actions: TurnOn TurnOff
                                  alexa_retrievable: 'True'
                                  on_change:
                                      - ....HWR.Rollladen.move = value
                                      - ....WC.Rollladen.move = value
                                      - ....Buero.Rollladen.move = value
                                      - ....Wohnen.Rollladen.move = value
                                      - ....Essen.Rollladen.move = value
                                      - ....Kueche.Rollladen.move = value
                              pos:
                                  type: num
                                  enforce_updates: yes
                                  visu_acl: rw
                                  alexa_device: rollladen_eg
                                  alexa_actions: SetPercentage AdjustPercentage
                                  alexa_item_range: 0-255
                                  on_change:
                                      - ....HWR.Rollladen.pos = value
                                      - ....WC.Rollladen.pos = value
                                      - ....Buero.Rollladen.pos = value
                                      - ....Wohnen.Rollladen.pos = value
                                      - ....Essen.Rollladen.pos = value
                                      - ....Kueche.Rollladen.pos = value
                              stop:
                                  type: bool
                                  enforce_updates: yes
                                  visu_acl: rw
                                  on_change:
                                      - ....HWR.Rollladen.pos = value
                                      - ....WC.Rollladen.pos = value
                                      - ....Buero.Rollladen.pos = value
                                      - ....Wohnen.Rollladen.pos = value
                                      - ....Essen.Rollladen.pos = value
                                      - ....Kueche.Rollladen.pos = value

                  Kommentar


                    #10
                    Ich würde hier an der Stelle einfach eine weitere hörende Gruppenadresse für die Rolladen vergeben. Du erzeugst so einfach unnötigen KNX Telegrammballast ...

                    Kommentar


                      #11
                      Im CLI Plugin klappt das mit den wildcards super. Vielleicht könnte man das 1:1 für onupdate nutzen? Ich finde den Wunsch durchaus legitim

                      Kommentar


                        #12
                        Im CLI Plugin kann ich einer Menge von items (durch wildcards selektiert) Werte zuweisen? Das wäre mir zumindest neu.
                        Viele Grüße
                        Martin

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

                        Kommentar


                          #13
                          Das funzt sogar über Hierarchieebenen hinweg!
                          Code:
                          CLI > if *lich*.eg.*ettings*ktiv
                          Items:
                          ======
                          licht.eg.bad.wc.automatik.settings.nacht.aktiv = True
                          licht.eg.bad.wc.automatik.settings.duschen.aktiv = True
                          licht.eg.bad.wc.automatik.settings.lichtkurve.aktiv = True
                          licht.eg.bad.spots.automatik.settings.nacht.aktiv = True
                          licht.eg.bad.spots.automatik.settings.duschen.aktiv = True
                          licht.eg.bad.spots.automatik.settings.lichtkurve.aktiv = True
                          licht.eg.bad.spiegel.automatik.settings.nacht.aktiv = True
                          licht.eg.bad.spiegel.automatik.settings.duschen.aktiv = True
                          licht.eg.bad.spiegel.automatik.settings.lichtkurve.aktiv = True
                          licht.eg.gang.automatik.settings.nacht.aktiv = True
                          licht.eg.gang.automatik.settings.lichtkurve.aktiv = True
                          CLI > up *lich*.eg.*ettings*ktiv = 0
                          CLI > if *lich*.eg.*ettings*ktiv
                          Items:
                          ======
                          licht.eg.bad.wc.automatik.settings.nacht.aktiv = False
                          licht.eg.bad.wc.automatik.settings.duschen.aktiv = False
                          licht.eg.bad.wc.automatik.settings.lichtkurve.aktiv = False
                          licht.eg.bad.spots.automatik.settings.nacht.aktiv = False
                          licht.eg.bad.spots.automatik.settings.duschen.aktiv = False
                          licht.eg.bad.spots.automatik.settings.lichtkurve.aktiv = False
                          licht.eg.bad.spiegel.automatik.settings.nacht.aktiv = False
                          licht.eg.bad.spiegel.automatik.settings.duschen.aktiv = False
                          licht.eg.bad.spiegel.automatik.settings.lichtkurve.aktiv = False
                          licht.eg.gang.automatik.settings.nacht.aktiv = False
                          licht.eg.gang.automatik.settings.lichtkurve.aktiv = False
                          Die Codezeile ist verdächtig einfach, schreit fast nach einer Implementierung bei on_update/change..
                          Code:
                          items = self.sh.match_items(path)
                          Sollen wir eigentlich mal die 1.6beta testen? Die network lib ist auch im ical Plugin soweit erfolgreich implementiert.
                          Zuletzt geändert von Onkelandy; 17.07.2019, 19:25.

                          Kommentar


                            #14
                            Ok, wenn das (bei großen Item Trees) nicht zuviel Resourcen/Rechenzeit frisst, schau ich mir das im cli mal an und schaue ob man das in lib.item übernehmen kann.
                            Viele Grüße
                            Martin

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

                            Kommentar


                              #15
                              Blöde Frage, wie verwende ich die CLI?

                              P.S.: Ich freue mich natürlich, wenn die Umsetzung kommt.

                              Zitat von bmx Beitrag anzeigen
                              Ich würde hier an der Stelle einfach eine weitere hörende Gruppenadresse für die Rolladen vergeben. Du erzeugst so einfach unnötigen KNX Telegrammballast ...
                              Manchmal kommt man so simple Ideen nicht. Danke, habe ich getan.

                              Kommentar

                              Lädt...
                              X