Ankündigung

Einklappen
Keine Ankündigung bisher.

Werte vieler Item in formatierte Liste überführen

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

    Werte vieler Item in formatierte Liste überführen

    Hallo,

    Die Schaltzeiten der Viessmann-Heizung werden durch mein Plugin in eine Liste überführt und einem Item mit dem type list zugewiesen. Diese Liste sieht so aus:
    Code:
    [{'An': '04:10', 'Aus': '05:00'}, {'An': '--:--', 'Aus': '--:--'}, {'An': '--:--', 'Aus': '--:--'}, {'An': '--:--', 'Aus': '--:--'}]
    Über ein struct wird die Liste zerlegt und 8 einzelnen Items für An1, Aus1, An2, Aus2.... zugeteilt. Dazu nutze ich eval.
    Code:
    item_structs:
      timer:
        name: Schaltzeiten auslösen
    
        an1:
          name: erste Anschaltzeit
          type: str
          eval: sh...()[0]['An']
          eval_trigger: ..
    Diese 8 Items möchte ich über die Visu ändern können.

    Nun möchte ich (über eine Logik) bei Änderung eines dieser 8 Einzelwerte die Liste entsprechend wieder zusammensetzen und dann via dem Plugin, wieder in die Heizung schreibt.

    Welcher Ansatz wäre hier geeignet?

    könnte das ggf. mit on_update gehen:
    Code:
    item_structs:
      timer:
        name: Schaltzeiten auslösen
    
        an1:
          name: erste Anschaltzeit
          type: str
          eval: sh...()[0]['An']
          eval_trigger: ..
          on_change: sh...()[0]['An']
    Zuletzt geändert von Sisamiwe; 01.02.2020, 12:06.

    #2
    Wäre es nicht einfacher, das im Plugin zu erledigen ?

    Kommentar


      #3
      Möglicherweise schon.

      Ich versuche mal den aktuellen Stand zu beschreiben.

      Die ViessmannHeizung speichert die Timer für die Heizkreisläufe, Warmwasser etc pro Tag auf einer Adresse. Jeder Timer hat 4 Anschaltzeit und 4 Ausschaltzeiten, die in einem Bytestring codiert sind.

      Über ein Kommando, das einem shNG Item zugewiesen ist, lese ich mit dem Plugin den jeden Timer einzeln aus und übergeben diesen als Liste an das Item, was das Lesekommando ausgelöst hat.

      Wenn ich das Zerlegen jedes Timers im Plugin machen möchte, muss ich dann das Child-Item des "Kommando Items" mit den Einzelwerten des Timers füllen.
      Aktuell lege ich die Child-Items mit struct an. also AN1, AUS1, AN2, AUS2...
      Frage 1: Wie kann ich im Plugin ein bestimmtes Child Item des KommandoItems ansprechen?

      Und dann muss ich diese Child Items auch noch irgendwie auf Änderungen überwachen?

      Oder denke ich zu kompliziert?


      Kommentar


        #4
        Alle items, die du auf Änderungen überwachen möchtest, kannst du im Plugin registrieren

        So ganz hab ich's noch nicht verstanden..
        Poste doch Mal deine struct o.ä.

        Es gab auch Mal ne Funktion return_children() für die items, finde sie aber im Moment nicht mehr, damit kannst du auf die jeweiligen Unteritems zugreifen
        Zuletzt geändert von Bonze; 02.02.2020, 08:33.

        Kommentar

        Lädt...
        X