NEWS
Problem mit for schleife und exec
-
Hallo
irgendwie will mein script nicht funktionieren,
habe eine for schleife (die funktioniert) die eine exec-funktion (welche auch funktioniert) enthält,
nun mein Problem
in der for schleife (z.B zahl aus array auslesen an exec übergeben die in der exec-funktion auch benötigt wird) habe ich eine variable, die ich in der exec-funktion benötige., leider sieht es so aus, als ob zuerst die Schleife durchläuft und erst dann in die Exec gesprungen wird.
`var raum_id=new Array( '20' //Küche 19 ,'7' //Schlafzimmer 6 ,'8' //Wohnzimmer 7 ,'10' //Bad 9 ,'3' //Büro 2 ,'4' //Kinderzimmer 3 ); function heizung() { var result =getState("javascript.0.Daten.dss.heizung").val; var daten = JSON.parse(result); var raumname =new Array(); var raumfeuchte =new Array(); var raumid =new Array(); for (var i = 0;i <raum_id.length;i++) {/raumname[i]="daten.result.zones[raum_id[i]].name;" if/(daten.result.zones[raum_id[i]].values.length="">1) {raumfeuchte[i] = daten.result.zones[raum_id[i]].values[1].HumidityValue;}else{raumfeuchte[i] =0;} raumid = daten.result.zones[raum_id[i]].id; createState('javascript.0.Daten.dss.raum_'+raumid, false, {name: raumname[i]}); log(' raumid: '+raumid+' array_nr: '+raum_id[i]+' raumname: '+raumname[i]+'raumfeuchte: '+raumfeuchte[i]+'%'); exec('wget --no-check-certificate -O - -q "https://www.xxx.yyy.zz:8080/json/zone/getTemperatureControlStatus?token='+sesToken+'&id='+raumid+'"', function (error, result, stderr) { raumdaten = JSON.parse(result); raummodus = modus[raumdaten.result.OperationMode]; solltemp = raumdaten.result.NominalValue; isttemp = raumdaten.result.TemperatureValue; ventil = raumdaten.result.ControlValue; log ('raumid:' +raumid+ ' raummodus: '+raummodus+' Soll: '+solltemp+'°C Ist: '+isttemp+'°C Ventilstellung: '+ventil+'%') ; setState("javascript.0.Daten.dss.raum_"+raumid,result); }); } }</raum_id.length;i++)>` im log steht: <u>~~[u]~~hier läuft die for-schleife:[/u]</u> 20:44:26.896 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid: 10[/b]** array_nr: 20 raumname: Kücheraumfeuchte: 38.975% 20:44:26.896 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid: 24[/b]** array_nr: 7 raumname: Schlafzimmerraumfeuchte: 57.325% 20:44:26.897 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid: 6[/b]** array_nr: 8 raumname: Wohnzimmerraumfeuchte: 35.375% 20:44:26.897 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid: 3[/b]** array_nr: 10 raumname: Badraumfeuchte: 0% 20:44:26.898 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid: 2[/b]** array_nr: 3 raumname: Büroraumfeuchte: 0% 20:44:26.898 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid: 8[/b]** array_nr: 4 raumname: Kinderzimmerraumfeuchte: 36.15% 20:44:26.898 [info] javascript.0 script.js.common.dss.Heizung: registered 0 subscriptions and 0 schedules <u>~~[u]~~hier die exec:[/u]</u> 20:44:26.991 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid:8[/b]** raummodus: Komfort Soll: 20°C Ist: 19.925°C Ventilstellung: 41% 20:44:26.994 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid:8[/b]** raummodus: Eco Soll: 20°C Ist: 20.375°C Ventilstellung: 15% 20:44:27.032 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid:8[/b]** raummodus: Komfort Soll: 22°C Ist: 21.95°C Ventilstellung: 74% 20:44:27.069 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid:8[/b]** raummodus: Komfort Soll: 23.5°C Ist: 24.15°C Ventilstellung: 38% 20:44:27.070 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid:8[/b]** raummodus: Kühl Soll: 5°C Ist: 16.925°C Ventilstellung: 0% 20:44:27.166 [info] javascript.0 script.js.common.dss.Heizung: **~~[b]~~raumid:8[/b]** raummodus: Eco Soll: 18°C Ist: 18°C Ventilstellung: 23% **~~[b]~~irgendwie kommt die variable raumid erst beim letzte schleifendurchlauf zur exec-funktion[/b]** was mach ich da verkehrt[/i][/i][/i][/i][/i][/i][/i]
-
leider sieht es so aus, als ob zuerst die Schleife durchläuft und erst dann in die Exec gesprungen wird. `
Die Exec-Funktion wird jedesmal nur angeschubst und es geht in der Schleife weiter. Die Schleife ist schneller durchlaufen als der erste Exec-Aufruf sein Ergebnis in der Callback-Funktion liefert. -
ah so, jetzt geht ein lichtlein auf :shock:
gibt es eine möglichkeit die schleife so lange anzuhalten bis die exec durch ist, oder so ähnlich