Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Frage an Java Experten zum Script.

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Frage an Java Experten zum Script.

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

      Hallo Leute,

      ich versuche ein Script für meine Bedürfnisse anzupassen.

      Das Java-Script soll alle 3 min. von einer Webseite den Zählerstand abfragen.

      Ich finde im Java Script folgende Zeile:

      schedule ("* * * * *", function(){ // alle 3 Minuten aufrufen

      Welcher Wert ist Zur Zeit eingestellt?

      Handels sich hier um ein Cron-Daemon Eintrag???

      Wenn ich den Wert auf drei min. eingestellt haben möchte, sollte es nicht so aussehen? Oder liege ich da komplet daneben…?

      */3 * * * *

      schedule ("*/3 * * * *", function(){ // alle 3 Minuten aufrufen

      var request = require('request');
      var parseString = require('xml2js').parseString;
      
      var url="http://192.168.1.43"; // hier die Adresse der Webseite eintragen
      
      var GaszaehlerId = "Gaszaehler.Wert"; // Der Wert steht in "javascript.0."
      
      function processData(body){
         parseString(body, function (err, result) {
            // log(JSON.stringify(result.MyHome.ESP8266_GasMeter[0].data[4].$.value));
            if (!err)
                setState(GaszaehlerId,result.MyHome.ESP8266_GasMeter[0].data[4].$.value);
         });   
      }
      
      createState(GaszaehlerId,
                0, 
                false,
                {
                  type:"number",
                  unit:"m³"
                });
      
      schedule ("* * * * *", function(){ // alle 3 Minuten aufrufen
          request({  
              uri: url,
              method: "GET",
              timeout: 10000,
              followRedirect: true,
              maxRedirects: 10
          }, function(error, response, body) {
              if (!error) {
                  if (response.statusCode == 200) {
                      processData(body);    
                  }
              } else log("Fehler: "+error);
          });    
      })
      
      1 Reply Last reply Reply Quote 0
      • Thisoft
        Thisoft last edited by

        JA, das hast du vollkommen richtig erkannt

        schedule ("*/3 * * * *", function(){
        

        ruft die Funktion alle 3 Minuten auf.

        1 Reply Last reply Reply Quote 0
        • T
          tempestas last edited by

          bin kein Experte, sollte aber stimmen.

          Teil 1 sind die Minuten. Du willst, dass es immer bei durch drei teilbaren Minuten ausgeführt wird.

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

            Danke Thisoft,

            auf Dich kann ma sich immer verlassen.

            Kannst Du mir noch mal sagen, was eingestellt worden war?

            Etwa nur einmal beim Reboot ?

            *     *     *     *     *  Befehl der ausgeführt werden soll
            -     -     -     -     -
            |     |     |     |     |
            |     |     |     |     +----- Wochentag (0 - 7) (Sonntag ist 0 und 7; oder Namen, siehe unten)
            |     |     |     +------- Monat (1 - 12)
            |     |     +--------- Tag (1 - 31)
            |     +----------- Stunde (0 - 23)
            +------------- Minute (0 - 59; oder Namen, siehe unten)
            
            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 last edited by

              @knopers1:

              was eingestellt worden war? Etwa nur einmal beim Reboot ? `
              Nein, jede Minute.

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

                Danke Paul53

                habe noch im Netzt so ein Beispiel gefunden…

                Einen Cronjob jede Minute ausführen

                /1 * * * * /user/skript-pfad/skript.sh

                bin jetzt aber komplett verwirrt...

                es dürfen max. 5 Sternchen sein.... Sterne stehen für immer! Richtig?


                Für "alle drei min" sollte das dann so aussehen:

                /3 * * * *

                Für "jede min." /1 * * * *

                Kollege Thisoft gibt aber noch mal das hier:

                schedule ("*/3 * * * *", function(){

                Ist dort vorne ein Stern nicht zuviel? Versehen oder doch richtig?

                Sollte es nicht so Aussehen?

                schedule ("/3 * * * *", function(){

                Sorry für die Fragen.

                *     *     *     *     *  Befehl der ausgeführt werden soll
                -     -     -     -     -
                |     |     |     |     |
                |     |     |     |     +----- Wochentag (0 - 7) (Sonntag ist 0 und 7; oder Namen, siehe unten)
                |     |     |     +------- Monat (1 - 12)
                |     |     +--------- Tag (1 - 31)
                |     +----------- Stunde (0 - 23)
                +------------- Minute (0 - 59; oder Namen, siehe unten)
                
                1 Reply Last reply Reply Quote 0
                • AlCalzone
                  AlCalzone Developer last edited by

                  https://github.com/node-schedule/node-s … scheduling

                  Der JavaScript-Adapter nutzt intern das obige Modul, was mit einem 6-stelligen Code Sekunden unterstützt.

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

                    Geil, demnach scheint die Antwort vom Thisoft richtig sein Stimmts?

                    schedule ("*/3 * * * *", function(){
                    
                    1 Reply Last reply Reply Quote 0
                    • AlCalzone
                      AlCalzone Developer last edited by

                      Woops, ich hab da wohl ein Leerzeichen zu viel gesehen. Kommando zurück!

                      "*/3 * * * *" bedeutet alle 3 Minuten. Ob das gleichbedeutend ist mit "/3 * * * *" weiß ich allerdings nicht, das habe ich so noch nicht gesehen. Der Entwickler des Pakets gibt ebenfalls folgendes Beispiel:
                      > Execute a cron job every 5 Minutes = */5 * * * *

                      Trotzdem kannst du z.b. mit "4 */5 * * * *" z.B. alle 5 Minuten zur 4. Sekunde etwas ausführen lassen.

                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 last edited by

                        @knopers1:

                        es dürfen max. 5 Sternchen sein `
                        In neueren Versionen dürfen es optional auch 6 Positionen sein mit der ersten Position für Sekunden.
                        @knopers1:

                        Sterne stehen für immer! Richtig? `
                        Ja.
                        @knopers1:

                        Kollege Thisoft gibt aber noch mal das hier:

                        schedule ("*/3 * * * *", function(){ `
                        Ich kenne auch nur diese Version für alle 3 Minuten. Das ohne Stern vor dem Schrägstrich kann funktionieren, aber da es nicht dokumentiert ist, würde ich es so nicht anwenden.

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

                          @AlCalzone:

                          Woops, ich hab da wohl ein Leerzeichen zu viel gesehen. Kommando zurück!

                          "*/3 * * * *" bedeutet alle 3 Minuten. Ob das gleichbedeutend ist mit "/3 * * * *" weiß ich allerdings nicht, das habe ich so noch nicht gesehen. Der Entwickler des Pakets gibt ebenfalls folgendes Beispiel:
                          > Execute a cron job every 5 Minutes = */5 * * * *

                          Trotzdem kannst du z.b. mit "4 */5 * * * *" z.B. alle 5 Minuten zur 4. Sekunde etwas ausführen lassen. `

                          woow, jetzt bin ich total verwirt…

                          Wenn das so ist, müßte es nicht so aussehen?

                          "4/5 * * * *"

                          Du hast ein Beispiel jetzt mit sieben Stellen angegeben. Stimmt das?

                          EDIT: Gut. Dann verbleibe ich eben bei der Theori vom Paul53

                          schedule ("*/3 * * * *", function(){ // Alle drei min.bozogen auf den 6 Stelligen Cronjob mit sekunden! 😄

                          1 Reply Last reply Reply Quote 0
                          • AlCalzone
                            AlCalzone Developer last edited by

                            @knopers1:

                            Du hast ein Beispiel jetzt mit sieben Stellen angegeben. Stimmt das? `
                            Nein, da ist kein Leerzeichen zwischen "*", "/" und "5":

                            4 */5 * * * *
                             ^   ^ ^ ^ ^
                            
                            

                            5 Leerzeichen, 6 Stellen

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            832
                            Online

                            31.7k
                            Users

                            79.8k
                            Topics

                            1.3m
                            Posts

                            5
                            12
                            1715
                            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