Guten Morgen,
ich stehe leider gerade etwas auf dem Schlauch und komme mit meinem Vorhaben nicht weiter.
Ich habe ein "structure" Device mit dem state "absent, present".
Jetzt würde ich gerne ein DOIF schreiben, mit der Bedingung state=absent + absent>=5 Minuten.
Wie bekomme ich in das structure Device z.B. ein userReading, der bei absent oder present anfäng hochzuzählen?
Ähnlich wie beim Roommates das Reading durTimerAbsence_cr oder durTimerPresence_cr.
Vorab Danke & Gruß
Fabian
Dafür brauchst Du kein userReading. https://fhem.de/commandref_DE.html#DOIF_wait
DOIF ([structure] eq "absent")(Befehl)
attr wait 600
Damit wird doch aber nur mit der Ausführung des Befehls 60 Sekunden gewartet, oder verstehe ich das falsch?
Ich würde aber schon gerne im Vorfeld mit dem DOIF prüfen, ob die Bedingung "länger Abwesend als 5 Minuten" erfüllt ist.
Im Detail geht es darum:
Internals:
ATTR Fabian_iPhone
CHANGEDCNT 2
DEF Fabian_iPhone Steffi_Android
FUUID 5c4486e6-f33f-88c1-3a13-8e1f94ac25962f7a
NAME st_WiFi_Clients
NR 131
NTFY_ORDER 50-st_WiFi_Clients
STATE present
TYPE structure
READINGS:
2020-07-20 13:24:02 LastDevice Steffi_Android
2020-07-20 13:24:02 LastDevice_Abs Steffi_Android
2020-07-20 13:24:02 state present
Attributes:
alias WiFi-Clients
clientstate_behavior relative
clientstate_priority present|1 absent|0
devStateIcon present:it_wifi@green absent:it_wifi@red
event-on-change-reading state
group WiFi-Status
icon it_wifi
room Bewohner
Ich will nicht nur prüfen, ob die Handys anwesend/abwesend sind, sondern auch abhängig wie lange.
Nur brauche ich dafür irgendein Reading, welches pro jedes der 2 Devices einen Counter hochzählt.
Ist dies machbar?
ZitatDamit wird doch aber nur mit der Ausführung des Befehls 60 Sekunden gewartet, oder verstehe ich das falsch?
Ja (also, eigentlich 600 Sekunden, sprich 5 Minuten), aber wenn inzwischen die structure auf "present" wieder geht, wird der DOIF im Status cmd_2 wechseln und damit wird überhaupt kein Befehl ausgeführt
Sorry, natürlich 5 Minuten, hatte nur 60 gelesen.
Da hab ich wohl viel zu kompliziert gedacht, funktioniert mit dem "wait" wunderbar.
Danke ;D