Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Error/Bug
  4. [gelöst] Zweite javascript Instanz

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    146

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.4k

[gelöst] Zweite javascript Instanz

Scheduled Pinned Locked Moved Error/Bug
20 Posts 6 Posters 1.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • GoerschG Offline
    GoerschG Offline
    Goersch
    wrote on last edited by
    #1

    In der Hoffnung hier eine Rückmeldung von den Entwicklern zu bekommen :)

    siehe auch http://forum.iobroker.net/viewtopic.php?f=21&t=6026

    Kurzfassung:

    • Multi-Host mit 2 Raspis

    • auf jedem Raspi läuft eine javascript Instanz (Haupt-Raspi .0 / Neben-Raspi .1)

    • getState().val auf dem Neben-Raspi schlägt fehl:
      > javascript.1 script.js.common.Sonstiges.WOL1: Cannot use sync getState, use callback instead getState("javascript.1.Sonstiges.WOL.PCGNOW", function (err, state){});

    Hab schon mehrere Dinge ausprobiert; krieg es nicht hin.

    1 Reply Last reply
    0
    • GoerschG Offline
      GoerschG Offline
      Goersch
      wrote on last edited by
      #2

      Kann das evtl. mit meiner Multihost Einstellung zusammenhängen? Derzeit ist der Neben-Raspi so eingestellt (Haupt Raspi=192.168.20.3)

      ` > Type of objects DB [(f)ile, ©ouch, (r)edis], default [file]:

      Host of objects DB(file), default[127.0.0.1]: 192.168.20.3

      Port of objects DB(file), default[9001]:

      Type of states DB [(f)file, (r)edis], default [file]: r

      Host of states DB (redis), default[127.0.0.1]: 192.168.20.3

      Port of states DB (redis), default[9000]: 6379

      Host name of this machine [iobroker2]: `

      Muss ich die Einstellungen der object db auch auf redis setzen? Wenn ja: auf welchen Port? Auch auf 6379?

      Georg

      1 Reply Last reply
      0
      • eric2905E Offline
        eric2905E Offline
        eric2905
        wrote on last edited by
        #3

        Moin,

        Du arbeitest mit Redis - zumindest hast Du die Konfiguration so angegeben.
        @Goersch:

        Type of states DB [(f)file, (r)edis], default [file]: r

        Host of states DB (redis), default[127.0.0.1]: 192.168.20.3 `

        Hast Du auf dem Master den Redis-Zugriff auch freigegeben?

        Ohne dem läuft da nix im Multihost-Betrieb.

        Gruß,

        Eric

        Roses are red, violets are blue,

        if I listen to metal, my neighbours do too

        1 Reply Last reply
        0
        • GoerschG Offline
          GoerschG Offline
          Goersch
          wrote on last edited by
          #4

          ja, das funktioniert - ein setState funktioniert und die Verbindung zwischen Haupt und Neben Raspi ist Ok. Es laufen bereits mehrere Instanzen (Cloud, ping, ical) Problemlos auf dem Neben-Raspi. Nur das getState des javascript adapters macht ärger :cry:

          1 Reply Last reply
          0
          • GoerschG Offline
            GoerschG Offline
            Goersch
            wrote on last edited by
            #5

            ich hab die config des Neben-Raspi mal geändert:

            ` > Type of objects DB [(f)ile, ©ouch, (r)edis], default [file]: r

            Host of objects DB(file), default[127.0.0.1]: 192.168.20.3

            Port of objects DB(file), default[9001]: 6379

            Type of states DB [(f)file, (r)edis], default [file]: r

            Host of states DB (redis), default[127.0.0.1]: 192.168.20.3

            Port of states DB (redis), default[9000]: 6379

            Host name of this machine [iobroker2]: `

            So leider keine Verbindung zwischen Haupt und Neben-Raspi.

            1 Reply Last reply
            0
            • HomoranH Do not disturb
              HomoranH Do not disturb
              Homoran
              Global Moderator Administrators
              wrote on last edited by
              #6

              Nicht die objects ändern!

              sondern die redis-config auf dem Master:

              http://www.iobroker.net/?page_id=3068&l … _mit_redis

              Gruß

              Rainer

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Reply Last reply
              0
              • GoerschG Offline
                GoerschG Offline
                Goersch
                wrote on last edited by
                #7

                ist geändert - die verbindung zu redis steht 8-)

                siehe auch hier am Ende des Threads.

                http://forum.iobroker.net/viewtopic.php?f=17&t=365

                Ich stocher gerade im Nebel rum :) und find das Problem nicht.

                1 Reply Last reply
                0
                • apollon77A Offline
                  apollon77A Offline
                  apollon77
                  wrote on last edited by
                  #8

                  Also das Asynchrone sollte so gehen (aber siehe auch Anmerkungen im anderen Thread!)

                  getState(id, function(err, state) { 
                    var status = state.val;
                    ...
                  });
                  

                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                  1 Reply Last reply
                  0
                  • GoerschG Offline
                    GoerschG Offline
                    Goersch
                    wrote on last edited by
                    #9

                    damit läuft es - zumindestens komme ich an den State des Objects ran.

                    Nur hilft mir das leider auch nicht weiter, da der call async läuft. Bei der Abfrage eines States wäre das noch OK und man könnte den Rest der Logik in den asynchronen Callback legen - nur brauch ich natürlich mehrere getStates, womit es etwas schwierig wird

                    8-) mal abgesehen davon, dass es nicht schön ist, wenn man in der Instanz auf dem Neben-Raspi die Zugriffe anders Programmieren muss.

                    1 Reply Last reply
                    0
                    • apollon77A Offline
                      apollon77A Offline
                      apollon77
                      wrote on last edited by
                      #10

                      Ich persönlcih gehe immer so vor das ich mir alle State-Werte quasi als Lokale Variablen hole. Damit entkoppelst Du das holen der Werte und die Skript-Logik.

                      Also quasi per "on(id…) jeden State dem man im Skript brauchst einer variable zuweisen bzw damit aktuell halten. Und dann das Skript in eine Funktion die dann von mehreren Stellen oder direkt in den "on" aufgerufen wird, was dann die lokalen Skript-Variablen benutzt

                      Dann entfällt das "getState" kram immer wieder zu machen :-)

                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                      1 Reply Last reply
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #11

                        @apollon77:

                        Ich persönlcih gehe immer so vor das ich mir alle State-Werte quasi als Lokale Variablen hole. Damit entkoppelst Du das holen der Werte und die Skript-Logik. `
                        Genau so halte ich es auch. Damit vermeidet man auch unnötige Aufrufe der komplexen Funktion getState(id). Prinzip:

                        // ID als String eingeben oder mittels getIdByName('name') ermitteln.
                        var id1 = '...';
                        var id2 = '...';
                        ...
                        
                        // getState für den Skriptstart, falls erforderlich
                        var v1 = getState(id1).val;
                        var v2 = getState(id2).val;
                        ...
                        
                        function auswertung() {
                            Hier werden v1, v2, ... ausgewertet;
                        }
                        
                        auswertung();  // Skriptstart
                        
                        on(id1, function(dp) {  // Änderung des Wertes von id1
                            v1 = dp.state.val;
                            auswertung();
                        });
                        on(id2, function(dp) {
                            v2 = dp.state.val;
                            auswertung();
                        });
                        ...
                        
                        

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        1 Reply Last reply
                        0
                        • GoerschG Offline
                          GoerschG Offline
                          Goersch
                          wrote on last edited by
                          #12

                          das geht sicherlich prinzipiell - funktioniert aber nicht, wenn man die ids zur Laufzeit erst zusammenbaut (bzw. wie in meinem Fall den Zugriff auf die Homematic Geräte via getIdByName macht und den Namen des Gerätes zur Laufzeit zusammenbaut).

                          Ich habe es häufig, dass ich einer Funktion z.B. den Raumnamen übergebe und die Funktion dann die ids selber zusammenbaut, um das setState/getState zu machen. Das ersparrt mir jede Menge gleichen Code, der sich nur durch die ids unterscheiden würde (bzw. wenn ich es so machen würde wie ihr, durch die unterschiedliche Verwendung von Variablen unterscheiden würde).

                          1 Reply Last reply
                          0
                          • apollon77A Offline
                            apollon77A Offline
                            apollon77
                            wrote on last edited by
                            #13

                            Dann hast Du recht … und musst aber ggf mit dem asynchronen leben ... that's JavaScript ;-(

                            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                            1 Reply Last reply
                            0
                            • GoerschG Offline
                              GoerschG Offline
                              Goersch
                              wrote on last edited by
                              #14

                              8-) hab ich befürchtet :|

                              1 Reply Last reply
                              0
                              • GoerschG Offline
                                GoerschG Offline
                                Goersch
                                wrote on last edited by
                                #15

                                mh, ich könnt mir ja auch ein array anlegen, in das die Werte geschrieben werden

                                var values = [];
                                on(....., function(obj) {values[obj.common.name] = obj.state.val;....
                                
                                

                                Dann könnte ich weitermachen wie bisher und müsste das getState nur durch ein value[name] ersetzen (und natürlich für jedes zu lesende Objekt ein on(…) programmieren).

                                Muss ich mal drüber nachdenken tun :geek:

                                1 Reply Last reply
                                0
                                • GoerschG Offline
                                  GoerschG Offline
                                  Goersch
                                  wrote on last edited by
                                  #16

                                  8-) mal ganz abgesehen davon, dass mir nicht wirklich klar ist, warum ein getState auf dem neben-Raspi nicht funktioniert oder nicht funktionieren könnte, ohne dass ich die callbacks nutzen muss.

                                  Aber das kann an meinem wenig vorhandenen javascript wissen liegen….

                                  1 Reply Last reply
                                  0
                                  • BluefoxB Offline
                                    BluefoxB Offline
                                    Bluefox
                                    wrote on last edited by
                                    #17

                                    @Goersch:

                                    8-) mal ganz abgesehen davon, dass mir nicht wirklich klar ist, warum ein getState auf dem neben-Raspi nicht funktioniert oder nicht funktionieren könnte, ohne dass ich die callbacks nutzen muss.

                                    Aber das kann an meinem wenig vorhandenen javascript wissen liegen…. `
                                    Wie sieht es bei dir aus?

                                    Nicht auf alle Zustände beim Start abonnieren: - AN oder AUS?
                                    
                                    1 Reply Last reply
                                    0
                                    • GoerschG Offline
                                      GoerschG Offline
                                      Goersch
                                      wrote on last edited by
                                      #18

                                      mh, unterschiedlich

                                      Haupt-Raspi AUS

                                      Neben-Rasp EIN

                                      Also bei der Instanz, wo das Problem besteht, ist die Option eingeschaltet

                                      1 Reply Last reply
                                      0
                                      • apollon77A Offline
                                        apollon77A Offline
                                        apollon77
                                        wrote on last edited by
                                        #19

                                        Dann schalte das auf dem Neben-Raspi mal auch aus … gehts dann wieder ohne asynchron?

                                        Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                        • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                        • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                        1 Reply Last reply
                                        0
                                        • GoerschG Offline
                                          GoerschG Offline
                                          Goersch
                                          wrote on last edited by
                                          #20

                                          wie nicht anders zu erwarten: das getState funzt jetzt ohne irgendwelche beschwerden :D

                                          Danke, bluefox + apollon77 :)

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          819

                                          Online

                                          32.5k

                                          Users

                                          81.7k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe