Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Parmeter in der on() Funktion übergeben

    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

    Parmeter in der on() Funktion übergeben

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

      Hallo, ich habe eine kleine Triggerfunktion, mit der ich die Thermostate bei der Umstellung Manu-Auto synchronisiere

      var BadThermostats = ['hm-rpc.1.NEQ   .2.','hm-rpc.1.NEQ   .4.'];
      
      on({id:BadThermostats[0]+"CONTROL_MODE",change:"ne"}, function(){   // hier array eintragen
          var arr = BadThermostats;                                       // hier array eintragen
          var status = getState(arr[0]+"CONTROL_MODE").val;
          console.log('stdout: ' + status);
          if(status === 0) {
              for(var i = 0; i<arr.length; i++) 
                  setState(arr[i]+"AUTO_MODE",false);
          }
          else {
              var current=getState(arr[0]+"SET_TEMPERATURE");
              console.log('current.val: ' + current.val);
              for( i = 0; i<arr.length; i++) {
                  setState(arr[i]+"MANU_MODE",current.val);
              } 
          } 
       });
      

      Damit klappt es soweit alles Prima.
      Nun möchte ich das gleiche für ca. 10 weitere Thermostatgruppen erweitern.
      Dann muss ich logischerweise dann den gleichen code 10 Mal kopieren und die arrays dementsprechen anpassen.
      Das ist total unbequem, da die Funktion schon ziemlich erweitert wurde( hier ist nur die vereinfachte Version) und zwecks weiteren Codeanpassungen total unbequem.
      Logisch wäre es natürliceh die Funktion auszulagern und dann ihr die Parameter mit dem entsprechenden Array der Thermostatgruppe übergeben.
      Wenn ich nur die Funkton auslagere

      function checkRoom(){   // hier array eintragen
          var arr = BadThermostats;                                       // hier array eintragen
          var status = getState(arr[0]+"CONTROL_MODE").val;
          console.log('stdout: ' + status);
          if(status === 0) {
              for(var i = 0; i<arr.length; i++) 
                  setState(arr[i]+"AUTO_MODE",false);
          }
          else {
              var current=getState(arr[0]+"SET_TEMPERATURE");
              console.log('current.val: ' + current.val);
              for( i = 0; i<arr.length; i++) {
                  setState(arr[i]+"MANU_MODE",current.val);
              } 
          } 
       }
      
      on({id:BadThermostats[0]+"CONTROL_MODE",change:"ne"},  checkRoom);
      

      Funktioniert ja alles noch, aber ich möchte nun Parameter übergeben.
      Dann ändere ich folgendermassen und der Compiler schimpft...
      io1.png
      Ich komme hier nicht weiter,
      kann mir bitte jemend auf die Sprünge helfen

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

        @Wlad sagte:

        Dann ändere ich folgendermassen und der Compiler schimpft...

        on({id:BadThermostats[0]+"CONTROL_MODE", change:"ne"},  function() {
           checkRoom(Badthermostats);
        });
        
        W 1 Reply Last reply Reply Quote 1
        • W
          Wlad @paul53 last edited by

          @paul53
          Absolute Spitze!
          Vilen Dank!

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

          Support us

          ioBroker
          Community Adapters
          Donate

          685
          Online

          31.8k
          Users

          79.9k
          Topics

          1.3m
          Posts

          javascript
          2
          3
          242
          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