Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Problem mit for schleife und exec

    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

    Problem mit for schleife und exec

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Farmer-cb last edited by

      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]
      
      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        @Farmer-cb:

        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.

        1 Reply Last reply Reply Quote 0
        • F
          Farmer-cb last edited by

          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

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

          Support us

          ioBroker
          Community Adapters
          Donate

          788
          Online

          31.7k
          Users

          79.8k
          Topics

          1.3m
          Posts

          2
          3
          612
          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