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. Parmeter in der on() Funktion übergeben

NEWS

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

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

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

Parmeter in der on() Funktion übergeben

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
3 Beiträge 2 Kommentatoren 318 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.
  • W Offline
    W Offline
    Wlad
    schrieb am zuletzt editiert von
    #1

    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

    paul53P 1 Antwort Letzte Antwort
    0
    • W Wlad

      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

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @Wlad sagte:

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

      on({id:BadThermostats[0]+"CONTROL_MODE", change:"ne"},  function() {
         checkRoom(Badthermostats);
      });
      

      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

      W 1 Antwort Letzte Antwort
      1
      • paul53P paul53

        @Wlad sagte:

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

        on({id:BadThermostats[0]+"CONTROL_MODE", change:"ne"},  function() {
           checkRoom(Badthermostats);
        });
        
        W Offline
        W Offline
        Wlad
        schrieb am zuletzt editiert von
        #3

        @paul53
        Absolute Spitze!
        Vilen Dank!

        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

        806

        Online

        32.4k

        Benutzer

        81.6k

        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