Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script täglich ausführen

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Script täglich ausführen

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

      Hallo!
      Ich würde gerne das dieses Script täglich um 23:50 ausführt wird und die Daten geschrieben werden!
      Was muss ich ändern?
      Danke!
      Falko

      const idJson = "gruenbeck.0.softliQ.D/BS50006089.water";
      
      const path = "0_userdata.0.Gruenbeck.Wasserverbrauch.";
      
       
      
      if(!existsState(path + '0.Nummer')) {
      
          for(let i = 0; i < 3; i++) {
      
              createState(path + i + '.Datum', '', {type: 'string', name: 'Datum, Uhrzeit', role: 'info'}); 
      
              createState(path + i + '.Verbrauch', '', {type: 'number', name: 'Verbrauch', role: 'info'});
      
          }
      
      }
      
       
      
      on(idJson, function(dp) {
      
          let arr = JSON.parse(dp.state.val);
      
          let anzahl = arr.length;
      
          if(anzahl > 3) anzahl = 3;
      
          for(let i = 0; i < anzahl; i++) {
      
              setState(path + i + '.Datum', arr[i].date, true); 
      
              setState(path + i + '.Verbrauch', arr[i].value, true);
      
          }
      
      });
      
      paul53 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @Kellerassel75 last edited by

        @kellerassel75 sagte: täglich um 23:50 ausführt wird

        Siehe Doku.

        1 Reply Last reply Reply Quote 1
        • K
          Kellerassel75 last edited by

          Ich habe es nicht hin bekommen!
          Welche Zeile muss ich ändern?
          Danke!
          Falko

          R 1 Reply Last reply Reply Quote 0
          • R
            reutli @Kellerassel75 last edited by

            @kellerassel75

            Ganz ehrlich:
            Wenn Du von Javascript noch keine Ahnung hast, warum arbeitest Du dann damit?

            Stell das Script doch mal in Blockly nach, dann ist das mit dem schedule auch nicht das Problem.

            Es nützt Dir nichts, ein Skript zu kopieren, wenn Du nicht verstanden hast, was es macht und wie es funktioniert.

            Ich hoffe ich darf solch' konstruktives feedback geben...

            Ansonsten sieht es m.E. aber korrekt dann so aus:

            schedule("59 23 * * *", async function () {
            
            const idJson = "gruenbeck.0.softliQ.D/BS50006089.water";
             
            const path = "0_userdata.0.Gruenbeck.Wasserverbrauch.";
             
             
             
            if(!existsState(path + '0.Nummer')) {
             
                for(let i = 0; i < 3; i++) {
             
                    createState(path + i + '.Datum', '', {type: 'string', name: 'Datum, Uhrzeit', role: 'info'}); 
             
                    createState(path + i + '.Verbrauch', '', {type: 'number', name: 'Verbrauch', role: 'info'});
             
                }
             
            }
             
             
             
            on(idJson, function(dp) {
             
                let arr = JSON.parse(dp.state.val);
             
                let anzahl = arr.length;
             
                if(anzahl > 3) anzahl = 3;
             
                for(let i = 0; i < anzahl; i++) {
             
                    setState(path + i + '.Datum', arr[i].date, true); 
             
                    setState(path + i + '.Verbrauch', arr[i].value, true);
             
                }
            
            });
            
            1 Reply Last reply Reply Quote 0
            • K
              Kellerassel75 last edited by

              Da hast du vollkommen recht. Ich versuche, es zu verstehen. Einige Zeilen kann ich auch lesen. Ich dachte, ich komme schneller damit zurecht. Leider fehlt mir die Zeit.
              Deshalb folgende Frage:
              Du hast nun oben die Zeit eingetragen. Jetzt wird es ausgeführt zu einer bestimmten Zeit und bei Änderung! Richtig?
              Ich habe die Zeile gesucht, wo bei Änderung das ausgeführt wird!
              "let arr = JSON.parse(dp.state.val);" ist das richtig?
              Ich wollte diesen Wert ändern, um die Automatik zu ändern.
              Vielen Dank für die Hilfe!
              Ich gelobe Besserung!
              Falko

              1 Reply Last reply Reply Quote 0
              • K
                Kellerassel75 last edited by

                Es gibt so viele Möglichkeiten.
                Javascript, Blockly, Node Red.
                Es ist nicht so einfach, die beste Möglichkeit zu finden.
                Ich bin mir noch nicht sicher, was für mich das Richtige ist.
                Ich versuche mich überall ein wenig einzuarbeiten, um das Richtige für mich zu finden.
                Falko

                R 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Kellerassel75 last edited by paul53

                  @kellerassel75
                  Ersetze

                  on(idJson, function(dp) {
                      let arr = JSON.parse(dp.state.val);
                  

                  durch

                  schedule('59 23 * * *', function () {
                      let arr = JSON.parse(getState(idJson).val);
                  

                  Keine Trigger innerhalb von Triggern (schedule) verwenden!

                  R 1 Reply Last reply Reply Quote 0
                  • R
                    reutli @paul53 last edited by

                    @paul53

                    Wo Du Recht hast hast Du eindeutig Recht - deshalb bleibe ich erst einmal bei Blockly 😬

                    @Kellerassel75
                    Siehst Du, so schnell passieren Fehler wenn man nicht weiss was man tut...

                    1 Reply Last reply Reply Quote 0
                    • R
                      reutli @Kellerassel75 last edited by

                      @kellerassel75 sagte in Script täglich ausführen:

                      Javascript, Blockly, Node Red.

                      Zum Start von Abläufen und Skripten ist Blockly meines Erachtens die intuitivste Art.
                      NodeRed geht auch, klar, aber mir persönlich war das am Anfang etwas zu intransparent (ist aber Geschmacksache).

                      Für jemand der als Developer unterwegs ist, wird Javascript natürlich das Richtige sein.

                      Wie Du richtig erkannt hast, ist es wichtig zu wissen, was man tut und was das Skript tut, sonst hilft es einem genau so lange bis sich was ändert und nichts mehr funktioniert.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      1.0k
                      Online

                      31.6k
                      Users

                      79.4k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      297
                      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