Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Phlixx

    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

    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 3
    • Best 0
    • Groups 1

    Phlixx

    @Phlixx

    0
    Reputation
    17
    Profile views
    3
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Phlixx Follow
    Starter

    Latest posts made by Phlixx

    • RE: Array "undefined" und obj.deviceID "null" bei Trigger

      @paul53 Darauf muss man mal kommen.
      Dann kann das Array zur Laufzeit ja weg 😉

      Danke Dir, Paul!
      Gruß Phlixx

      Falls jemand auf der Suche vorbei schaut, einfach das Array mit den DeviceIDs der eigenen Geräte füllen. Rest sollte dank @paul53 jetzt so gehen ...

      
      var thermostate = new Array('maxcul.0.JMD300xxxx','maxcul.0.MEQ145xxxx','maxcul.0.MEQ145xxxx','maxcul.0.JMD301xxxx');
      //Array mit den DeviceIDs der eigenen Geräte füllen
      
      for (var i = 0;i <thermostate.length;i++) {
          createState(thermostate[i]+'.countdown', 0); // falls noch nicht existent
          createState(thermostate[i]+'.afterCount', false);
          
          on(thermostate[i]+'.mode', function (obj) { //je DeviceID einen Listener registrieren
              // geht nur mit obj.channelId, nicht obj.deviceId
              if (obj.newState.val === 3) {
                  setState(obj.channelId+'.countdown', 300);
                  count(obj.channelId);
              }    
          });
      }
      
      function count(thermostat) { 
      // mit diesem Sekundentimer (setTimeOut(...,1000) bin ich nicht glücklich, im Frontent sieht es unruhig aus, da die Updates nicht sekündlich kommen... ggs. als Minuten darstellen...
          setTimeout(function () {
              var timer = getState(thermostat+'.countdown').val;
              if (timer > 1) {
                  setState(thermostat+'.countdown', timer - 1);
                  count(thermostat);
              } else {
                  setState(thermostat+'.countdown', 0);
                  setState(thermostat+'.afterCount', true);
              }
          }, 1000);
      }
      
      
      posted in JavaScript
      Phlixx
      Phlixx
    • RE: Array "undefined" und obj.deviceID "null" bei Trigger

      Oder Kurzfassung:

      Warum komme ich nicht an die deviceID des auslösenden Objekts?

      obj.newState.val --> 3

      obj.deviceID --> null

      Muss ich was in ioBroker umstellen?

      Danke!

      (Das mit dem Array war nur der hilflose Versuch eines Workarounds für obiges Problem

      posted in JavaScript
      Phlixx
      Phlixx
    • Array "undefined" und obj.deviceID "null" bei Trigger

      Hallo Community,

      brauche Eure Hilfe, stehe auf dem Schlauch.

      Hintergrund:
      Ich erstelle in einem Skript mit Start des Skripts ein Array von Datenpunkten, um darauf jeweils einen Listener zu registrieren. Das funktioniert ("registered 4 subscriptions").

      Mit Auslösen des Triggers (Wert 3)

      • hat obj.newState.val den Wert 3 (prima)
      • ist obj.objectID aber null und
      • thermostateTrigger[i] undefined.

      Was kann ich tun? Kann ich thermostateTrigger[i] irgendwie persistent zur Laufzeit bekommen, dass die function() bei Aufruf ihre banalen Befehle ausführen kann?

      Danke!
      Phlixx

      javascript.0	2020-10-23 10:42:43.147	info	(21842) script.js.Counter.CountdownBoostMaxEQtest: Countdown Trigger: undefined-null, Wert:3
      javascript.0	2020-10-23 10:42:40.110	info	(21842) script.js.Counter.CountdownBoostMaxEQtest: registered 4 subscriptions and 0 schedules
      javascript.0	2020-10-23 10:42:40.110	info	(21842) script.js.Counter.CountdownBoostMaxEQtest: subscribe: {"pattern":{"id":"maxcul.0.JMD301xxxx.mode","change":"ne","q":0},"name":"script.js.Counter.CountdownBoostMaxEQtest"}
      javascript.0	2020-10-23 10:42:40.109	info	(21842) script.js.Counter.CountdownBoostMaxEQtest: subscribe: {"pattern":{"id":"maxcul.0.MEQ145xxxx.mode","change":"ne","q":0},"name":"script.js.Counter.CountdownBoostMaxEQtest"}
      javascript.0	2020-10-23 10:42:40.107	info	(21842) script.js.Counter.CountdownBoostMaxEQtest: subscribe: {"pattern":{"id":"maxcul.0.MEQ145xxxx.mode","change":"ne","q":0},"name":"script.js.Counter.CountdownBoostMaxEQtest"}
      javascript.0	2020-10-23 10:42:40.106	info	(21842) script.js.Counter.CountdownBoostMaxEQtest: subscribe: {"pattern":{"id":"maxcul.0.JMD300xxxx.mode","change":"ne","q":0},"name":"script.js.Counter.CountdownBoostMaxEQtest"}
      
      
      var thermostate = new Array('maxcul.0.JMD300xxxx','maxcul.0.MEQ145xxxx','maxcul.0.MEQ145xxxx','maxcul.0.JMD301xxxx');
      var thermostateTrigger = new Array();
      
      for (var i = 0;i <thermostate.length;i++) {
          thermostateTrigger[i] = thermostate[i]+'.mode';
          createState(thermostateTrigger[i]+'.countdown', 300);
          createState(thermostateTrigger[i]+'.afterCount', false);
          createState(thermostateTrigger[i]+'.countTrigger', false);
      
          on(thermostateTrigger[i], function (obj) {
          log ('Countdown Trigger: '+thermostateTrigger[i]+'-'+obj.deviceId+', Wert:'+obj.newState.val);
          if (obj.newState.val === 3) {
              setState(thermostateTrigger[i]+'.countdown', 300);
              setState(thermostateTrigger[i]+'.countTrigger', true);
              count(thermostateTrigger[i]);
          }    
      });
      }
      
      function count(thermostate) {
          setTimeout(function () {
              var timer = getState(thermostate+'.countdown').val;
              if (timer > 1) {
                  setState(thermostate+'.countTrigger', false);
                  setState(thermostate+'.countdown', timer - 1);
                  count(thermostate);
              } else {
                  setState(thermostate+'.countdown', 0);
                  setState(thermostate+'.afterCount', true);
              }
          }, 1000);
      }
      
      
      posted in JavaScript
      Phlixx
      Phlixx
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo