NEWS
iobroker start event
-
Hallo,
ich möchte gerne nachdem ich den io-Broker gestartet habe, ein JS-Script einmalig ausführen. Gibt es dazu ein Ereignis, oder einen DP den man hierzu abfragen kann? -
@ra65ma sagte:
nachdem ich den io-Broker gestartet habe, ein JS-Script einmalig ausführen.
Das macht jedes Skript ohne Trigger.
-
Erstmal danke für die schnelle Antwort. Das bedeutet aber, dass jedesmal wenn ich das Script stoppe und wieder starte, dieses ausgeführt wird und nicht nur beim starten des io-Brokers.
-
@ra65ma sagte in iobroker start event:
wenn ich das Script stoppe und wieder starte, dieses ausgeführt wird und nicht nur beim starten des io-Brokers.
Ja, aber auch bei Start ioBroker. Wozu sollte das Skript wieder gestoppt und gestartet werden ?
-
wenn man z.B. das Script editiert.
-
@ra65ma Du könntest einen Datenpunkt erstellen mit dem letzten Ausführungsdatum des Skripts.
Wenn dieses vor dem Startpunkt von ioBroker liegt (müsste über die Uptime vom JS-Controller zu berechnen sein), wird der Rest ausgeführt und der Datenpunkt aktualisiert. Sonst nicht. -
@ra65ma sagte in iobroker start event:
wenn man z.B. das Script editiert.
Wie willst du den wissen das das Script sauber arbeitet wenn du es editiert hast ohne das du es laufen lässt ?
Ich denke jegliche "Verriegelung" dagegen das das Script manuell mehrfach gestartet werden kann macht nur ganz wenig sinn - zum Testen musst du sie ggf. sowieso deaktivieren, und ausser das Du daran "herum spielst" sollte nur ein Neustart des ioBroker / des JS Adapters einen erneuten Start des Skriptes auslösen.
A.
A.
-
Habe nun eine Lösung, weis aber nicht ob es nicht vielleicht eine elegantere gibt. Danke @AlCalzone, das Stichwort war "uptime"
createState('custom.iobroker.start', 0, {type: 'number'}); var startzeit = new Date(); var jetzt = new Date(); startzeit.setTime(startzeit.getTime() - getState('system.adapter.admin.0.uptime').val * 1000) if (startzeit.valueOf() > getState('custom.iobroker.start').val) { setState('custom.iobroker.start', jetzt.valueOf(), true); /* Make what ever you need */ log("IO-Broker ist gestartet") }