[gelöst] Verzögertes Überprüfen auf nicht verfügbare Geräte

Begonnen von kleineranfaenger, 30 Oktober 2017, 15:02:36

Vorheriges Thema - Nächstes Thema

kleineranfaenger

Hallo,

ich möchte gerne 5 Minuten NACH dem Start von FHEM überprüfen, ob ein via USB angeschlossenes Gerät den Zustand "initialized" erreicht. Ist dem nicht so, soll nichts passieren, wenn doch dann etwas ausführen.

Mein DOIF Ansatz funktioniert im Grunde auch, ABER ich bekomme logischerweise direkt nach Neustart des FHEM Dienstes (oder dem Ändern des Status des Geräts) die Bedingung erfüllt - wait wartet NACH dem Abfragen der Bedingung. Ich muss aber VORHER das Prüfen der Bedingung verzögern, da das Gerät ein paar Sekunden braucht bis es in FHEM verfügbar ist.


define di_test DOIF ([DEVICE:state] ne "initialized") (set bla bla)
attr di_test wait 300
attr di_test do always


Mit notify kann ich direkt NACH dem Start von FHEM was triggern, habe aber auch hier keine Möglichkeit zum Verschieben der Bedingungsprüfung gefunden
define no_global_INITIALIZED notify global:INITIALIZED <set bla bla >


Finde leider nichts in der Commandref oder bin mal wieder einfach nur blind.
Ich weiss auch nicht ob DOIF oder watchdog oder notify die bessere Wahl wäre.

Bitte um Hilfe, steht gerade im Wald mit den lauter Bäumen :) Danke.

DeeSPe

Zitat von: kleineranfaenger am 30 Oktober 2017, 15:02:36
Hallo,

ich möchte gerne 5 Minuten NACH dem Start von FHEM überprüfen, ob ein via USB angeschlossenes Gerät den Zustand "initialized" erreicht. Ist dem nicht so, soll nichts passieren, wenn doch dann etwas ausführen.

Mein DOIF Ansatz funktioniert im Grunde auch, ABER ich bekomme logischerweise direkt nach Neustart des FHEM Dienstes (oder dem Ändern des Status des Geräts) die Bedingung erfüllt - wait wartet NACH dem Abfragen der Bedingung. Ich muss aber VORHER das Prüfen der Bedingung verzögern, da das Gerät ein paar Sekunden braucht bis es in FHEM verfügbar ist.


define di_test DOIF ([DEVICE:state] ne "initialized") (set bla bla)
attr di_test wait 300
attr di_test do always


Mit notify kann ich direkt NACH dem Start von FHEM was triggern, habe aber auch hier keine Möglichkeit zum Verschieben der Bedingungsprüfung gefunden
define no_global_INITIALIZED notify global:INITIALIZED <set bla bla >


Finde leider nichts in der Commandref oder bin mal wieder einfach nur blind.
Ich weiss auch nicht ob DOIF oder watchdog oder notify die bessere Wahl wäre.

Bitte um Hilfe, steht gerade im Wald mit den lauter Bäumen :) Danke.

Z.B. so:
define no_global_INITIALIZED notify global:INITIALIZED define atTmp_set_bla at +00:05 set bla bla

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

CBSnake

Hi,

anstatt "do Always" ein "do resetwait" dann sollte dein doif funktionieren.

Grüße
Achim
FHEM auf Debian 10, HM-Wlan, JeeLink-Wlan, Wlanduino, ConBee, TP-Link Steckdose, GHoma Steckdosen, Shelly Steckdosen

Thorsten Pferdekaemper

Wie wär's damit:

define no_global_INITIALIZED notify global:INITIALIZED sleep 300;; IF ([DEVICE:state] ne "initialized") (set bla bla)

Gruß,
   Thorsten
FUIP

kleineranfaenger

Vielen Dank an alle für die Hilfe.

DOIF und "do resetwait" hat mir irgendwie nicht weitergeholfen :(

Auf das notify mit dem sleep hätte ich selbst kommen können! *facepalm*
Damit hab ich es jetzt gelöst.