Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Javascript-Adapter: unterschiedliches Verhalten in unterschiedlichen Instanzen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

[gelöst] Javascript-Adapter: unterschiedliches Verhalten in unterschiedlichen Instanzen

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 2 Kommentatoren 196 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Lenny.CBL Offline
    Lenny.CBL Offline
    Lenny.CB
    Most Active
    schrieb am zuletzt editiert von Lenny.CB
    #1

    Moin zusammen,
    ich brauche mal wieder Hilfe. Bei einer "Fehlersuche" habe ich eine Unregelmäßigkeit entdeckt. Kann mir das nicht erklären.

    Bei mir ist schon lange ein Script am laufen, dass mir Zustände von Sensoren liefert. Hier mal auf das Wesentliche eingekürzt.:

    var logging = true; 
    
    addDeviceCounter("lowbat_ble",          $('channel[state.id=ble.*.battery]'),       function(state){return state<10});
    addDeviceCounter("lowbat_zigbee",       $('channel[state.id=zigbee.*.battery]'),    function(state){return state<=100});
    
    function addDeviceCounter(name, selector, val_to_count) {
    
        function countDevs(obj) {
            var d_count = 0;
            var d_list  = [];
            
            var g_count = 0;
    
            selector.each(function (id, i) {
                var status = getState(id).val;
                var obj    = getObject(id);
                if ((typeof val_to_count === 'function' && val_to_count(status)) ||
                    (typeof val_to_count === 'boolean'  && val_to_count == status)) {
                    //Get parent object
                    var parentChannelId = id.slice(id.lastIndexOf("."));
                        if (name === 'lowbat_zigbee') {
                            var parentDevicelId = id.split(".").slice(0,-1).join(".");
                            var deviceObject    = getObject(parentDevicelId);
                            d_list.push(deviceObject.common.name);
                        }
                        else{
                            var parentDevicelId = id.split(".", 3).join(".");
                            var deviceObject = getObject(parentDevicelId);
                            //remember device name
                            d_list.push(deviceObject.common.name);
                        }
                }                
                ++d_count;
            }); 
    
            if (logging) log(name + "(" + d_count + "): " + d_list);
            
        }
    
        selector.on(function(obj) {
            countDevs(obj);
        });
    
        schedule(" */1 * * * ", countDevs);
            countDevs();
    }
    

    Nun habe ich bemerkt, dass keine Zigbee-Sensoren gefunden werden. Mir ist dann ehr durch Zufall Folgendes aufgefallen:

    in der Javascript-Instanz 0 werden die Zigbee-Sensoren nicht gefunden

    08:49:00.071	info	javascript.0 script.js.Testscripte.test_Inst_0: lowbat_zigbee(0):
    08:49:00.071	info	javascript.0 script.js.Testscripte.test_Inst_0: lowbat_ble(7): TH EG Wohnzimmer
    

    in der Javascript-Instanz 3 werden die Zigbee-Sensoren gefunden

    08:47:00.030	info	javascript.3 script.js.Testscripte.test_Inst_3: lowbat_zigbee(3): taster_Pool_Licht,vibration_Test,cube_EG_WZ
    08:47:09.728	info	javascript.3 script.js.Testscripte.test_Inst_3: lowbat_ble(7): TH EG Wohnzimmer
    

    wie gesagt, ist das Selbe Script, läuft nur auf unterschiedlichen Instanzen und Systemen (Master/Slave).

    hier nochmal die Verteilung (fallst das relevant ist):
    Master --> javascript.0 + javascript.1 + zigbee.0
    Slave1 --> javascript.2
    Slave2 --> javascript 3 + ble.0

    HomoranH 1 Antwort Letzte Antwort
    0
    • Lenny.CBL Lenny.CB

      Moin zusammen,
      ich brauche mal wieder Hilfe. Bei einer "Fehlersuche" habe ich eine Unregelmäßigkeit entdeckt. Kann mir das nicht erklären.

      Bei mir ist schon lange ein Script am laufen, dass mir Zustände von Sensoren liefert. Hier mal auf das Wesentliche eingekürzt.:

      var logging = true; 
      
      addDeviceCounter("lowbat_ble",          $('channel[state.id=ble.*.battery]'),       function(state){return state<10});
      addDeviceCounter("lowbat_zigbee",       $('channel[state.id=zigbee.*.battery]'),    function(state){return state<=100});
      
      function addDeviceCounter(name, selector, val_to_count) {
      
          function countDevs(obj) {
              var d_count = 0;
              var d_list  = [];
              
              var g_count = 0;
      
              selector.each(function (id, i) {
                  var status = getState(id).val;
                  var obj    = getObject(id);
                  if ((typeof val_to_count === 'function' && val_to_count(status)) ||
                      (typeof val_to_count === 'boolean'  && val_to_count == status)) {
                      //Get parent object
                      var parentChannelId = id.slice(id.lastIndexOf("."));
                          if (name === 'lowbat_zigbee') {
                              var parentDevicelId = id.split(".").slice(0,-1).join(".");
                              var deviceObject    = getObject(parentDevicelId);
                              d_list.push(deviceObject.common.name);
                          }
                          else{
                              var parentDevicelId = id.split(".", 3).join(".");
                              var deviceObject = getObject(parentDevicelId);
                              //remember device name
                              d_list.push(deviceObject.common.name);
                          }
                  }                
                  ++d_count;
              }); 
      
              if (logging) log(name + "(" + d_count + "): " + d_list);
              
          }
      
          selector.on(function(obj) {
              countDevs(obj);
          });
      
          schedule(" */1 * * * ", countDevs);
              countDevs();
      }
      

      Nun habe ich bemerkt, dass keine Zigbee-Sensoren gefunden werden. Mir ist dann ehr durch Zufall Folgendes aufgefallen:

      in der Javascript-Instanz 0 werden die Zigbee-Sensoren nicht gefunden

      08:49:00.071	info	javascript.0 script.js.Testscripte.test_Inst_0: lowbat_zigbee(0):
      08:49:00.071	info	javascript.0 script.js.Testscripte.test_Inst_0: lowbat_ble(7): TH EG Wohnzimmer
      

      in der Javascript-Instanz 3 werden die Zigbee-Sensoren gefunden

      08:47:00.030	info	javascript.3 script.js.Testscripte.test_Inst_3: lowbat_zigbee(3): taster_Pool_Licht,vibration_Test,cube_EG_WZ
      08:47:09.728	info	javascript.3 script.js.Testscripte.test_Inst_3: lowbat_ble(7): TH EG Wohnzimmer
      

      wie gesagt, ist das Selbe Script, läuft nur auf unterschiedlichen Instanzen und Systemen (Master/Slave).

      hier nochmal die Verteilung (fallst das relevant ist):
      Master --> javascript.0 + javascript.1 + zigbee.0
      Slave1 --> javascript.2
      Slave2 --> javascript 3 + ble.0

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @Lenny-CB
      I
      Laufen beide instanzen auf dem host, an dem die Hardware hängt?

      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 -

      Lenny.CBL 1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

        @Lenny-CB
        I
        Laufen beide instanzen auf dem host, an dem die Hardware hängt?

        Lenny.CBL Offline
        Lenny.CBL Offline
        Lenny.CB
        Most Active
        schrieb am zuletzt editiert von
        #3

        @Homoran
        nein
        Master --> javascript.0 + javascript.1 + zigbee.0
        Slave1 --> javascript.2
        Slave2 --> javascript 3 + ble.0

        und es wird sogar noch schlimmer. Grad nochmal die Instanz auf 1 gewechselt, da geht es:

        09:07:27.607	info	javascript.1 script.js.Testscripte.test_Inst_1: lowbat_ble(7):
        09:07:27.607	info	javascript.1 script.js.Testscripte.test_Inst_1: lowbat_zigbee(3): taster_Pool_Licht,vibration_Test,cube_EG_WZ
        

        Zusammenfassung: das Script läuft also korrekt auf Instanz 1,2,3 (also auf dem Master und beiden Slaves)
        nur auf Instanz 0 auf dem Master läuft es nicht.

        Lenny.CBL 1 Antwort Letzte Antwort
        0
        • Lenny.CBL Lenny.CB

          @Homoran
          nein
          Master --> javascript.0 + javascript.1 + zigbee.0
          Slave1 --> javascript.2
          Slave2 --> javascript 3 + ble.0

          und es wird sogar noch schlimmer. Grad nochmal die Instanz auf 1 gewechselt, da geht es:

          09:07:27.607	info	javascript.1 script.js.Testscripte.test_Inst_1: lowbat_ble(7):
          09:07:27.607	info	javascript.1 script.js.Testscripte.test_Inst_1: lowbat_zigbee(3): taster_Pool_Licht,vibration_Test,cube_EG_WZ
          

          Zusammenfassung: das Script läuft also korrekt auf Instanz 1,2,3 (also auf dem Master und beiden Slaves)
          nur auf Instanz 0 auf dem Master läuft es nicht.

          Lenny.CBL Offline
          Lenny.CBL Offline
          Lenny.CB
          Most Active
          schrieb am zuletzt editiert von
          #4

          Update:
          Thema ist erst einmal vom Tisch.
          Ich hatte grad für Instanz.0 auf "debug" umgestellt, nach dem Neustart der Instanz wurden die Sensoren wieder gefunden.

          Wenn mir das Verhalten jemand erklären könnte?!

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          693

          Online

          32.4k

          Benutzer

          81.5k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe