[gelöst] dummy on-for-timer

Begonnen von moerte, 06 März 2025, 21:02:08

Vorheriges Thema - Nächstes Thema

moerte

Guten Abend liebe Gemeinde.

Ich habe einen Vibrationssensor welcher leider nur ein Reading sendet, wenn er bewegt wird - und das ist IMMER anders (Vermute wie stark die Vibration ist).
Daher habe ich einen Dummy angelegt.
define Vibrationssensor_1 dummy
attr webCmd on:off
attr eventMap .*:on off:off

diesen füttere ich mit einen notify:

define Vibration_n notify Bridge_wifi { fhem("set Vibrationssensor_1 ".ReadingsNum('Bridge_wifi','ZbReceived_0xAF88_ZoneStatusChange','state',0)) }

ZbReceived_0xAF88_ZoneStatusChange ist das einzige Reading was ich bei Erschütterung bekomme.

Wie könnte ich nachdem der dummy auf ON geht den Dummy nach 5 Sekunden wieder auf OFF stellen?

Habe es mit einen Zweiten notify versucht:
define AutoOFF_Vibration notify Vibrationssensor_1:on.* sleep 5.0; set Vibrationssensor_1 off


sobald ich das mache, hängt sich mein Fhem auf und muss das Logfile löschen und den Raspberry Neustarten, muss das notify fix löschen, dann läuft es wieder.
Hat jemand evtl eine Idee was ich machen könnte um den Sensor nach einer gewíssen Zeit auf off zu setzen?

Hier noch ein List des dummys:
Internals:
   FUUID      67c76958-f33f-599c-0a67-3dfa948108e46c1e
   NAME       Vibrationssensor_1
   NR         509
   STATE      on
   TYPE       dummy
   eventCount 202
   READINGS:
     2025-03-06 20:34:19   state           2049
Attributes:
   eventMap   .*:on off:off
   room       System
   webCmd     on:off

Vielen Dank und einen schönen Abend



betateilchen

mach das doch direkt zu dem Zeitpunkt, zu dem Du den ersten Wert setzt

define Vibration_n notify Bridge_wifi { fhem("set Vibrationssensor_1 ".ReadingsNum('Bridge_wifi','ZbReceived_0xAF88_ZoneStatusChange','state',0); sleep 5; set Vibrationssensor_1 off) }

Kann sein, dass Du die Semikolon in dem code-Teil verdoppeln musst, das habe ich jetzt nicht getestet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moerte

Zitat von: betateilchen am 06 März 2025, 21:30:44mach das doch direkt zu dem Zeitpunkt, zu dem Du den ersten Wert setzt

define Vibration_n notify Bridge_wifi { fhem("set Vibrationssensor_1 ".ReadingsNum('Bridge_wifi','ZbReceived_0xAF88_ZoneStatusChange','state',0); sleep 5; set Vibrationssensor_1 off) }

Kann sein, dass Du die Semikolon in dem code-Teil verdoppeln musst, das habe ich jetzt nicht getestet.

Vielen Dank für deine Antwort ...
Das klingt sehr gut - nur leider bekomm ich auch mit dem verdoppelten Semikolon ( ;; ) folgende Meldung:
syntax error at (eval 22344) line 1, at EOF
syntax error at (eval 22344) line 1, near "off) "

betateilchen

Ja sorry, da ist noch ein Fehler von mir drin, der gesamte Ausdruck in fhem() muss letztlich als String stehen. Muss ich doch mal selbst testen.

Ich verstehe übrigens Dein Konstrukt mit dem ReadingsNum() nicht.

Was davon ist deviceName und was ist readingName? Und was ist "state"?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Probier mal so:

{ fhem("set Vibrationssensor_1 ".ReadingsNum('Bridge_wifi','ZbReceived_0xAF88_ZoneStatusChange','state',0).";;sleep 5;;set Vibrationssensor_1 off") }
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moerte

#5
Das Device wo das reading in Fhem ankommt ist Bridge_wifi. Das Reading heist ZbReceived_0xAF88_ZoneStatusChange.
Also das ist ein Sensor, der mit einer sonnoffBrige verbunden ist. Leider fügt Fhem diesen nicht per mqqt diesen automatisch zu.
Daher der umweg über das dummy

Schwer zu erklären  :-\

{ fhem("set Vibrationssensor_1 ".ReadingsNum('Bridge_wifi','ZbReceived_0xAF88_ZoneStatusChange','state',0).";;sleep 5;;set Vibrationssensor_1 off") }
Leider funktioniert das leider auch nicht - also der dummy bleibt auf ON

das list vom dummy schaut jetzt so aus:

