Ankündigung

Einklappen
Keine Ankündigung bisher.

UZSU-Eigenschaften in Szene oder Logik ändern

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

    UZSU-Eigenschaften in Szene oder Logik ändern

    Hallo zusammen,

    in einem Rutsch möchte ich einen Satz von Zeitschaltuhren aktivieren oder deaktivieren. Idealerweise ließe sich das in einer Szene realisieren... In meinen ersten Versuchen, auf die Properties der UZSU in der Szene zuzugreifen, sind aber bisher gescheitert, d.h. eine Syntax wie folgt und einige versuchte Abwandlungen funktionieren in der Szene leider nicht:

    Code:
    0 testdevices.funktion3 0
    0 testdevices.funktion3.uzsu['active'] false
    1 testdevices.funktion3 1
    1 testdevices.funktion3.uzsu['active'] true
    Ist es prinzipiell überhaupt möglich, ein Item mit dict-Datentyp (sprich: die UZSU) in einer Szene gezielt zu ändern?

    Oder muss mir dafür eine Logik basteln?

    Oder gibt es eine andere geschickte Lösung für mein Problem?

    Danke und Gruß
    Michael

    #2
    Soweit ich mich erinnern kann hatten wir das Thema schon im UZSU-Thread.... Ob eine UZSU an oder aus ist steht im DICT des UZSU-Items, sprich Du mußt es IMHO erst mal aus jedem Item extrahieren und dann wieder geändert zurückschreiben. Dadurch wird m.E. die Szene wohl entfallen und eine Logik unausweichlich.

    Kommentar


      #3
      Hallo Michael,

      Du muß das dict komplett setzen. Nur Teile davon zu ändern geht nicht. Aus:
      Code:
      0 testdevices.funktion3.uzsu['active'] false
      muß dann
      Code:
      0 testdevices.funktion3.uzsu[dict{active: 'false', list: 'testdevices.funktion3.uzsu['list'] }]
      werden. Bitte mal aber genau den Syntax aus der Beschreibung des Plugins bzw. python ansehen.

      Michel

      Kommentar


        #4
        Hallo zusammen,

        danke für Euren Input. Hat etwas gedauert bei mir, da ich mich entschlossen habe, die ganzen Spielereien von meinem Produktivsystem auf einen neuen Bastel-Pi umzuziehen. Folgende neue Erkenntnisse gibt es nach weiterem Probieren:

        Das Setzen eines Items mit dict-Typ in einer Szene scheint aktuell leider nicht möglich zu sein. Die von Michel vorgeschlagene Syntax hat leider (auch in diversen Abwandlungen) nicht funktioniert. Letztendlich bin ich auf folgende Probleme gestoßen:

        Erstens trennt der CSV-Parser in scene.py den Befehl beim Leerzeichen auf. Das wäre nicht kritisch, man müsste dict einfach zusammen schreiben:
        Code:
        1 testdevices.funktion3.uzsu {'active':True,'list':[]}
        Zweitens wird als Wert beim Update in der Item-Klasse wird ein String übergeben. In der _cast_dict - Methode ist keine Konvertierung von String auf dict implementiert, sodass der Update dann wegen falschen Typs fehlschlägt.
        Drittens habe ich dann immer noch das Problem, dass ich das komplette dict übergeben muss, aber die Schaltzeiten nicht ändern möchte. Zusätzlich zum Einbau des casts von String auf dict in der Item-Klasse müsste noch den dynamischen Zugriff auf das in der Szene angegebene list-Item einbauen.

        Diese Modifikationen an den zentralen Stellen möchte ich lieber nicht machen. Deswegen werde ich jetzt auf eine Logik ausweichen.

        Besten Gruß
        Michael

        Kommentar

        Lädt...
        X