Ankündigung

Einklappen
Keine Ankündigung bisher.

Umstellung conf -> yaml

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

    Umstellung conf -> yaml

    Guten Abend zusammen,

    bin gerade am Umstellen von Smarthome.py auf SmarthomeNG, und habe dabei auch die conf-Dateien auf yaml konvertiert.

    Leider klappt bei mir der eval_trigger für den Status der Beleuchtung im Haus momentan nicht.

    Alte conf unter Smarthome.py
    Code:
    [[[status_zentral]]]
       type = bool
       knx_dpt = 1
       knx_send = 0/6/11
       knx_reply = 0/6/11
       eval = or
       eval_trigger = *:zentral_licht    # TRUE wenn eine Leuchte an ist
    
    ...
    
    [[[deckenleuchte]]]
       name = Deckenleuchte
       visu_acl = rw
       sv_widget = {{ basic.switch('item', 'item') }}    
       type = bool
       knx_dpt = 1
       knx_send = 1/3/11
       knx_listen = 1/3/11
       knx_init = 1/3/11
       zentral_licht = 1 # Überwachung Status und Zentral aus
    Neue yaml unter SmarthomeNG
    Code:
    status_zentral:
        type: bool
        knx_dpt: 1
        knx_send: 0/6/11
        knx_reply: 0/6/11
        eval: or
        eval_trigger: '*.zentral_licht'
    
    ...
    
    deckenleuchte:
        name: Deckenleuchte
        visu_acl: rw
        sv_widget: "{{ basic.switch('item', 'item') }}"
        type: bool
        knx_dpt: 1
        knx_send: 1/3/11
        knx_listen: 1/3/11
        knx_init: 1/3/11
        zentral_licht: 1    # Überwachung Status und Zentral aus
    Egal ob der eval_trigger: '*.zentral_licht' oder '*:zentral_licht' heißt, springt er bei SmarthomeNG nicht an. Wie kann man das denn lösen?

    Danke für die Schützenhilfe!


    #2
    Ich verstehe nicht ganz was Du mit dem speziellen zusätzlichen Attribut
    zentral_licht des Items deckenleuchte tun willst und wie sich das Attribut verändern soll.
    Der prinzipielle Unterschied zwischen
    Zitat von Acidrain Beitrag anzeigen
    '*.zentral_licht' oder '*:zentral_licht'
    ist Dir aber schon bekannt, oder? (Ich frage, weil Du initial
    Code:
    eval_trigger = *:zentral_licht
    in
    Code:
    eval_trigger: '*.zentral_licht'
    übersetzt hast.
    Viele Grüße
    Martin

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

    Kommentar


      #3
      Hallo Msinn,

      zentral_licht ist einfach nur ein "Marker" für alle Items, die überwacht werden sollen. Sprich, ist ein Licht das mit zentral_licht "markiert" ist, angeschaltet, wird der status_zentral gesetzt. Und an der Haustür habe ich einen Tastsensor mit LED, wo ich sehen kann ob irgendwo im Haus noch ein Licht an ist und kann das per Zentral-Aus-Logik ausschalten.

      Mit smarthome.py und .conf Datei funktioniert das seit 3 Jahren - nur jetzt mit smarthomeNG leider nicht. Die Frage ist, was ich falsch mache. Funktionieren die Wildcards (insbesodere bei Attributen eines Items) nicht mehr so wie früher oder habe ich was falsch angegeben? Der Unterschied zwischen *:zentral_licht *.zentral_licht ist mir klar.

      Hier noch ein paar mehr Details:

      items.conf
      Code:
      [zentral]
          name = Zentral- und Überwachungsfunktionen
          sv_page = room
          sv_img = control_building_control.svg
          [[beleuchtung]] 
              name = Status Beleuchtung
              visu_acl = rw
              sv_widget = {{ basic.symbol('item', 'item.status_zentral', '', icon1~'light_light.png') }} {{ basic.symbol('item2', 'item.status_zentral', '', icon0~'light_light.png', 0) }} <br/> {{ basic.button('item3', 'item.zentral_aus', 'Zentral Aus', '', 0) }}
              [MARKIEREN][[[status_zentral]]][/MARKIEREN]
                  type = bool
                  knx_dpt = 1
                  knx_send = 0/6/11
                  knx_reply = 0/6/11
                  eval = or
                  eval_trigger = *:zentral_licht    # TRUE wenn eine Leuchte an ist
              [MARKIEREN][[[zentral_aus]]] # Triggert licht_zentral_aus.py[/MARKIEREN]
                  name = Zentral Aus
                  visu_acl = rw
                  type = bool
                  enforce_updates = true
                  knx_dpt = 1
                  knx_listen = 0/6/10
      
      ...
      
      [eg]
          [[eg_sep]]
              name = Erdgeschoss
              sv_page = seperator
          [[flur]]
              name = Flur
              sv_page = room    
              sv_img = scene_corridor.svg
              sv_nav_aside = {{ basic.float('item', 'item.rtr.ist', '°C') }} <br/> {{ basic.symbol('item2', 'item.deckenleuchte_pm', '', icon1~'light_light.png') }}
      [MARKIEREN]        [[[deckenleuchte_pm]]] #<== die Leuchte wird bspw. nicht über zentral_licht überwacht[/MARKIEREN]
                  name = Deckenleuchte Präsenzmelder
                  visu_acl = rw
                  sv_widget = {{ basic.symbol('item', 'item', '', icon1~'light_light.png') }} {{ basic.symbol('item2', 'item', '', icon0~'light_light.png', 0) }}
                  type = bool
                  knx_dpt = 1
                  knx_send = 1/1/11
                  knx_listen = 1/1/11
                  knx_init = 1/1/11
              [[[praesenzmelder]]]
                  name = Präsenzmelder Flur EG
                  visu_acl = rw
                  type = bool
                  knx_dpt = 1
                  knx_send = 7/1/11
                  knx_listen = 1/1/11
                  knx_init = 7/1/11    
                  knx_cache = 7/1/11
      
      ...
      
          [[gaestebad]]
              name = Gästebad
              sv_page = room    
              sv_img = scene_toilet_alternat.svg
              sv_nav_aside = {{ basic.float('item', 'item.rtr.ist', '°C') }} <br/> {{ basic.symbol('item2', 'item.deckenleuchte', '', icon1~'light_light.png') }}
              [[[deckenleuchte]]]
                  name = Deckenleuchte
                  visu_acl = rw
                  sv_widget = {{ basic.switch('item', 'item') }}
                  type = bool
                  knx_dpt = 1
                  knx_send = 1/1/21
                  knx_listen = 1/1/21
                  knx_init = 1/1/21
                  # crontab = 17 19 * * = 1 | 58 21 * * = 0    # Temporär als Zeitschaltuhr (Anwesenheitssimulation)
                  crontab_abs = 37 19 * * = 1 | 58 21 * * = 0    # Abwesenheitsmodus
      [MARKIEREN]            zentral_licht = 1 # Überwachung Status und Zentral aus[/MARKIEREN]
      
      ...
      
          [[arbeit]]
              name = Arbeitszimmer EG
              sv_page = room    
              sv_img = scene_office.svg
              sv_nav_aside = {{ basic.float('item', 'item.rtr.ist', '°C') }} <br/> {{ basic.symbol('item2', 'item.deckenleuchte', '', icon1~'light_light.png') }}
              [[[deckenleuchte]]]
                  name = Deckenleuchte
                  visu_acl = rw
                  sv_widget = {{ basic.switch('item', 'item') }}
                  type = bool
                  knx_dpt = 1
                  knx_send = 1/1/31
                  knx_listen = 1/1/31
                  knx_init = 1/1/31
      [MARKIEREN]            zentral_licht = 1 # Überwachung Status und Zentral aus[/MARKIEREN]
      licht_zentral_aus.py
      Code:
      #!/usr/bin/env python
      
      # Beleuchtung Zentral-Aus
      for item in sh.find_items('zentral_licht'):            # Für alle Items mit Attribut zentral_licht
          if item():                                        # Wenn gefunden: ausschalten
              item(0)
      Hoffe es ist nun verständlicher. Wie gesagt, unter smarthome.py (letztes Release) funktioniert es, unter smarthomeNG 1.4 leider nicht...

      Kommentar


        #4
        An der Funktionsweise die Du nutzt sollte sich seit smarthome.py v1.0 nichts geändert haben.

        Was mit auffällt ist, dass Du den Eval-Trigger ohne Quotes geschrieben hast:

        Code:
         
         eval_trigger = *:zentral_licht
        Da ein Doppelpunkt in YAML eine besondere Bedeutung hat, kann das beim Einlesen der YAML Datei zu Fehlinterpretationen oder gat zu Fehlern (im Log) führen.

        Schreib den Trigger mal in Quotes:

        Code:
         
         eval_trigger = '*:zentral_licht'
        Viele Grüße
        Martin

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

        Kommentar


          #5
          Was macht der Doppelpunkt?

          Kommentar


            #6
            Der macht ein Match gegen ein (angegebenes) Attribut des Items statt gegen den Wert des Items.

            Denn: Es gibt in diesem Szenario kein Items mit dem Namen zentral_licht
            Viele Grüße
            Martin

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

            Kommentar


              #7
              Ah, das kannte ich noch nicht. Danke!

              Kommentar


                #8
                Zitat von Msinn Beitrag anzeigen
                Da ein Doppelpunkt in YAML eine besondere Bedeutung hat, kann das beim Einlesen der YAML Datei zu Fehlinterpretationen oder gat zu Fehlern (im Log) führen.

                Schreib den Trigger mal in Quotes:
                Hatte ich eigentlich in der neuen yaml gemacht. Habe aber sicherheitshalber nochmal die alte conf konvertiert und die konvertierte yaml nachgeprüft, jetzt geht's.
                Keine Ahnung wo ich mich da wohl vertippt hatte...

                Never mind! Vielen Dank trotzdem für die Hilfe.

                Kommentar


                  #9
                  Um zu sehen ob der Trigger richtig eingelesen wurde, kannst Du auch im backend Plugin in den Daten des Items nachsehen.
                  Viele Grüße
                  Martin

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

                  Kommentar


                    #10
                    Danke für den Tipp!
                    Bzgl. der Wildcard-Nutzung könntet ihr das auch ins SmarthomeNG Wiki aufnehmen, das ist sicher hilfreich für viele - und sich solche Infos aus dem Forum zu ziehen ist u.U. schwierig wenn man gar nicht weiß was alles geht oder wonach man suchen muss.

                    Stelle bei Interesse auch gerne mein Zentral-Licht Beispiel zur Verfügung. Kann dir die neuen yaml heute abend hier reinstellen.

                    Viele Grüße
                    Dominik

                    Kommentar

                    Lädt...
                    X