Internals:
   FUUID      67c76958-f33f-599c-0a67-3dfa948108e46c1e
   NAME       Vibrationssensor_1
   NR         509
   STATE      on
   TYPE       dummy
   eventCount 200
   READINGS:
     2025-03-06 21:59:22   state           1025;sleep 5;set Vibrationssensor_1 off
Attributes:
   eventMap   .*:on off:off
   room       System
   webCmd     on:off

Werde morgen mal weiter schauen - mein wecker klingelt in 5h  :'(
Danke erstmal

betateilchen

Was soll das ,,state" in deinem ReadingsNum() bewirken?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moerte

Das kann ich dir ganz ehrlich nicht mal beantworten  :-X 
Es hat mir dadurch das reading im dummy angezeigt und war somit erstmal glücklich.

betateilchen

also Dein ReadingsNum ist syntaktisch falsch, funktioniert aber zufällig.

probier mal die doppelten Semikolon durch jeweils 4 zu ersetzen ;;;;
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moerte

#9
Hallo und sorry für die späte Rückmeldung..

Hab ich so geändert:
Bridge_wifi { fhem("set Vibrationssensor_1 ".ReadingsNum('Bridge_wifi','ZbReceived_0xAF88_ZoneStatusChange','state',0).";;;;sleep 5;;;;set Vibrationssensor_1 off") }
Schaltet den dummy aber leider auch nicht aus.

List vom notify:

Internals:
   DEF        Bridge_wifi { fhem("set Vibrationssensor_1 ".ReadingsNum('Bridge_wifi','ZbReceived_0xAF88_ZoneStatusChange','state',0).";;;;sleep 5;;;;set Vibrationssensor_1 off") }
   FUUID      67c9e823-f33f-599c-6e7f-a84432a754e6209c
   NAME       Vibration_n
   NOTIFYDEV  Bridge_wifi
   NR         510
   NTFY_ORDER 50-Vibration_n
   REGEXP     Bridge_wifi
   STATE      2025-03-07 16:04:33
   TRIGGERTIME 1741359873.29557
   TYPE       notify
   eventCount 2
   READINGS:
     2025-03-07 15:56:29   state           active
     2025-03-07 16:04:33   triggeredByDev  Bridge_wifi
     2025-03-07 16:04:33   triggeredByEvent Wifi_Signal: -25
Attributes:
   room       System


List vom Dummy:

Internals:
   FUUID      67c76958-f33f-599c-0a67-3dfa948108e46c1e
   NAME       Vibrationssensor_1
   NR         509
   STATE      on
   TYPE       dummy
   eventCount 8228
   READINGS:
     2025-03-07 16:00:58   state           1025;;sleep 5;;set Vibrationssensor_1 off
Attributes:
   eventMap   .*:on off:off
   room       System
   webCmd     on:off


JudgeDredd

Ändere mal die Literale so:
Bridge_wifi { fhem("set Vibrationssensor_1 ".ReadingsNum('Bridge_wifi','ZbReceived_0xAF88_ZoneStatusChange','state',0).';sleep 5;set Vibrationssensor_1 off') }
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

moerte

Zitat von: JudgeDredd am 07 März 2025, 16:48:17Ändere mal die Literale so:
Bridge_wifi { fhem("set Vibrationssensor_1 ".ReadingsNum('Bridge_wifi','ZbReceived_0xAF88_ZoneStatusChange','state',0).';sleep 5;set Vibrationssensor_1 off') }


Das schaut schon gut aus, der dummy macht nach 5 Sekunden state off .. aber der Status bzw die Lampe vom Dummy bleibt auf an


Internals: FUUID 67c76958-f33f-599c-0a67-3dfa948108e46c1e
NAME Vibrationssensor_1 NR 509
STATE on
TYPE dummy
eventCount 860
READINGS: 2025-03-07 16:58:26
state off
Attributes: eventMap .*:on off:off room System
webCmd on:off


JudgeDredd

Zitat von: moerte am 07 März 2025, 17:02:23.. aber der Status bzw die Lampe vom Dummy bleibt auf an
Dein STATE ist ja auch on !
evtl. hängt es mit dem eventMap zusammen, wofür soll das gut sein ?
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

moerte

Zitat von: JudgeDredd am 07 März 2025, 17:12:43
Zitat von: moerte am 07 März 2025, 17:02:23.. aber der Status bzw die Lampe vom Dummy bleibt auf an
Dein STATE ist ja auch on !
evtl. hängt es mit dem eventMap zusammen, wofür soll das gut sein ?

Ja das habe ich auch eben Vermutet das es jetzt am eventMap liegt. Das ist, weil das Reading eine willkürliche Zahl ist, die immer kommt bei Auslösung - daher .*:on off:off

JudgeDredd

Wie wäre es denn damit:
\d+:on off:off
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)