Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Schedule auf komplettes Skript?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

Schedule auf komplettes Skript?

Schedule auf komplettes Skript?

Scheduled Pinned Locked Moved Skripten / Logik
6 Posts 5 Posters 2.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    noxx
    wrote on last edited by
    #1

    Hallo

    wie starte ich per CRON ein Skript komplett neu?

    Kenne wohl schedule ("* * * * *", function(), also eine

    Funktion im Skript starten. Geht das auch mit dem ganzen Skript?

    ! ````
    "* * * * *";
    ! debug = true;
    ! // Anlegen JS State für VIS
    ! createState('javascript.0.muell.blau', 0); //. gelb, blau usw entsprechend erstellen
    ! // Suchvariablen
    // ['Reststoff', 'Blaue Tonne', 'Biotonne', 'Gelbe Tonne']
    var such1= "Blaue Tonne"; // weitere Varialben für die anderen Müllsorten eintragen
    ! // Kalender auslesen (HTML Format)
    ! // **************************************************************************************
    // Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text
    // **************************************************************************************

        var inhalt = getState("ical.0.data.html"/*HTML iCal table*/);           // an deinen eigenen Kalender anpassen
        var inhaltString = inhalt.val.toString();
        var inhaltStringReplace = inhaltString;
        var inhaltStringText;
        var i_search;
    
        // remove all inside SCRIPT and STYLE tags
        inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, "");
        inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, "");
    
        // remove BR tags
        inhaltStringReplace=inhaltStringReplace.replace(/
    

    /gi, "");
    inhaltStringReplace=inhaltStringReplace.replace(/<br\s>/gi, "");
    inhaltStringReplace=inhaltStringReplace.replace(/<br>/gi, "");

        // remove all else
        inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, "");
    
        // get rid of html-encoded characters:
        inhaltStringReplace=inhaltStringReplace.replace(/ /gi," ");
        inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&");
        inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"');
        inhaltStringReplace=inhaltStringReplace.replace(//gi,'>');    
    
        if(debug) log(inhaltStringReplace);
    

    ! // n-ten Treffer finden
    ! function nthIndex(str, pat, n){
    var L= str.length, i= -1;
    while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/position/bestimmen/var/pos="inhaltStringReplace.indexOf(" such1,/1);/if(debug)/log("pos/ist:/"+pos);/inhaltstringtext="inhaltStringReplace.substring((pos-21),pos-9);" log("datum/"+inhaltstringtext);/nthindex(inhaltstringtext,/".",/t_m="inhaltStringText.slice(0," i_search);/pos1="i_search+1;" log("pos1:/"/+pos1/);/2);/m_m="inhaltStringText.slice(pos1," pos2="i_search+1;" log("pos2:/+pos2/j_m="inhaltStringText.slice(pos2," inhaltstringtext.len/log(t_m/+"/,/+m_m/+j_m);/datum/heute/ermitteln/today="new" date();/log(today);/tag/t="today.getDate();" m="today.getMonth()+1;" jahr/j="today.getFullYear();" "+t+m+j);/berechnung/tagesdifferenzen/diff="0;" dim="DaysInMonth(m," j);/des/aktuellen/monats/log("tage/aktueller/monat:/"+dim);/if(j_m="">j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat?

            diff = parseInt(dim) - parseInt(t) + parseInt(t_m);
    
        }
        else diff = parseInt(t_m) - parseInt(t);
    
          if(debug) log("Tage bis zum nächsten Müll: "+diff);
    

    setState('javascript.0.muell.blau', diff);</l){></br></br\s></style.></script.>

    1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      @noxx:

      wie starte ich per CRON ein Skript komplett neu? `
      Rechts oben, Button "Cron"
      493_js_cron.jpg

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Reply Last reply
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        wrote on last edited by
        #3

        @paul53:

        Rechts oben, Button "Cron" `
        Der fügt bei mir nur einen Cron-String in ein Skript ein.

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Reply Last reply
        0
        • paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #4

          @AlCalzone:

          Der fügt bei mir nur einen Cron-String in ein Skript ein. `
          Stimmt, habe ich nie verwendet. Es ist offenbar nur ein Hilfsmittel, um einen Cron-String für die schedule-Funktion zu erzeugen.
          @noxx:

          wie starte ich per CRON ein Skript komplett neu? `
          Dann muss man das komplette Skript in eine Funktion packen und per schedule auslösen.

          function myScript() {  // zusätzliche Zeile am Anfang
          
          Hier wir das komplette Skript plaziert
          
          }  // zusätzliches Funktionsende
          
          schedule('* * * * *', myScript);  // zusätzliches CRON
          
          

          Funktionen, die nur einmal benötigt werden - wie z.B. createState() - sollte man vor die Funktion oder in ein separates Skript plazieren.

          Mit dem Skript von @noxx

          ! ````
          var debug = true;
          ! // Anlegen JS State für VIS
          ! createState('javascript.0.muell.blau', 0); //. gelb, blau usw entsprechend erstellen
          ! function myScript() {
          // Suchvariablen
          // ['Reststoff', 'Blaue Tonne', 'Biotonne', 'Gelbe Tonne']
          var such1= "Blaue Tonne"; // weitere Varialben für die anderen Müllsorten eintragen
          ! // Kalender auslesen (HTML Format)
          ! // **************************************************************************************
          // Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text
          // **************************************************************************************

              var inhalt = getState("ical.0.data.html"/*HTML iCal table*/);           // an deinen eigenen Kalender anpassen
              var inhaltString = inhalt.val.toString();
              var inhaltStringReplace = inhaltString;
              var inhaltStringText;
              var i_search;
          
              // remove all inside SCRIPT and STYLE tags
              inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, "");
              inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, "");
          
              // remove BR tags
              inhaltStringReplace=inhaltStringReplace.replace(/
          

          /gi, "");
          inhaltStringReplace=inhaltStringReplace.replace(/<br\s>/gi, "");
          inhaltStringReplace=inhaltStringReplace.replace(/<br>/gi, "");

              // remove all else
              inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, "");
          
              // get rid of html-encoded characters:
              inhaltStringReplace=inhaltStringReplace.replace(/ /gi," ");
              inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&");
              inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"');
              inhaltStringReplace=inhaltStringReplace.replace(//gi,'>');    
          
              if(debug) log(inhaltStringReplace);
          

          ! // n-ten Treffer finden
          ! function nthIndex(str, pat, n){
          var L= str.length, i= -1;
          while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/position/bestimmen/var/pos="inhaltStringReplace.indexOf(" such1,/1);/if(debug)/log("pos/ist:/"+pos);/inhaltstringtext="inhaltStringReplace.substring((pos-21),pos-9);" log("datum/"+inhaltstringtext);/nthindex(inhaltstringtext,/".",/t_m="inhaltStringText.slice(0," i_search);/pos1="i_search+1;" log("pos1:/"/+pos1/);/2);/m_m="inhaltStringText.slice(pos1," pos2="i_search+1;" log("pos2:/+pos2/j_m="inhaltStringText.slice(pos2," inhaltstringtext.len/log(t_m/+"/,/+m_m/+j_m);/datum/heute/ermitteln/today="new" date();/log(today);/tag/t="today.getDate();" m="today.getMonth()+1;" jahr/j="today.getFullYear();" "+t+m+j);/berechnung/tagesdifferenzen/diff="0;" dim="DaysInMonth(m," j);/des/aktuellen/monats/log("tage/aktueller/monat:/"+dim);/if(j_m="">j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat?

                  diff = parseInt(dim) - parseInt(t) + parseInt(t_m);
          
              }
              else diff = parseInt(t_m) - parseInt(t);
          
                if(debug) log("Tage bis zum nächsten Müll: "+diff);
          

          setState('javascript.0.muell.blau', diff);
          } // Ende myScript()

          ! schedule('* * * * ', myScript);</l){></br></br\s></style.></script.*>

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Reply Last reply
          0
          • B Offline
            B Offline
            Berchemer
            wrote on last edited by
            #5

            @paul53

            Danke. Das hat mich von tagelangem Suchen und Grübeln bewahrt 😄

            1 Reply Last reply
            0
            • A Offline
              A Offline
              AingTii
              wrote on last edited by
              #6

              Hallo,

              irgendwie hakt es bei mir…

              Warum funktioniert das so nicht, das script startet aber bei erreichen der Zeiten geht passiert nichts.

              function myTest () {
              if ((getState("daswetter.0.NextDaysDetailed.0d.0h.Clouds"/*Clouds*/).val<'70%')) {
                  console.log("Hallo Welt!");
                  log("Hallo Welt!");
                  }
                  var wolken = (getState("daswetter.0.NextDaysDetailed.0d.0h.Clouds"/*Clouds*/).val);
                  log(wolken);
              }  
              
              schedule("43 10 * 4-9 *", myTest);  // zusätzliches CRON
              schedule("44 10 * 4-9 *", myTest);  // zusätzliches CRON
              schedule("45 10 * 4-9 *", myTest);  // zusätzliches CRON
              schedule("46 10 * 4-9 *", myTest);  // zusätzliches CRON
              
              

              das log endet nach dem start:

              10:38:35.749	[info]	javascript.0 Start javascript script.js.LogEintragTest
              10:38:35.751	[info]	javascript.0 script.js.LogEintragTest: registered 0 subscriptions and 1 schedule
              10:41:58.082	[info]	javascript.0 Stop script script.js.LogEintragTest
              10:41:58.104	[info]	javascript.0 Start javascript script.js.LogEintragTest
              10:41:58.106	[info]	javascript.0 script.js.LogEintragTest: registered 0 subscriptions and 1 schedule
              10:42:07.168	[info]	javascript.0 Stop script script.js.LogEintragTest
              10:42:07.191	[info]	javascript.0 Start javascript script.js.LogEintragTest
              10:42:07.193	[info]	javascript.0 script.js.LogEintragTest: registered 0 subscriptions and 1 schedule
              10:42:22.904	[info]	javascript.0 Stop script script.js.LogEintragTest
              10:42:22.939	[info]	javascript.0 Start javascript script.js.LogEintragTest
              10:42:22.942	[info]	javascript.0 script.js.LogEintragTest: registered 0 subscriptions and 4 schedules
              
              

              ich habe schon hin und her getestet, ob mit ' oder "

              "* * * * *" funktioniert

              "* * * 4-9 *" nicht

              "57 * * * *" funktioniert

              "* * * 5 *" funktioniert

              "22 11 * 4,5,6,7,8,9 *" nicht

              "24 11 * 5,6,7,8,9 *" funktioniert

              hat jemand einen Idee?

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              286

              Online

              32.4k

              Users

              81.3k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe