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

Ich komme hier nicht weiter,
kann mir bitte jemend auf die Sprünge helfen -
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 auslagerefunction 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...

Ich komme hier nicht weiter,
kann mir bitte jemend auf die Sprünge helfen -
@Wlad sagte:
Dann ändere ich folgendermassen und der Compiler schimpft...
on({id:BadThermostats[0]+"CONTROL_MODE", change:"ne"}, function() { checkRoom(Badthermostats); });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden