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 -
@Wlad sagte:
Dann ändere ich folgendermassen und der Compiler schimpft...
on({id:BadThermostats[0]+"CONTROL_MODE", change:"ne"}, function() { checkRoom(Badthermostats); });
-
@paul53
Absolute Spitze!
Vilen Dank!