Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Daten persistent halten in NR oder MQTT?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Daten persistent halten in NR oder MQTT?

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

      Hallo, wie der titel schon sagt würde mich interessiert wie ihr eure Daten persistent haltet.
      @mickym macht das ja über MQTT, aber dann muss ich die Dateten bei jedem NR Neustart über eine Inject Node abfragen.
      Wenn ich die Daten via context storing im Speicher ablege, würde ich mir den schritt ersparen.

      Wenn es mickym über MQTT macht, muss es doch einen entscheidenden Vorteil haben, den ich noch nicht erkennen kann. 🙂
      Wie macht das die Mehrheit von euch?
      Lg

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @hpgo last edited by mickym

        @hpgo Um vielleicht noch was zu ergänzen.

        Ich bin der Meinung, dass man in der Regel lieber auf Echtdaten, als auf veraltete Werte zugreifen sollte. Sollte man Daten zum Initialisieren brauchen, kann man die im mqtt ja als retain speichern, dann bleiben sie ja erhalten und werden beim Neustart der Flows bzw. Verbinden automatisch gepublished.

        Retain Nachrichten.mp4

        Wenn Du den Kontext speicherst - ist auch OK es werden halt die globalen, flow und context Variablen im Dateisystem gespeichert.

        Nachdem ich es ja auch noch im iobroker gespeichert habe ist ja gut. Also spricht aber nichts dagegen den Kontext zu speichern, auch wenn ich es halt nicht mache.
        OB allerdings der Kontext in JOIN Nodes oder anderen Nodes gespeichert bleibt, weiß ich nicht. Müsstest Du halt ausprobieren.

        Für viele HIER, wird sich die Frage nicht stellen, da die Daten im iobroker dauerhaft gespeichert sind und man die iobroker-In Nodes so konfigurieren kann, dass die Daten bei Adapterneustart automatisch eingelesen werden.

        H 1 Reply Last reply Reply Quote 0
        • H
          hpgo @mickym last edited by hpgo

          Ok, deshalb liest man so wenig hier im Forum darüber.

          Edit: Mit MQTT, das funktioniert
          Mit Context Storing leider nicht
          Vlt weiß ja jemand ob da was fehlt was in die settings.js muss.

          contextStorage: {
          default: "menory"
          memory: { module: "memory" },
          file: { module: "localfilesystem"}
          },

          Edit2: mit gestartet wird es - glaub ich (Bild)Unbenannt.PNG

          Danke

          mickym 2 Replies Last reply Reply Quote 0
          • mickym
            mickym Most Active @hpgo last edited by mickym

            @hpgo So ich habe es gerade in meiner Standalone Konfig getestest - funktioniert einwandfrei.

            Du musst doch nur aus der Standard settings.js den context enablen.

               /** Context Storage
                 * The following property can be used to enable context storage. The configuration
                 * provided here will enable file-based context that flushes to disk every 30 seconds.
                 * Refer to the documentation for further options: https://nodered.org/docs/api/context/
                 */
                contextStorage: {
                    default: {
                        module:"localfilesystem"
                    },
                },
            

            Bei Starten sieht man es:

            16 Aug 23:52:47 - [info]
            
            Welcome to Node-RED
            ===================
            
            16 Aug 23:52:47 - [info] Node-RED version: v3.0.2
            16 Aug 23:52:47 - [info] Node.js  version: v16.16.0
            16 Aug 23:52:47 - [info] Windows_NT 10.0.22000 x64 LE
            16 Aug 23:52:48 - [info] Loading palette nodes
            16 Aug 23:52:48 - [info] Worldmap version 2.28.1
            16 Aug 23:52:48 - [info] Dashboard version 3.1.6 started at /ui
            16 Aug 23:52:48 - [info] Settings file  : C:\Users\micky\.node-red\settings.js
            16 Aug 23:52:48 - [info] Context store  : 'default' [module=localfilesystem]
            16 Aug 23:52:48 - [info] User directory : \Users\micky\.node-red
            16 Aug 23:52:48 - [warn] Projects disabled : editorTheme.projects.enabled=false
            16 Aug 23:52:48 - [info] Flows file     : \Users\micky\.node-red\flows.json
            16 Aug 23:52:48 - [info] Server now running at http://127.0.0.1:1880/
            16 Aug 23:52:48 - [warn]
            
            ---------------------------------------------------------------------
            Your flow credentials file is encrypted using a system-generated key.
            
            If the system-generated key is lost for any reason, your credentials
            file will not be recoverable, you will have to delete it and re-enter
            your credentials.
            
            You should set your own key using the 'credentialSecret' option in
            your settings file. Node-RED will then re-encrypt your credentials
            file using your chosen key the next time you deploy a change.
            ---------------------------------------------------------------------
            
            16 Aug 23:52:48 - [info] Starting flows
            16 Aug 23:52:48 - [info] [worldmap:bdefa1df675a158f] started at /worldmap
            16 Aug 23:52:48 - [info] Started flows
            

            Es wird automatisch ein Verzeichnis context erstellt.

            Darunter gibts dann ein Flow ID und eine JSON Datei, die den Inhalt des Kontextes enthält.

            1 Reply Last reply Reply Quote 1
            • mickym
              mickym Most Active @hpgo last edited by mickym

              @hpgo Auch die Auswahl mit 2 Storages funktioniert:

              b34595ea-a6cd-413a-a704-6b6bed2b14b4-image.png

              17 Aug 00:07:09 - [info]
              
              Welcome to Node-RED
              ===================
              
              17 Aug 00:07:09 - [info] Node-RED version: v3.0.2
              17 Aug 00:07:09 - [info] Node.js  version: v16.16.0
              17 Aug 00:07:09 - [info] Windows_NT 10.0.22000 x64 LE
              17 Aug 00:07:09 - [info] Loading palette nodes
              17 Aug 00:07:10 - [info] Worldmap version 2.28.1
              17 Aug 00:07:10 - [info] Dashboard version 3.1.6 started at /ui
              17 Aug 00:07:10 - [info] Settings file  : C:\Users\micky\.node-red\settings.js
              17 Aug 00:07:10 - [info] Context store  : 'memoryOnly' [module=memory]
              17 Aug 00:07:10 - [info] Context store  : 'file' [module=localfilesystem]
              17 Aug 00:07:10 - [info] User directory : \Users\micky\.node-red
              17 Aug 00:07:10 - [warn] Projects disabled : editorTheme.projects.enabled=false
              17 Aug 00:07:10 - [info] Flows file     : \Users\micky\.node-red\flows.json
              17 Aug 00:07:10 - [info] Server now running at http://127.0.0.1:1880/
              17 Aug 00:07:10 - [warn]
              
              ---------------------------------------------------------------------
              Your flow credentials file is encrypted using a system-generated key.
              
              If the system-generated key is lost for any reason, your credentials
              file will not be recoverable, you will have to delete it and re-enter
              your credentials.
              
              You should set your own key using the 'credentialSecret' option in
              your settings file. Node-RED will then re-encrypt your credentials
              file using your chosen key the next time you deploy a change.
              ---------------------------------------------------------------------
              
              17 Aug 00:07:10 - [info] Starting flows
              17 Aug 00:07:10 - [info] [worldmap:bdefa1df675a158f] started at /worldmap
              17 Aug 00:07:10 - [info] Started flows
              
              

              Auch bei 2fachem Kontextstore - ist dann bei Neustart der Kontext wieder geladen und man sieht auch woher der Kontext kommt:

              8e740cb4-e7ca-4c6f-87e4-2bf23ebd4625-image.png

              Wenn Du beide Kontextmodes angibst - musst Du bei den function Nodes und dem lokalen Kontextstore diesen mitangeben.

              Auch der Kontext im Filesystem bei beiden Kontextarten in einer function Node funktioniert - Du musst halt hier nun als 3.Parameter ebenfalls den Storagetype angeben:

              da9f509f-cdcc-45bc-b4c2-0380deb0fa86-image.png

              Wenn Du beide Arten angibst und Du bei default memory angibst - dann wirds natürlich nicht im Filesystem gespeichert. Falls Du unten das default angegeben hast, dann hast Du einen Fehler bei der Schreibweise gemacht. Soll wohl memory heißten anstelle von menory. 😉

              Wenn Du default halt das Filesystem haben möchtest, dann musst das default eben ändern.

              Der Kontext wird standardmäßig alle 30s gesichert wird Also bissi warten. Genau: https://nodered.org/docs/api/context/store/localfilesystem

              5d29b657-3373-4e77-97ae-4e340b3fc679-image.png

              H 1 Reply Last reply Reply Quote 1
              • H
                hpgo @mickym last edited by

                @mickym
                Danke das du das bei dir ausprobierst obwohl du es nicht brauchst.

                Leider funktioniert es bei mir nicht, eventuell wegen des Tippfehlers. Hoffe ich hab am Abend Zeit bevor ich wieder vorm PC einschlafe.

                Die schreibst Standalone Konfig - worauf hast du NR installiert. (Raspi?)
                Bei mir läuft NR in einem Docker Container und ich bin nicht sicher ob ich die richtige settings.js bearbeite.

                Danke

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @hpgo last edited by

                  @hpgo Ich habe die Standalone auf Windows installiert. Schau doch mal in Deinem Dienst, ob es da drin steht. Wenn ich die Windows-Version hochfahre, dann steht genau, welche settings.js er zieht.

                  c9e92c0a-782f-4813-86db-9e88c38fa0f4-image.png

                  H 1 Reply Last reply Reply Quote 0
                  • H
                    hpgo @mickym last edited by hpgo

                    Ok ich muss doch die richtige settings.js haben ansonsten würde der context store ja nicht mit gestartet werden.
                    Auch die flows.json Datei wurde erstellt.

                    NR start.png

                    Komisch ist nur, ich bekomm in der Change Node nicht die Auswahl der beiden Storages.

                    Screenshot (1).png

                    Vlt reicht es nicht nur den Container neu zu starten - das versuche ich erstmal.
                    Lg

                    mickym 2 Replies Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @hpgo last edited by mickym

                      @hpgo Du hast nur ein Kontextstore Memory aktiv.

                      Entweder hast Du nur einen aktiv - dann hast du keine Auswahl - oder Du hast beide. Wie Du bei mir siehst müssen beide auftachen:

                      17 Aug 00:07:10 - [info] Context store  : 'memoryOnly' [module=memory]
                      17 Aug 00:07:10 - [info] Context store  : 'file' [module=localfilesystem]
                      

                      Wenn Du beide aktiv haben willst musst Du in der settings.js folgendes eintragen:

                                contextStorage: {
                      	 	default: "memoryOnly",
                      		memoryOnly: { module: 'memory' },
                      	 	file: { module: 'localfilesystem' }
                      	 },
                      

                      Bei Dir ist aber nur memory aktiv. Und Dein settings.js file scheint in dem /data Verzeichnis zu liegen.

                      Wenn das eine aktuelle settings.js ist dann ist das eigentlich auskommentiert schon vorhanden. Die settings.js ist ja quasi in Sektionen mit den entsprechenden Überschriften eingeteilt.

                      Sollte also unter den Runtime Settings stehen (ich habe allerdings schon auf 3.0.2 upgedated):

                      /*******************************************************************************
                       * Runtime Settings
                       *  - lang
                       *  - runtimeState
                       *  - diagnostics
                       *  - logging
                       *  - contextStorage
                       *  - exportGlobalContextKeys
                       *  - externalModules
                       ******************************************************************************/
                      
                      1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @hpgo last edited by mickym

                        @hpgo sagte in Daten persistent halten in NR oder MQTT?:

                        Ok ich muss doch die richtige settings.js haben ansonsten würde der context store ja nicht mit gestartet werden.

                        Nee das stimmt nicht - selbst wenn gar nichts in der settings.js steht - standardmässig ist ja auch alles auskommentiert, wird der memory context geladen. Ich glaube, dass Du einen Syntaxfehler in der settings.js hast, zum Ende das Komma fehlt oder sonst was.

                        H 1 Reply Last reply Reply Quote 0
                        • H
                          hpgo @mickym last edited by hpgo

                          Funktioniert jetzt auch, wie ich vermutet habe, habe ich immer die falsche settings.js bearbeitet.
                          Sorry das ich mich auf meinem eigenen System nicht auskenne wo, was, wie zu finden ist.

                          Danke für die Hilfe!!

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          1.1k
                          Online

                          31.7k
                          Users

                          79.7k
                          Topics

                          1.3m
                          Posts

                          2
                          11
                          896
                          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