Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Schedule auf komplettes Skript?

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    904

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.5k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    5.9k

Schedule auf komplettes Skript?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 5 Kommentatoren 3.0k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • N Offline
    N Offline
    noxx
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #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: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

      1 Antwort Letzte Antwort
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #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: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

          1 Antwort Letzte Antwort
          0
          • B Offline
            B Offline
            Berchemer
            schrieb am zuletzt editiert von
            #5

            @paul53

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

            1 Antwort Letzte Antwort
            0
            • A Offline
              A Offline
              AingTii
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              454

              Online

              33.0k

              Benutzer

              83.5k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe