Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Wert des übergeordneten Elementes abfragen

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

    - √ - Wert des übergeordneten Elementes abfragen

    Moin,
    in meiner ersten Logik möchte ich wissen ob
    1. Lichter an sind
    2. Wie viele Lichter an sind
    3. Die Namen der Items haben

    Hier zu habe ich die folgende conf
    Code:
    # /usr/local/smarthome/items/Zentral.conf
    [zentral]
        name = Zentral
        [[zaehler]]
            name = Zähler
            sv_page = room
            [[[licht]]]
                name = Licht an
                type = bool
                visu = yes
                [[[[anzahl]]]]
                    name = Anzahl eingeschalteter Lichter
                    type = num
                    visu = yes
                [[[[namen]]]]
                    name = Eingeschaltete Lichter
                    type = str
                    visu = yes
    Und Logik
    Code:
    #!/usr/bin/env python
    
    counter = []
    
    # finde alle Lichter, die eingeschaltet sind (und nicht auf taster oder level enden)
    for item in sh.match_items('*.licht.*'):
        if item() and not item.id().endswith('taster') and not item.id().endswith('level') and not item.id().startswith('zentral'):
            counter.append(item)
    
    # ermittle licht bool wert
    if len(counter) > 0:
        sh.zentral.zaehler.licht(1)
    else:
        sh.zentral.zaehler.licht(0)
    
    # setze licht bool wert
    sh.zentral.zaehler.licht.anzahl(len(counter))
        
    # ermittle Namen der Lichter, die eingeschaltet sind
    namen = ""
    for item in counter:
        parent_item = item.return_parent()
        if (parent_item != None):
    xyz        namen += "' {0} {1}'".format(str(parent_item()), str(item))
        
    # setze Namen der eingeschalteten Lichter
    sh.zentral.zaehler.licht.namen(namen)
            
    # Logging
    logger.info("Es sind {0} Lichter an. ( {1})".format(str(sh.zentral.zaehler.licht.anzahl()), sh.zentral.zaehler.licht.namen()))
    Das Ergebnis im Log sieht so aus
    Code:
    2014-02-08 14:43:19 INFO     Licht        Es sind 1 Lichter an. ( ' None Licht Spiegel')
    2014-02-08 14:43:23 INFO     Licht        Es sind 0 Lichter an. ( )
    Das eingeschaltete Licht ist so definiert
    Code:
    ...[[badezimmer]]
            name = Badezimmer
            sv_page = room
            sv_img = scene_bathroom.svg
            [[[licht]]]
                name = Badezimmer
                [[[[spiegel]]]]
                    name = Licht Spiegel
                    type = bool
                    knx_dpt = 1
                    knx_send = 2/0/8
                    knx_init = 2/4/8
                    sv_img = light_mirror.svg.svg
    Jetzt kommt die Frage :-)
    Wie kann ich in der Zeile xyz (habe das davor geschrieben) den Namen des parent Elementes bekommen? Dann hätte ich "Badezimmer Licht Spiegel" anstelle nur des Names des Lichtes.

    Danke und Gruß
    René

    #2
    Erledigt :-)
    Code:
    # ermittle Namen der Lichter, die eingeschaltet sind
    namen = ""
    for item in counter:
        parent_item = item.return_parent()
        namen += "' {0} {1}'".format(str(parent_item), str(item))
    So bekomme ich den Wert des Namen Attributes des übergeordneten Elementes.

    Kommentar


      #3
      Das Beispiel habe ich im smartHome Wiki angelegt: https://github.com/mknx/smarthome/wi...ken-und-Howtos

      Kommentar

      Lädt...
      X