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.


  • Developer

    @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.


  • Developer

    @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")
    
    }
    

Log in to reply
 

Suggested Topics

1.6k
Online

29.9k
Users

37.0k
Topics

495.2k
Posts