Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Probleme mit setState auf Raspberry Pi

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Gelöst] Probleme mit setState auf Raspberry Pi

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      t2d234 last edited by

      Hallo zusammen,

      ich mache gerade meine ersten Schritte mit Skripten in ioBroker und habe folgendes Problem:

      Für bestimmte getriggerte Ereignisse möchte ich die Zeitpunkte in globalen Variablen speichern. Zum Testen habe ich dazu folgendes Skript erstellt:

      __setState('d', new Date(), true);

      console.log ("Datum: "+getState('d').val);__ Zusätzlich in einem globalen Skript:

      createState ('d'); Ich habe ioBroker auf einem Raspberry Pi (Modell B Rev. 2) und auf einem Windows-Rechner installiert.

      Das Skript arbeitet unter Windows fehlerfrei, das aktuelle Datum wird (spätestens nach dem zweiten Durchlauf des Skriptes) auf der Konsole geloggt angezeigt. Durch die Nebenläufigkeit der Ausführungen im Zweifelsfall die Zeit vom vorherigen Aufruf des Skriptes. Das spielt aber hier auch keine Rolle, denn eigentlich will ich ja nur den Wert in der Variablen speichern und das funktioniert ja.

      Auf dem Raspberry Pi allerdings bleibt die Variable d immer leer. Sobald ich den setState-Befehl ändere zu

      setState('d', (new Date()).toString(), true)

      wird das Datum als String korrekt in die Variable geschrieben. Das ist aber eigentlich nicht Ziel der Sache, da ich das Datum zu einem späteren Zeitpunkt weiterverarbeiten möchte und mir der String da nicht direkt weiterhilft.

      Kann jemand mein Problem verstehen und mir eine Lösung verraten? Oder muss ich ganz anders an die Sache herangehen?

      Vielen Dank schon mal im Voraus für eure Unterstützung.

      Timo

      1 Reply Last reply Reply Quote 0
      • apollon77
        apollon77 last edited by

        "new Date()" ist ein Objekt und das kann nur in States mit dem richtigen Typ gespeichert werden. Von daher ist Dein Ansatz mit new Date()).toString() korrekt.

        Beim lesen machst Du einfach

        new Date(getState('d').val) 
        

        und Du hast wieder das Date-Objekt.

        1 Reply Last reply Reply Quote 0
        • T
          t2d234 last edited by

          Vielen Dank für die schnelle Lösung!

          Du schreibst ja richtigerweise "new Date()" ist ein Objekt" und das dies nur in States mit dem richtigen Typ gespeichert werden kann.

          Mir stellt sich daher die Frage, wie bekomme ein State mit dem Typ Date? Versuche dies beim Anlegen mit createState und direkter Initialisierung zu schaffen, waren bei mir nicht erfolgreich. Wenn das möglich wäre, müsste man ja nicht die doppelte Typkonvertierung durchführen.

          Gibt es noch einen Tipp dazu?

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            Ich denke an der Stelle das es gar nicht geht da Date formal eine "Objektinstanz" ist. ioBroker kann "Daten" speichern.

            Also ein eigenes Objekt was nur Daten hält geht mit dem ioBroker-Datentyp "object". Das wird dann von ioBroker automatisch in JSON-konvertiert und so gespeichert und wieder rausgeholt und zurückkonvertiert. Damit ist der "Objektsupport" auf "Datenobjekte" begrenzt.

            "Date" als Instanz ist aber nicht serialisierbar bzw in "JSON"-Konvertierbar und kann daher nicht direkt gespeichert werden - wäre auch von einer "Key-Value-Storage-Schicht" wie wir hier haben etwas viel verlangt 🙂

            1 Reply Last reply Reply Quote 0
            • T
              t2d234 last edited by

              Ok, das mit der JSON-Konvertierbarkeit von Date hab ich nicht gewusst. Dann ist ja alles klar.

              Nochmals besten Dank! 😄

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              535
              Online

              31.7k
              Users

              79.7k
              Topics

              1.3m
              Posts

              2
              5
              436
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo