Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Javascript-Adapter: unterschiedliches Verhalten in unterschiedlichen Instanzen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • Lenny.CB
      Lenny.CB Most Active last edited by 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

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Lenny.CB last edited by

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

        Lenny.CB 1 Reply Last reply Reply Quote 0
        • Lenny.CB
          Lenny.CB Most Active @Homoran last edited by

          @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.CB 1 Reply Last reply Reply Quote 0
          • Lenny.CB
            Lenny.CB Most Active @Lenny.CB last edited by

            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 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            672
            Online

            31.8k
            Users

            80.0k
            Topics

            1.3m
            Posts

            2
            4
            174
            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