Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. REDIS will be back

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    REDIS will be back

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

      @stephan61:

      Habe heute nach update von host auf 0.11.0 und allen anderen Update versucht redis zu starten.

      Der javascript adapter wird laufend neu gestartet

      wenn ich redis ausschalte geht es ?

      Gruß Stephan `
      Was steht im Logs?

      Ich vermute, dass da bei

      getState('blabla').val

      Abstürzt.

      Ich werde in der nächsten version dann getState abändern:
      > If state does not exist, it will be returned following object: ****{val: null, notExist: true}****

      1 Reply Last reply Reply Quote 0
      • S
        stephan61 last edited by

        Hallo Bluefox es kommt folgender Log eintrag

        516_redis.jpg

        Gruss Stephan

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

          @stephan61:

          Hallo Bluefox es kommt folgender Log eintrag

          filename="redis.JPG" index="0">~~

          Gruss Stephan `
          So wie ich vermutet habe.

          Du musst checken ob

          getState('blbabla') !== null
          
          1 Reply Last reply Reply Quote 0
          • P
            pepp86 last edited by

            Hallo,

            ich habe heute mal auf redis umgeschwenkt, es funktioniert auch alles gut und sehr performant. Allerdings habe ich eine sehr große Datenstruktur unterhalb von javascript. Diese Werte werden nicht automatisch wieder gefüllt. Gibt es eine Möglichkeit alle states vorher zu exportieren und nach dem Wechsel auf redis wieder einzuspielen? Über den Struktur Ex-/Import wird leider nur die Struktur geschrieben, nicht aber die values. Durch die fehlenden Values laufen natürlich die meisten meiner Skripte nicht und es werden somit auch die Daten nicht neu gefüllt.

            Danke und Gruß

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

              @pepp86:

              Hallo,

              ich habe heute mal auf redis umgeschwenkt, es funktioniert auch alles gut und sehr performant. Allerdings habe ich eine sehr große Datenstruktur unterhalb von javascript. Diese Werte werden nicht automatisch wieder gefüllt. Gibt es eine Möglichkeit alle states vorher zu exportieren und nach dem Wechsel auf redis wieder einzuspielen? Über den Struktur Ex-/Import wird leider nur die Struktur geschrieben, nicht aber die values. Durch die fehlenden Values laufen natürlich die meisten meiner Skripte nicht und es werden somit auch die Daten nicht neu gefüllt.

              Danke und Gruß `
              Leider momentan nicht.

              Aber ich kann mir gut vorstellen einen JS-Skript zu schreiben welches alle States ausliest und als JSON speichert.

              Und auch ein Skript welches dann bei REDIS die Werte einspielt. Sollte 10 Zeilen sein. Vielleicht hilft dir jemand.

              1 Reply Last reply Reply Quote 0
              • P
                pepp86 last edited by

                @Bluefox:

                @pepp86:

                Hallo,

                ich habe heute mal auf redis umgeschwenkt, es funktioniert auch alles gut und sehr performant. Allerdings habe ich eine sehr große Datenstruktur unterhalb von javascript. Diese Werte werden nicht automatisch wieder gefüllt. Gibt es eine Möglichkeit alle states vorher zu exportieren und nach dem Wechsel auf redis wieder einzuspielen? Über den Struktur Ex-/Import wird leider nur die Struktur geschrieben, nicht aber die values. Durch die fehlenden Values laufen natürlich die meisten meiner Skripte nicht und es werden somit auch die Daten nicht neu gefüllt.

                Danke und Gruß `
                Leider momentan nicht.

                Aber ich kann mir gut vorstellen einen JS-Skript zu schreiben welches alle States ausliest und als JSON speichert.

                Und auch ein Skript welches dann bei REDIS die Werte einspielt. Sollte 10 Zeilen sein. Vielleicht hilft dir jemand. `

                ok. Habe mir jetzt "Quick&Dirty" die setState befehle ins Log ausgeben lassen und nach der Umstellung in ein Skript gepackt. Nu sind alle States wieder da und regis läuft fehlerfrei bis jetzt.

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

                  Kannst Du Dein quick & Dirty Skript posten? 😉

                  Gesendet von iPad mit Tapatalk

                  1 Reply Last reply Reply Quote 0
                  • P
                    pepp86 last edited by

                    @ruhr70:

                    Kannst Du Dein quick & Dirty Skript posten? 😉

                    Gesendet von iPad mit Tapatalk `

                    Hab mich jetzt noch kurz mit dem Schreiben in eine Datei befasst und folgendes Skript genutzt:

                    var fs = require('fs');
                    
                    var cacheSelectorState = $('state[state.id=javascript.0.*]');
                        cacheSelectorState.each(function (id, i) {
                            var val = getState(id).val;
                    	string = "setState('"+id+"', '"+val+"');\n";
                            fs.appendFileSync("/opt/iobroker/states.txt", string); 
                    });
                    
                    

                    Damit werden alle states aus javascript.0.* in die Datei /opt/iobroker/states.txt als setState Kommando geschrieben. Diese Kommandos kann man dann nach der Umstellung auf redis einfach in ein neues Skript packen und einmalig ausführen.

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

                      perfekt!

                      Danke!!

                      🙂

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

                        @pepp86:

                           string = "setState('"+id+"', '"+val+"');\n";
                        ```` `  
                        

                        Damit sind alle Werte nach der Abarbeitung der setState() vom Typ "string". Das dürfte einige Warnungen des JS-Adapters erzeugen und Probleme machen, wenn man mit den Werten rechnen will.

                        1 Reply Last reply Reply Quote 0
                        • P
                          pepp86 last edited by

                          @paul53:

                          @pepp86:

                             string = "setState('"+id+"', '"+val+"');\n";
                          ```` `  
                          

                          Damit sind alle Werte nach der Abarbeitung der setState() vom Typ "string". Das dürfte einige Warnungen des JS-Adapters erzeugen und Probleme machen, wenn man mit den Werten rechnen will. `

                          var fs = require('fs');
                          
                          var cacheSelectorState = $('state[state.id=javascript.0.*]');
                              cacheSelectorState.each(function (id, i) {
                                  var val = getState(id).val;
                                  type = getObject(id).common.type;
                                  if(type == "number") {
                                      string = "setState('"+id+"', "+val+");\n";
                                  } else {
                                      string = "setState('"+id+"', '"+val+"');\n";
                                  }
                                  fs.appendFileSync("/opt/iobroker/states.txt", string); 
                          });
                          

                          So kann man auch noch den Type abfragen und entsprechend den String ändern. Das hatte ich noch nicht bedacht.

                          Wie gut, dass es Foren gibt 🙂

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

                            @pepp86:

                            So kann man auch noch den Type abfragen und entsprechend den String ändern. Das hatte ich noch nicht bedacht. `
                            Fehlt noch der Test auf Type "boolean". Oder besser

                            var fs = require('fs');
                            
                            var cacheSelectorState = $('state[state.id=javascript.0.*]');
                            cacheSelectorState.each(function (id, i) {
                                var val = getState(id).val;
                                var zk = "setState('"+id+"', "+val+");\n";
                                if(typeof val === "string") zk = "setState('"+id+"', '"+val+"');\n";
                                fs.appendFileSync("/opt/iobroker/states.txt", zk);
                            });
                            
                            1 Reply Last reply Reply Quote 0
                            • P
                              pepp86 last edited by

                              @paul53:

                              @pepp86:

                              So kann man auch noch den Type abfragen und entsprechend den String ändern. Das hatte ich noch nicht bedacht. `
                              Fehlt noch der Test auf Type "boolean". Oder besser

                              var fs = require('fs');
                              
                              var cacheSelectorState = $('state[state.id=javascript.0.*]');
                              cacheSelectorState.each(function (id, i) {
                                  var val = getState(id).val;
                                  var zk = "setState('"+id+"', "+val+");\n";
                                  if(typeof val === "string") zk = "setState('"+id+"', '"+val+"');\n";
                                  fs.appendFileSync("/opt/iobroker/states.txt", zk);
                              });
                              ```` `  
                              

                              Dabei fallen aber bei mir wieder werte durch die als "number" gespeichert sind.

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

                                @pepp86:

                                Dabei fallen aber bei mir wieder werte durch die als "number" gespeichert sind. `
                                Sind die Werte wirklich als "number" gespeichert oder ist nur common.type = "number" ?

                                typeof val ermittelt den tatsächlich gespeicherten Typ.

                                1 Reply Last reply Reply Quote 0
                                • P
                                  pepp86 last edited by

                                  @paul53:

                                  @pepp86:

                                  Dabei fallen aber bei mir wieder werte durch die als "number" gespeichert sind. `
                                  Sind die Werte wirklich als "number" gespeichert oder ist nur common.type = "number" ?

                                  typeof val ermittelt den tatsächlich gespeicherten Typ. `

                                  Jap. typeof val liefert für die Werte number zurück. Gerade getestet.

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

                                    @pepp86:

                                    Dabei fallen aber bei mir wieder werte durch die als "number" gespeichert sind. `
                                    Weshalb dann das ?

                                    1 Reply Last reply Reply Quote 0
                                    • P
                                      PrinzEisenherz1 last edited by

                                      Ich hab da mal ne frage! Lässt sich auch n externer REDIS - Server einbinden? Ich hab iobroker auf einen pi laufen und könnte einen REDIS-Server auf der Synology betreiben! Geht sowas und würde sowas Sinn machen?

                                      Gruß Johnny

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

                                        Dem iobroker ist am Ende egal wo der läuft. Du gibts ja eine IP und nen Port an und dahin verbindet er sich.

                                        Also: sollte kein Problem sein.

                                        "localhost" hat ggf weniger Netzwerklatenz, aber das ist quasi auch schon alles

                                        1 Reply Last reply Reply Quote 0
                                        • P
                                          PrinzEisenherz1 last edited by

                                          Danke für die Info! Jetzt bloß noch ne frage, wo stelle ich bei iobroker dann die IP und den Port für den redis ein?

                                          Gruß Johnny

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            PrinzEisenherz1 last edited by

                                            Halt, Habs gefunden! Stand auf der ersten Seite!

                                            Wer lesen kann ist klar im Vorteil….. Lach

                                            Johnny

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            565
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            23
                                            104
                                            22062
                                            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