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.
    • 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