userReading - Count at state change

Begonnen von webdandy, 20 Juli 2020, 07:01:24

Vorheriges Thema - Nächstes Thema

webdandy

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

amenomade

Dafür brauchst Du kein userReading. https://fhem.de/commandref_DE.html#DOIF_wait

DOIF ([structure] eq "absent")(Befehl)
attr wait 600
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

webdandy

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?

amenomade

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
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

webdandy

Sorry, natürlich 5 Minuten, hatte nur 60 gelesen.

Da hab ich wohl viel zu kompliziert gedacht, funktioniert mit dem "wait" wunderbar.

Danke  ;D