Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script zum hochrechnen des Stromverbrauchs

    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

    Script zum hochrechnen des Stromverbrauchs

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

      Kann sowas funktionieren oder ist da ein Denkfehler drin?

      schedule('{"time":{"exactTime":true,"start":"00:01"},"period":{"days":1}}', async function () {
        setState("0_userdata.0.Strom.Hochrechnung"/*Hochrechnung*/, (parseFloat((parseFloat(getState("0_userdata.0.Stromverbrauch.Verbrauch_Abrechnungsjahr").val) / formatDate(new Date(), "j"))) * 365));
      });
      

      Soweit ich das gelesen habe müsste ich mit dem Befehl
      date +%j
      ja den aktuellen Tag des Jahres ausggeben bekommen. Aber ich habe keine Ahnung ob das unter Javascript so umsetzbar ist.

      1 Reply Last reply Reply Quote 0
      • arteck
        arteck Developer Most Active last edited by

        @chaot gesehen

        https://forum.iobroker.net/topic/13600/erledigt-aktuellen-tag-des-jahres-errechnen

        Chaot 1 Reply Last reply Reply Quote 0
        • Chaot
          Chaot @arteck last edited by

          @arteck
          Danke für den Link. Den habe ich gestern gesehen und ausprobiert.
          Mit der Konsolenausgabe kam irgendwie nichts und wenn ich es versucht habe in einen Datenpunkt zu schreiben kam eine Fehlermeldung:

          
          javascript.0 2022-06-27 08:38:00.048	error	at processTimers (node:internal/timers:502:7)
          javascript.0 2022-06-27 08:38:00.048	error	at listOnTimeout (node:internal/timers:559:17)
          javascript.0 2022-06-27 08:38:00.048	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
          javascript.0 2022-06-27 08:38:00.047	error	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
          javascript.0 2022-06-27 08:38:00.047	error	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
          javascript.0 2022-06-27 08:38:00.046	error	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1408:34)
          javascript.0 2022-06-27 08:38:00.046	error	at Object.<anonymous> (script.js.Strom.TagDesJahres:9:58)
          javascript.0 2022-06-27 08:38:00.040	error	Error in callback: TypeError: tag is not a function
          
          schedule("* * * * *", function () {
          // Tag des Jahres
             var jetzt = new Date();
             var Jahr = jetzt.getFullYear();
             var heutestart = new Date(jetzt.setHours(0,0,0,0));
             var neujahr = new Date(Jahr,0,1);
             var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1;
             var tag = Math.ceil(difftage);
             setState("0_userdata.0.TagDesJahres"/*TagDesJahres*/, tag(tag));
          });
          
          
          arteck 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active last edited by mickym

            Gelöscht

            1 Reply Last reply Reply Quote 0
            • arteck
              arteck Developer Most Active @Chaot last edited by arteck

              @chaot sagte in Script zum hochrechnen des Stromverbrauchs:

              setState("0_userdata.0.TagDesJahres"/TagDesJahres/, tag(tag));

              mach doch nicht so kopliziert

              hier ist der Fehler, so muss es sein

              setState("0_userdata.0.TagDesJahres"/*TagDesJahres*/, tag);
              

              aber schau erst obs geht.. ohne den schedule geraffel

              // Tag des Jahres
                 var jetzt = new Date();
                 var Jahr = jetzt.getFullYear();
                 var heutestart = new Date(jetzt.setHours(0,0,0,0));
                 var neujahr = new Date(Jahr,0,1);
                 var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1;
                 var tag = Math.ceil(difftage);
                 log.console("tag ----------> " + tag);
              
              Chaot 1 Reply Last reply Reply Quote 0
              • Chaot
                Chaot @arteck last edited by

                @arteck sagte in Script zum hochrechnen des Stromverbrauchs:

                log.console("tag ----------> " + tag);

                Mag mich nicht 😠
                Ich hatte noch eine Fehlermeldung in der Rechenzeile (6) die ich mit .getTime wegbekommen habe.
                log.console gibt eine Fehlermeldung und unter console.log kommt keine Ausgabe.

                // Tag des Jahres
                   var jetzt = new Date();
                   var Jahr = jetzt.getFullYear();
                   var heutestart = new Date(jetzt.setHours(0,0,0,0)).getTime();
                   var neujahr = new Date(Jahr,0,1).getTime();
                   var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1;
                   var tag = Math.ceil(difftage);
                   console.log("tag ----------> " + tag);
                
                arteck 1 Reply Last reply Reply Quote 0
                • arteck
                  arteck Developer Most Active @Chaot last edited by arteck

                  @chaot dann andersrum.. verwechsel ich immrt

                  log.console("tag ----------> " + tag);
                  
                  Chaot 1 Reply Last reply Reply Quote 0
                  • Chaot
                    Chaot @arteck last edited by

                    @arteck
                    Kommt zwar auch nichts in der Konsole, aber das Teil läuft!!!!!!

                    // Hochrechnung
                       var jetzt = new Date();
                       var Jahr = jetzt.getFullYear();
                       var heutestart = new Date(jetzt.setHours(0,0,0,0)).getTime();
                       var neujahr = new Date(Jahr,0,1).getTime();
                       var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1;
                       var tag = Math.ceil(difftage);
                        setState("0_userdata.0.Strom.Hochrechnung"/*Hochrechnung*/, ((getState("0_userdata.0.Stromverbrauch.Verbrauch_Abrechnungsjahr").val) / tag) * 365);
                    
                    
                    Chaot 1 Reply Last reply Reply Quote 0
                    • Chaot
                      Chaot @Chaot last edited by

                      @chaot
                      Jetzt noch die Kommastellen wegbekommen und ich bin zufrieden 😊

                      Chaot 1 Reply Last reply Reply Quote 0
                      • Chaot
                        Chaot @Chaot last edited by

                        Das Script funktioniert so wie ich das will.
                        Danke @arteck für die Tips und Hinweise in die richtige Richtung.

                        // Hochrechnung Jahresverbrauch
                        schedule("0,1 0 * * *", async function () {
                           var jetzt = new Date();
                           var Jahr = jetzt.getFullYear();
                           var heutestart = new Date(jetzt.setHours(0,0,0,0)).getTime();
                           var neujahr = new Date(Jahr,0,1).getTime();
                           var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1;
                           var tag = Math.ceil(difftage);
                           setState("0_userdata.0.Strom.Hochrechnung"/*Hochrechnung*/, (((getState("0_userdata.0.Stromverbrauch.Verbrauch_Abrechnungsjahr").val) / tag) * 365).toFixed(0));
                        });
                        
                        1 Reply Last reply Reply Quote 1
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        579
                        Online

                        31.9k
                        Users

                        80.1k
                        Topics

                        1.3m
                        Posts

                        javascript
                        3
                        11
                        578
                        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