Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

- √ - Weitere Attribute für Items?

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

    [Featurewunsch] - √ - Weitere Attribute für Items?

    Hallo,

    ich könnte da noch was gebrauchen:
    Wäre es möglich einem Item n Attribute mitzugeben?
    Beispiel:
    Fensterkontakt Wohnzimmer:
    würde die Attribute Alarm_intern und Alarm_extern bekommen.

    So könnte ich in meiner Logik einfach berücksichtigen ob dieses Objekt für den jeweiligen Alarmtyp relevant ist.

    Umsetzung:
    Durch die mögliche Verschachtelung in den Items könnte dies wie folgt abgebildet werden.
    items.conf
    Code:
    [fk]
        [[wohnzimmer]]
            type       = bool
            knx_dpt    = 1
            knx_listen = 1/1/1
            knx_init   = 1/1/1
            [[[intern]]]
            [[[extern]]]
    Damit ich die diese Attritbute nun noch auf einfach auf Existens abprüfen kann müsste ich smarthome.py um folgende Zeilen erweitern:
    Code:
        def item_exisits(self, string):
            if string in self.__items:
                return True
            else:
                return False
    Marcus, was hältst du von dieser Idee?

    Bin auch gerne für Alternativen offen

    LG

    Mode

    PS: Sieh an, ein Item von mir ohne enforce

    #2
    Hi,

    wir müssen an der Kommunikation arbeiten. Irgendwie sehe ich nicht was Du möchtest.

    Um die Existens eines Items zu prüfen kannst Du
    Code:
    if sh.return_item('foo.bar') is None:
      print 'existiert nicht'
    ausführen.

    Ein Attribut ist in Deinem Beispiel knx_dpt.

    EDIT: Und Du kannst beliebigen Attribute angeben.

    Ich habe eine Methode für meine Plugins eingeführt: find_children(parent, conf) mit der man nach Attributen von Kinder-Items suchen kann.

    Code:
    for child in sh.find_children(sh.mein.item, 'knx_dpt'):
        print child.id()
    Die ist noch nicht offizielle released und evtl. bennene ich sie noch vor dem nächsten Release um.

    Bis bald

    Marcus

    Kommentar


      #3
      Hi,

      wie komme ich denn zB an den Wert von knx_dpt eines Items?
      Das ist eingentlich das einzige was ich wissen wollte.

      EDIT:
      Code:
      sh.fk.wc.conf['extern'])

      did the Job!

      Mir war einfach nicht bewusst dass alle weiteren Attribute im array .conf[] zu finden sind. Hab ich in der items.py gefunden.
      Damit wäre das Thema auch erledigt :-)



      VG

      Mode

      Kommentar


        #4
        Arg, dieses Python treibt mich in den Wahnsinn. Ich erkenne nie welcher Datentyp jetzt in einer Variable ist.
        Kann man das irgendwie komfortabel debuggen?

        Mit
        Code:
        for alarm_items in sh.find_items('alarm_ext'):
        findet er mir nun alle Items die das Attribut alarm_ext besitzen.
        Was ist in alarm_items drin? Nur ein String? Bräuchte ich nicht eher ein Objekt um auf den Wert des Attributs zuzugreifen?
        Wie kann ich jetzt am einfachsten abfragen welcher Wert alarm_ext zugewiesen ist?

        EDIT:
        Lösung, so gehts:
        Code:
        # Alle Objekte, die Alarm_ext als Attribut mit Wert 1 haben
            for alarm_ext in sh.find_items('alarm_ext'):
                if alarm_ext.conf['alarm_ext'] == '1':
                    wert = alarm_ext()
        Eigentlich ganz einfach :-)



        VG
        Mode

        Kommentar

        Lädt...
        X