NEWS
Schedule auf komplettes Skript?
-
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.>
-
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 CRONFunktionen, 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.*>
-
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 CRONdas 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 schedulesich 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?
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
