Ankündigung

Einklappen
Keine Ankündigung bisher.

HSL 2.0 Arrays möglich?

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

    HS/FS HSL 2.0 Arrays möglich?

    Hallo Leute!

    Ich versuche am Homeserver gerade erste Schritte mit HSL 2.0. Einzelne remanente Variablen gibt es analog zu HSL 1.0, was ich aber bräuchte wäre ein remanentes Array mit 365 Elementen! Habs mit numpy versucht, aber bisher erfolglos. Geht das überhaupt? Kann man Arrays oder Listen remanent speichern?

    Gruß
    GKap

    #2
    Moin,

    nach meinem Verständnis der Eingänge, Ausgänge und Rem.-Variablen kann man diese nur als number oder als string auslegen und demnach auch nur als solche remanent speichern. Muss dazu sagen, dass ich hier noch nicht die große Erfahrung habe. - Alle Angaben ohne Gewähr.

    In der Doku findet man in der _set_remanent(..)-Methodenbeschreibung hierzu:

    value: float/str
    Wert der remanenten Variable (maximale Größe: 30.000 Byte).
    Kannst du dein Array Komma-separiert serialisiert dort speichern?

    Kommentar


      #3
      Also die Idee war, einen Baustein zu schreiben, der Verbrauchswerte empfängt und daraus eine gleitende Jahressumme berechnet. Das ist im Prrinzip programmiertechnisch keine große Herausforderung, allerdings habe ich noch keinen Weg gefunden, das ohne remanentes Speichern der 365 Tageswerte zu realisieren!

      Die Idee mit einem remanenten String wäre vielleicht möglich, ist aber ziemlich viel Aufwand mit ständigem Konvertieren zwischen String und Float! Ein anderer Weg, der mir noch eingefallen ist, wäre die Daten ausserhalb des Bausteins in ein Archiv zu schreiben und das Archiv im Baustein zu lesen. Ist aber vermutlich noch komplizierter! 🤔

      Gruß GKap

      Kommentar


        #4
        Prinzipiell alles möglich, was in Python möglich ist. Auch Arrays.

        Schau mal den Scrolllist-Baustein an oder den Telefonbuch-Baustein, da werden umfrangreiche Daten in remanenten Text-IKO gespeichert.
        Gruß Matthias
        EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
        - PN nur für PERSÖNLICHES!

        Kommentar


          #5
          Moin,

          Idee ist doch gut. Aber wo ist der Aufwand? Halte das Ding doch einfach immer im Speicher und serialisiere es nach jeder Iteration in die remVar rein.
          Deserialisieren / Laden musst du es ja nur beim Start des HS in on_init

          Code:
          a = ['1', '2', '3', '4', '5']
          
          remVar = ",".join(a) ## serialisieren
          a2 = remVar.split(",") ## deserialisieren
          und sieht dann so aus:
          Code:
          >>> print(a)
          ['1', '2', '3', '4', '5']
          >>> print(remVar)
          1,2,3,4,5
          >>> print(a2)
          ['1', '2', '3', '4', '5']
          Und wenn es in float oder sonstwas noch konvertiert werden muss: iterieren und gut.

          Code:
          >>> test = [float(var) for var in remVar.split(",")]
          >>> print(test)
          [1.0, 2.0, 3.0, 4.0, 5.0]
          Viel Erfolg.

          P.S.: Hab mal gehört manche Jahre haben mehr als 365 Tage, dass sollte man beachten.

          Kommentar


            #6
            Der Tipp, die vielen Elemente in einem String unterzubringen, war doch zielführend und gar nicht so kompliziert, wie ursprünglich gedacht! Neue Werte kommen einfach mit '+' dazu, alte Werte kann man mit partition oder rpartition absplitten oder in Schleifen herausziehen. Und mit count kann man die Anzahl der Elemente bestimmen.

            Zitat von SvenB Beitrag anzeigen
            Hab mal gehört manche Jahre haben mehr als 365 Tage, dass sollte man beachten.
            Falsch, nicht nur manche! Meine Jahre haben alle 365,25 Tage! 😄

            Gruß
            GKap

            Kommentar

            Lädt...
            X