Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Redis in ioBroker - Überblick

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Redis in ioBroker - Überblick

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

      @apollon77

      Danke für den entscheidenden Tip!

      Manchmal sieht man vor lauter Bäumen den Wald nicht mehr... 🙄 Ich habe verzweifelt versucht, die Redis DB in meinem Docker Container zu stoppen - und dabei völlig vergessen, daß man ja auch in einen gestoppten Container Dateien kopieren kann. Bin wohl noch zu neu mit Docker und zu stark in der Denke einer VM verankert.

      Jedenfalls ein Redis SAVE und Redis Stop auf meinem Master, dann ein Kopieren der dump.rdb in den gestoppten Redis Container und ein Neustart des Containers haben die ganze Magie geliefert. Nach einem ssh-Umzug - mit jeweiligem "iobroker setup custom" und Umstellen auf die IP des Containers - durch die Gemeinde meiner ioBroker-Slaves läuft mein ioBroker nun auf Redis unter Docker.

      Jetzt sehe ich mir mal Redis Sentinel an.

      Eine Frage noch zum ioBroker Backup mit einer Redis-Basis: der ioBroker Backup-Adapter protokolliert ja beim Backup auch, daß er States und Objects sichert. Würde ein Restore von so einem Backup im Zweifel reichen, um nach einem Total-Crash zumindest einigermaßen zeitnah wieder Aufzusetzen? Oder sollte ich lieber zusätzlich regelmäßig ein SAVE des Redis Clients auslösen und die dump.rdb auch irgendwo sichern?

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

        @higginsd Ein normales ioBroker Backup enthält ebenso alle States und Objekte und User-spezifische Files ... also das reicht auch

        1 Reply Last reply Reply Quote 0
        • H
          higginsd last edited by

          Nachdem ich heute den halben Tag an Redis für ioBroker rumprobiert habe noch ein paar Hinweise von mir. Kann ja sein, daß da noch jemand drüber stolpert.

          a) Wenn man Redis im Docker Container nutzen will und (u.a. wegen der Sicherung) die dump.rdb über ein lokales Verzeichnis vom/auf Docker Host mounten will, dann unbedingt nur das Container-Verzeichnis (normalerweise /var/lib/redis, steht im Parameter "dir" der redis.conf) mit der darin befindlichen dump.rdb beim Docker-Aufruf (run oder create) mounten und niemals die dump.rdb Datei selber! Sonst schlägt der SAVE/BGSAVE von Redis fehl mit einem "file-busy" Fehler.

          b) Docker verwendet Stand heute (4.1.2023) in redis:latest die Version 7.0.7 von Redis. Auf einem raspberry/Raspbian wird aber aktuell die Redis Version 6.0.16 verwendet bzw. von apt ausgeliefert. Dies führt in folgender Konstellation zu einem Fehler beim Sync eines Redis-Replica Slaves:

          • der Redis-Master (v7.0.7) wird in einem Docker-Container gestartet
          • ein Redis-Replica Slave auf einem Raspberry/Raspbian wird mit dem Master verbunden

          Denn Redis 7 verwendet die dump.rdb Version 10 (steht ganz zu Anfang in der Datei) und Redis 6 kann nur die dump.rdb Version 9.

          Da apt auf Raspbian derzeit nur Redis 6 als aktuell ausliefert, muss man notgedrungen auf Raspbian Redis 7 aus der Source selber compilieren. Und weil Redis standardmäßig in systemctl mit Daemon-Control eingebunden ist, muss für den Compile auch noch die libsystemd-dev installiert sein. Die liefert (zum Glück) apt aus.

          sudo apt install libsystemd-dev
          wget http://download.redis.io/releases/redis-7.0.7.tar.gz
          tar xzf redis-7.0.7.tar.gz
          cd redis-7.0.7
          make USE_SYSTEMD=yes
          sudo make install

          Der make mit dem Parameter USE_SYSTEMD=yes ist wichtig, da Redis sonst ohne Systemd-Control compiliert wird und von systemctl ständig neu gestartet wird.

          Nach make und make install muss dann zum Schluss noch die /lib/systemd/system/redis-server.service angepasst werden, denn "make install" installiert Redis 7 auf /usr/local/bin, in redis-server.service wird aber /usr/bin/redis-server aufgerufen. Also den Aufruf einfach ändern auf /usr/local/bin/redis-server

          Danach sollte ein "sudo systemctl daemon-reload" und ein "sudo systemctl restart redis" zu einem funktionierenden Sync des Redis-Slaves führen.

          Vielleicht hilft es ja dem ein oder anderen!

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

            @higginsd sagte in Redis in ioBroker - Überblick:

            Denn Redis 7 verwendet die dump.rdb Version 10 (steht ganz zu Anfang in der Datei) und Redis 6 kann nur die dump.rdb Version 9.

            Ja also wenn man Redis Cluster baut dann sollten die die gleiche version haben. Korrekt!

            1 Reply Last reply Reply Quote 0
            • H
              higginsd last edited by

              Zwei Frage noch zur Sentinel Config:

              "Ansonsten fehlt nur die Anpassung der IP des Redis-Masters in der Konfiguration sentinel monitor mymaster 127.0.0.1 6379 2. "

              Also das ist ja der Default. Da trage ich die IP meines aktuellen Redis-Masters ein, richtig?

              Und: die Sentinel Clients müssen zwangsläufig jeweils auf dem System mit dem Redis-Server laufen? Abstimmen und umschalten können die doch auch, wenn sie auf völlig anderen Hosts laufen.

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

                @higginsd sagte in Redis in ioBroker - Überblick:

                Also das ist ja der Default. Da trage ich die IP meines aktuellen Redis-Masters ein, richtig?

                Genau

                Und: die Sentinel Clients müssen zwangsläufig jeweils auf dem System mit dem Redis-Server laufen? Abstimmen und umschalten können die doch auch, wenn sie auf völlig anderen Hosts laufen.

                Ja natürlich können die auch woanders laufen, aber das redis-sentinel das redis-server binary in nem anderen Modus startet hast Du halt auf den hosts mit Redis alles da und also why not 🙂
                Aber Formal können das andere sein, korrekt. Sentinel brauchst Du mindestes 3

                H 1 Reply Last reply Reply Quote 0
                • H
                  higginsd @apollon77 last edited by

                  @apollon77

                  Ja, ich habe nur das Problem, daß mein Redis Master im redis:latest Docker Container läuft. Und da wird es schwierig, auch noch Sentinel in den Container zu bringen und vor allem, es zu starten. Docker Container sind ja streng genommen nur für einen Prozess/Anwendung ausgelegt.

                  Klar könnte ich per apt auch noch systemctl und redis-sentinel im Container installieren und Sentinel dann ganz normal mit systemctl starten/stoppen. Aber das "verbiegt" den Container doch sehr.

                  Ich schaue einfach mal, ob ich das nicht mit einem zusätzlichen Sentinel-Container hinbekomme. Die anderen 2 Slaves mit Sentinel laufen bei mir auf anderen physikalischen Rechnern mit Debian/Raspbian.

                  Man sollte übrigens beim Start von einem Sentinel Cluster darauf achten, Sentinel zuerst auf dem aktuellen Master zu starten. Sonst sind die 2 Slaves sich in 20 Sekunden einig, daß der Master tot ist und schalten um. Danach wird es dann schwierig, den Master zu starten, zumindest musste ich die Geschichte erst wieder stoppen und eine Sicherung einspielen, denn die "Master-DB" war defekt.

                  Kann aber sein, daß ich falsch liege. Zumindest schadet es nicht, so vorzugehen.

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

                    @higginsd ja klar wenn du Docker hast dann mach nen zweiten sentinel Container auf dem gleiche Host. Ist doch faktisch das gleiche was ich oben geschrieben hab ;-))

                    1 Reply Last reply Reply Quote 0
                    • H
                      higginsd last edited by

                      Redis und Redis-Sentinel mit Docker - etwas tricky! Das Problem ist das NATing im Container. Sentinel sucht sich IP-Adressen über HELOs zusammen und das geht schief, wenn man wie bei Docker NATing hat. Denn dann wird die interne IP des Netzes im Container (irgendwas mit 17.0.x.x) an Sentinel geliefert.

                      Ok, die einfache Lösung ist es, den Container mit "--net=host" zu starten/bauen. Das funktioniert aber NICHT mit Docker auf MacOS, denn dann sind die Ports außerhalb des Macs (Docker Host) nicht mehr zugreifbar. Irgendein bekanntes, aber ungelöstes Problem mit dem dahinter liegendem NATing der Docker Linux-VM auf MacOS.

                      Abhilfe: für jeden Sentinel Host in der sentinel.conf die Parameter "sentinel announce-ip X.X.X.X" und "sentinel announce-port 26379" setzen, dabei X.X.X.X auf die eigene IP setzen. Also insbesondere im Sentinel Container auf dem Docker Host!

                      Ferner: damit ein Redis Master in einem Docker Container die IPs seiner verbundenen Slaves richtig erkennt, muss man in jedem Slave (besser auch im Master, wenn man Sentinel später verwenden will) die Parameter "replica-announce-ip X.X.X.X" und "replica-announce-port 6379" setzen. Dabei ist X.X.X.X wieder die eigene IP. Danach erkennt ein Redis Mster in einem Docker Container auch korrekt, mit welchen IPs seine Slaves verbunden sind.

                      Bisher läuft es bei mir mit 3 Redis Hosts und Sentinel.

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

                        @higginsd wow Puhh. Interessant. Danke für deine Infos. Hilft bestimmt anderen. Läuft bei mir in lxc Containern im proxmox Cluster.

                        1 Reply Last reply Reply Quote 0
                        • H
                          higginsd last edited by

                          Was mich ja jetzt umtreibt, ich mir aber nicht selber beantworten kann, weil ich mich noch zu wenig mit der Datenhaltung in iobroker befasst habe.

                          Ich nutze iobroker mit einem Master (auf Raspi mit SSD) und 6 Slaves. Wenn jetzt ein Slave ausfällt, verteile ich vom Master einfach die Adapter-Instanzen per Hand schnell auf andere Slaves und alles läuft wieder.

                          Mein persönlicher Worst-case: der Master fällt aus.

                          Frage: alle meine iobroker Daten (states und objects) sind ja sicher in meinem Redis Sentinel. Wenn jetzt der Master-Pi ausfällt, reicht es dann, einfach eine weitere iobroker Instanz als Master zu konfigurieren und mit dem Redis Sentinel zu verbinden? Sind dann alle installierten Adapter-Instanzen wieder auf dem neuen Master vorhanden und laufen? Alle meine JS-Scripte wieder da und laufen?

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

                            Ok, laaaangsam 🙂

                            Die Daten sind nicht im Redis-Sentinel!! Der Sentinel ist ein Zusatzprozess der alle deine Redis Hosts überwacht. Den Master und den Slave. Wenn jetzt der Redis Master ausfällt erkennt der Sentinel das und alle Sentinels stimmen für einen neuen Redis-master ab und das wird dann umgesetzt. Die Redis-Sentinels sorgen dann dafür das einer der Redis-Slaves zum neuen Master wird. Das heisst aus reiner DB Sicht hast Du jetzt eine hochverfügbare DB (so lange >50% der Sentinels da sind),

                            Daher bitte wenn Du das nutzt auch über iob Custom bei jedem ioBroker Host die Konfig der DB ändern: Als IP kommt die (komma getrennte) Liste aller (!!) Sentinel IPs rein. Bei Port der Sentinel port. Dann verbinden sich ab dann die Hots und Adapter zuerst zu irgendeinem Sentry und erfahren so welcher Redis gerade der Master ist und verbinden sich dann dorthin.

                            Ab jetzt sind alle ioBroker gleichberechtigt weil sie alle zum "richtigen" Redis Server verbinden können mit der Hilfe der Sentinels.

                            Wenn dir jetzt ein Host ausfällt wo auch ioBroker drauf läuft sind erstmal nur die Instanzen weg die dort waren. Du kannst also jetzt auf einen der anderen Hosts einloggen und die instanzen auf die anderen iobroker hosts verschieben (geht per CLI, oder auch indem du einfach pro iobroker host ne admin instanz machst die du dann bei bedarf einschaltest, dann haste auf der IP deine UI).

                            probleme mit dem "instanzen verschieben" machen nur adapter die ggf lokal extra Daten liegen haben - also zB "history" weil da die ganzen Datenfiles auf dem Host liegen oder andere Fälle oder falls es um USB sticks geht oder sowas.

                            1 Reply Last reply Reply Quote 0
                            • H
                              higginsd last edited by

                              Ja, schon klar daß die Daten im Redis liegen und die Sentinel clients nur die Redis Master/Slaves überwachen.

                              Und natürlich habe ich auf allen iobroker auch das custom setup mit der Liste der Sentinel Hosts durchgeführt.

                              Mein Punkt ist: ich habe die iobroker Adapter Installs nur auf dem Master gemacht, auf den Slaves nur jeweils den Backup Adapter und den JS Adapter. Instanzen verschieben auf Slaves mache ich über den Master.

                              Wenn ich mich auf 8081 zu einem Slave verbinde, sehe ich dort in der Oberfläche auch nur die Instanzen von Backup und JS.

                              Ich muss also einfach mal versuchen, den Master abzuschalten und einen weiteren iobroker als Master zu konfigurieren und dann zu starten. In der Hoffnung, dass er mir dann alle meine Adapter Instanzen anzeigt.

                              Das wäre dann ein einfaches Fail over für den Ausfall des Masters.

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

                                @higginsd Achtung Wording!! KEINER der ioBroker "hots" ist jetztnich der Master weil die Datenbank der Master ist wenn Objekte und States im Redis liegen.

                                und in jedem Admin kannst Du unter Adapter oben im Header den Host umschalten ... jeder Admin kann immer alle Hosts verwalten. Und unter "Instanzen" solltest Du alle Instanzen von allen Hosts sehen

                                1 Reply Last reply Reply Quote 0
                                • H
                                  higginsd last edited by

                                  @apollon77

                                  Hi! Danke für den Hinweis! Ich habe es ausprobiert und es funktioniert tatsächlich. Man sollte nur auf allen iobroker Instanzen einen Admin Adapter installiert haben.

                                  Meine Zusammenfassung: mit Redis und Redis Sentinel habe ich eine Sorge weniger bei ioBroker.

                                  Danke für den Thread hier und die Hilfe!

                                  1 Reply Last reply Reply Quote 1
                                  • F
                                    fir3drag0n last edited by

                                    Hi,

                                    ich habe jezt auch mal auf redis für die States umgestellt, allerdings erhalte ich danach vom javascript Adapter Fehlermeldungen:

                                    
                                    javascript.0
                                    2023-01-27 12:39:10.004	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.004	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.004	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.004	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:15:95)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	getState "0_userdata.0.Stromverbrauch.Kosten_kWh_in_Euro" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:14:95)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	getState "0_userdata.0.Stromverbrauch.Kosten_kWh_in_Euro" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:13:191)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	getState "0_userdata.0.Stromverbrauch.Kosten_kWh_in_Euro" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.003	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:13:115)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	getState "0_userdata.0.Stromverbrauch.Kosten_Grundpreis" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:12:141)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	getState "0_userdata.0.Stromverbrauch.Zählerstand_Abrechnungsbeginn" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:11:121)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	getState "0_userdata.0.Stromverbrauch.Zählerstand_Monatsanfang" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.002	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.001	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.001	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.001	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.001	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.001	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.001	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:9:121)
                                    
                                    javascript.0
                                    2023-01-27 12:39:10.000	warn	getState "0_userdata.0.Stromverbrauch.Zählerstand_0:00" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:15:95)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	getState "0_userdata.0.Stromverbrauch.Kosten_kWh_in_Euro" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.004	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:14:95)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	getState "0_userdata.0.Stromverbrauch.Kosten_kWh_in_Euro" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:13:191)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	getState "0_userdata.0.Stromverbrauch.Kosten_kWh_in_Euro" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:13:115)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	getState "0_userdata.0.Stromverbrauch.Kosten_Grundpreis" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:12:141)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	getState "0_userdata.0.Stromverbrauch.Zählerstand_Abrechnungsbeginn" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.003	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:11:121)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.002	warn	getState "0_userdata.0.Stromverbrauch.Zählerstand_Monatsanfang" not found (3) states[id]=null
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.002	warn	at processTimers (node:internal/timers:502:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.002	warn	at listOnTimeout (node:internal/timers:559:17)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.002	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.002	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.002	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.002	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.002	warn	at Object.<anonymous> (script.js.common.Stromverbrauch_Berechnung:9:121)
                                    
                                    javascript.0
                                    2023-01-27 12:39:00.002	warn	getState "0_userdata.0.Stromverbrauch.Zählerstand_0:00" not found (3) states[id]=null
                                    
                                    apollon77 1 Reply Last reply Reply Quote 0
                                    • apollon77
                                      apollon77 @fir3drag0n last edited by

                                      @fir3drag0n Umgestellt? Auch mit Datenmigration? Weil sonst hast Du halt keine State werte es sei denn sie werden mindestens einmal gesetzt

                                      1 Reply Last reply Reply Quote 0
                                      • Q
                                        Quaco last edited by

                                        @apollon77 Danke für diese umfassende Info, habe alles mit interesse gelesen und versuche gerade diese Info auf meinen Anwendungfall zu übertragen.

                                        Ich betreibe einen Iobroker Master z.Z. mit file/file also default. Einen Slave auch default. Beide im Docker, das läuft grundsätzlich gut. Ich hatte das Problem das der Master ständig abgeraucht ist und objekts.json und states.json hin waren. Das sollte ja bei redis nicht mehr passieren. Daher die Idee beides umzustellen.

                                        Jetzt ist es aber so das der Slave auf einem durch VPN angebundenen Site steht. Das bedeutet jedes mal wenn der Tunnel zusammen bricht muss der Slave Container neu gestartet werden, und die Daten die er in der Zwischenzeit gesammelt hat sind weg.

                                        Daher denke ich über sentinel nach. Ich würde also auf beiden Hosts zusätzlich einen Sentinel/redis container installieren. Auf dem Mastersite betreibe ich noch eine Synology NAS mit Raid und Backup. Diese schaltet sich aber Nachts ab. Hier würde ich gerne sichern. Hier läuft jedoch kein Docker.

                                        Den dritten Sentinel könnte ich jedoch als zusätzlichen Container auf dem Master-Host installieren. Aber ich fürchte das hilft mir nicht wenn der Tunnel zusammen bricht. Der Master-Site wäre zwar save aber die Slave-Daten wären weiterhin verloren.

                                        Wenn jemand eine Idee hat die einen zeitweiligen Ausfall der VPN Verbindung tolleriert, dann bin ich ganz gespannt.

                                        VG Quaco

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

                                          @quaco sagte in Redis in ioBroker - Überblick:

                                          Ich hatte das Problem das der Master ständig abgeraucht ist und objekts.json und states.json hin waren. Das sollte ja bei redis nicht mehr passieren

                                          Naja der erste Schritt wäre auf jsonl/jsonl zu gehen als DB weil die haben wir genau wegen sowas gebaut. AB controller 4.0.24 ist da alles feinstens. Da brauxchts erstmal keinen Redis. Es sei denn du hast sonstige Gründe dafür

                                          Aber ich fürchte das hilft mir nicht wenn der Tunnel zusammen bricht. Der Master-Site wäre zwar save aber die Slave-Daten wären weiterhin verloren.

                                          Exakt. Und in deinem Fall wird durch den Sentinel dann die Seite bevorzugt wo die 2 Sentinels stehen.

                                          Wenn jemand eine Idee hat die einen zeitweiligen Ausfall der VPN Verbindung tolleriert, dann bin ich ganz gespannt.

                                          Es gibt im Zuge der HA Überleitungen, wo Redis und Sentinel dann seine stärken ausspielen, am Ende den plan wenn ein Host als "offline" erkannt wird das dann seine Instanzen auf der anderen Seite neu gestartet werden und so "weiterlaufen". Wenn die jetzt aber "da drüben" Laufen weil Sie Daten sammeln die nur dort existieren hilft dir das nicht.

                                          Wenn es NUR um Daten gibt die zB in einer InfluxDB landen dann könnte man folgendes überlegen (aber ja geht aktuell auch NUR mit InfluxDB): Lege für jede seite eine InfluxDB instanz an die auf die gleiche InfluxDB connecten auf der Master-Seite. Jetzt konfigurierst Du das Datenlogging für die Adapterinstanzen je nachdem wo Sie laufen.
                                          Falls jetzt VPN wegbricht dann verliert die Influxdb Instanz auf Slave Seite die Verbindung und puffert alle Daten im RAM bis die Verbindung wieder steht und schiebt Sie dann rüber. Logik-Seitig hilft das natürlich nicht und am Ende ist es RAM limitiert was die Ausfalldauer angeht.
                                          Hilft das? (Falls wir das weiter Diskutieren bitte neuen Thread öffnen).

                                          1 Reply Last reply Reply Quote 0
                                          • E
                                            e-i-k-e last edited by

                                            Hallo,

                                            ich betreibe schon länger ein redis/redis System.

                                            Wie komm ich in diesem Fall eine die vis.0 Files?
                                            Diese liegen ja sonst unter: /opt/iobroker/iobroker-data/files/vis.0/..

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            682
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            js-controller redis
                                            35
                                            136
                                            46918
                                            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