Ankündigung

Einklappen
Keine Ankündigung bisher.

struct in struct wird nicht erweitert ...

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

    struct in struct wird nicht erweitert ...

    Ich verwende gerne die item-structs. Irgendwann wird die datei größer, als alle meine Items zusamen. ;-)

    Aber mein Problem ist, dass ich in einem struct ein struct aus einem plugin referenziert habe. Grundsätzlich wird das zwar erkannt. Aber ich kann nicht daraif zugreifen, noch es im Item-Tree erweitern. Er zeigt wie gesagt bei beinhaltet Strukturen das uzsu.child, aber ich kann es im Tree nicht erweitern.

    Das dazugehörige struct sieht so aus:

    Code:
    Nachtmodus_Raum:
        type: bool
        knx_dpt: 1
        cache: yes
        eval: True if sh...Rollladen.ist_unten() else False if sh...Rollladen.ist_oben() else None
        eval_trigger:
          - ..Rollladen.ist_oben
          - ..Rollladen.ist_unten
        Licht:
            type: bool
            knx_dpt: 1
            cache: yes
            eval: True if sh...self() and sh..UZSU() else False
            eval_trigger:
                - ..self
                - .UZSU
            UZSU:
                type: bool
                knx_dpt: 1
                struct: uzsu.child
                cache: yes
        Bedienelemente:
            type: bool
            knx_dpt: 1
            cache: yes
            eval: True if sh...self() and sh..UZSU() else False
            eval_trigger:
                - ..self
                - .UZSU
            UZSU:
                type: bool
                struct: uzsu.child
                cache: yes
    Habe ich was übersehen?

    struct.png

    #2
    Ich habe jetzt mal direkt so ein UZSU-Item in die entsprechende Item-Definition kopiert. Da geht das dann auch. Der Unterschied ist hier auch: In einem funktionsfähigen Item steht dann bei ItemName "Vorlage-Struktur für Zeitschaltuhren".

    Ich hatte gelesen, dass verschachtelte structs mögich sind. Ich vermute aber mal, dass ich in den structs selbst keine struct-Definitionen aus den plugins nutzen kann, richtig?

    Kommentar


      #3
      Mit den Plugin structs hat es nix zu tun. Die Limitierung bei sub-structs ist derzeit so, dass du structs innerhalb von structs nur auf ROOT Ebene einbinden kannst.
      Also im struct.yaml so:
      Code:
      Nachtmodus_Raum:
          type: bool
          knx_dpt: 1
          struct: uzsu.child
      Bringt in deinem Fall halt leider nix uns somit muss du das uzsu struct leider in deiner item.yaml referenzieren.
      Also so..

      Code:
      item_xy:
          struct: Nachtmodus_Raum
          Licht:
              UZSU:
                  struct: uzsu.child

      Kommentar


        #4
        Zitat von Onkelandy Beitrag anzeigen
        Bringt in deinem Fall halt leider nix uns somit muss du das uzsu struct leider in deiner item.yaml referenzieren.
        Danke für die Info. Ich habe das auch so gemacht jetzt. Schade aber, dass das so nicht geht.

        Kommentar


          #5
          Ich erlaube mir die Frage, ob es geplant ist eine Erweiterung in SmartHomeNG zu machen, so dass man struct nicht nur im Root verwenden kann. Gerade beim Programmieren eines Plugin mit sehr grossen Datenstrukturen, die sich wiederholen (Beispiel BYD_BAT und 3 identische Türme), wäre das genial.

          Kommentar


            #6
            löschen ... ;-)
            Zuletzt geändert von Cannon; 09.01.2024, 09:02.

            Kommentar


              #7
              Zitat von manhartm Beitrag anzeigen
              so dass man struct nicht nur im Root verwenden kann
              Was genau meinst Du damit?
              Viele Grüße
              Martin

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

              Kommentar


                #8
                Ok, hier ein Beispiel.

                In der Datei "struct.yaml":

                Code:
                my_struct_1:
                    wert1:
                        type: num
                    wert2:
                        type: num
                        
                my_struct_2:
                    werta:
                        type: num
                    struct_1:
                        struct: my_struct_1
                In der Datei "test.yaml":

                Code:
                test:
                
                    struct: my_struct_2
                Das Resultat sieht dann so aus:
                shng1.png
                shng2.png

                Der Struct "struct_1" wird zwar angezeigt, aber die Werte im Struct tauchen nicht auf. Die Elemente aus "my_struct_1" sind nicht zu sehen.

                Kommentar


                  #9
                  Nested structs (das verschachteln von structs) wird ab dem kommenden Release v1.10 unterstützt.
                  Viele Grüße
                  Martin

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

                  Kommentar


                    #10
                    Zitat von Msinn Beitrag anzeigen
                    Nested structs (das verschachteln von structs) wird ab dem kommenden Release v1.10 unterstützt.
                    Wunderbar. Danke für die Info.

                    Kommentar

                    Lädt...
                    X