NEWS
[gelöst] Trigger on System Restart
-
Gibt es eine Möglichkeit einen Trigger zu erzeugen, wenn das System neugestartet wurde?
Ich habe das nicht gefunden.
-
Gibt es eine Möglichkeit einen Trigger zu erzeugen, wenn das System neugestartet wurde? `
So ein Trigger ist nicht erforderlich, da bei Systemstart alle Adapter und auch alle Skripte gestartet werden; d.h. alles (außer Funktionen), was im Skript nicht mit on() oder schedule() getriggert wird, wird bei Systemstart ausgeführt. -
… wird bei Systemstart ausgeführt. `
<klugscheissmodus an="">Beim Start des Skriptes und damit beim Start vom JavaScript-Adapter …
<klugscheissmodus aus="">Es gibt kein Skript was einmalig beim Start von ioBroker selbst gestartet wird, was auch am Ende dem stark modularen Aufbau geschuldet ist.
Von daher: Falls das so nicht reicht, welchen Anwendungsfall hast Du denn im Kopf?</klugscheissmodus></klugscheissmodus>
-
Da ich auch einige Sachen bei ioBroker start abarbeiten möchte habe ich dazu 1ne Variable erstellt und 1 Script welches dies bei start auf true setzt und 2sekunden später wieder falsch.
Ich benutzte diese als Trigger für andere Scripte/Events welche ich bei einen Start ausführen möchte.
Nachteil, man erkennt damit nicht den Unterschied zwischen ioBroker Neustart und/oder Neustart des JavaScript adapters.
–-----------------------
Send from mobile device
-
Interessant.
Das sehe ich nicht bei mir!
Muss noch etwas anderes falsch sein.
Außerdem bin ich gar nicht sicher, ob so ein Verhalten sinnvoll wäre.
-
Ansonsten poste mal deinen Code und was passieren soll, dann sieht man vllt mehr
-
Mir jetzt klar was gemeint war.
Alle Statement eines Scripts werden bei Start aufgeführt.
Will man eine Regel sowohl durch trigger als auch durch Systemstart ausführen will, dann packt man den Code in eine Funktion die von Triggern und auch vom Skipt am Anfang ausgeführt wird.
Insofern ist das Statement, dass es die Funktion nicht benötigt wird, schon ok.
-
Diese Aussage ist 100% korrekt
-
Wie kann man elegant die Funktionen beim Skript-Neustart einmal ausführen?
setInterval(function() { log ('Programmstart 1') },5*60*1000); on({id: 'javascript.0.haus.Heizung.Bad.FensterOffen', change: 'ne'}, function (obj) { log ('Programmstart 2') }); `
-
@hanss Indem du die einmal einfach im Programm aufrufst.
Alternativ einen function init erstellen, die du dann im Programm am ende aufrufst. -
@Chrunchy
Ich verstehe das nicht,
könntest Du bitte mein Beispiel entsprechend ergänzen?
-Es sollte beim Script-Start Programmstart 1 und Programmstart 2 im Log stehen -
@hanss OK
function init() { log ('Programmstart 1'); log ('Programmstart 2'); } setInterval(function() { log ('Programmstart 1') },5*60*1000); on({id: 'javascript.0.haus.Heizung.Bad.FensterOffen', change: 'ne'}, function (obj) { log ('Programmstart 2') }); init();
-
@Chrunchy
Du machst Spaß?
Die Zeilen log('Programmstart').. stehen natürlich stellvertretend für ca. 100 Zeilen Programmcode. -
@hanss Das sollte dann aber keinen Unterschied mehr machen.
-
@hanss sagte:
setInterval(function() { log ('Programmstart 1') },5*60*1000);
Die Log-Ausgabe erfolgt 5 Minuten nach Skript-Start und dann jede weitere 5 Minuten.
-
@paul53
Vielen Dank, das war mir klar.
Ich will aber die Log-Ausgabe sofort beim Skript-Start und habe das jetzt so gelöst:ausgabe() setInterval(ausgabe(),5*60*1000) function ausgabe(){ log ('Programmstart 1') }