Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Wie kann man einem Scheduler Callback einen Wert übergeben?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Wie kann man einem Scheduler Callback einen Wert übergeben?

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      burningfrog last edited by

      Hi Zusammen,
      ich habe einen Skript Frage, hoffentlich hat einer eine gute Idee dazu. Ich möchte dynamisch viele Scheduler anlegen, die dann im Callback jeweils einen übergebenen datapoint state setzen.

      Leider sehe ich keine Möglichkeit dem Callback den Wert zu übergeben. Habt Ihr ne Idee bzw. vielleicht eine Alternative Lösung?

      Hier meine Ausgangssituation:

      Array mit den Einträgen für die Schedules angelegt werden sollen:

      var list = [ 
      {time:"21:31", dp_execute:"a"},
      {time:"21:32", dp_execute:"b"},
      {time:"21:33", dp_execute:"c"},
      ];
      

      In einer Schleife legen ich alle Scheduler an.

      for (var i=0; i<list.length;i++) {
          var item = list[i];
          schedule('{"time":{"exactTime":true,"start":"'+item.time+'"},"period":{"days":1}}', 
              function () {
                  console.log(item.dp_execute);
              });
      }
      

      Der Callback gibt den letzten Inhalt der var item aus:

      20:33:00.011	info	javascript.0 (2568927) script.js.licht.test: c
      20:34:00.008	info	javascript.0 (2568927) script.js.licht.test: c
      ...
      

      Habt Ihr ne Idee wie ich dem Callback die variable item übergeben kann damit a,b,c anstelle von c,c,c ausgegben würde.

      Danke für Eure Tipps.
      Tobias

      B 1 Reply Last reply Reply Quote 0
      • B
        burningfrog @burningfrog last edited by

        @burningfrog

        neuer Scope für item, damit scheint es zu gehen:

        var list = [ 
        {time:"22:33", dp_execute:"a"},
        {time:"22:34", dp_execute:"b"},
        {time:"22:35", dp_execute:"c"},
        ];
        
        for (var i=0; i<list.length;i++) {
            var item = list[i];
            
            (function(item) {
                schedule('{"time":{"exactTime":true,"start":"'+item.time+'"},"period":{"days":1}}',
                    function () {
                        console.log(item.dp_execute);
                    }
                );
            })(item);
        }
        
        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        415
        Online

        31.6k
        Users

        79.6k
        Topics

        1.3m
        Posts

        1
        2
        94
        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