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
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.
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) "
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"?
Probier mal so:
{ fhem("set Vibrationssensor_1 ".ReadingsNum('Bridge_wifi','ZbReceived_0xAF88_ZoneStatusChange','state',0).";;sleep 5;;set Vibrationssensor_1 off") }
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
Was soll das ,,state" in deinem ReadingsNum() bewirken?
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.
also Dein ReadingsNum ist syntaktisch falsch, funktioniert aber zufällig.
probier mal die doppelten Semikolon durch jeweils 4 zu ersetzen ;;;;
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
Ä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') }
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
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 ?
Zitat von: JudgeDredd am 07 März 2025, 17:12:43Zitat 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
Wie wäre es denn damit:
\d+:on off:off
Zitat von: JudgeDredd am 07 März 2025, 17:36:19Wie wäre es denn damit:
\d+:on off:off
Das ist die Lösung :o
Das geht!! Mir ist zwar das \d+ kein Begriff bisher, aber es geht.
1000 Dank an euch beiden
Zitat von: moerte am 07 März 2025, 17:41:48Mir ist zwar das \d+ kein Begriff bisher
Das ist eine Regex für beliebig viele Ziffern.
Regex ist eine der Säulen von perl/FHEM, da wäre es schon ganz sinnvoll sich damit mal zu beschäftigen. Das wird Dir mit Sicherheit noch öfters über den Weg laufen ;)
Da werde ich mich jetzt am Wochenende definitiv mal belesen. Danke für den Hinweis.
Ich wünsche ein tolles Wochenende und setze dies jetzt hier als gelöst.
Danke nochmal