FHEM > Automatisierung
wenn tür geöffnet und keine eltern da dann push nachricht
mfeske:
Hallo zusammen,
ich habe irgendwie wieder einen Denkfehler drin. Ich möchte eine Pushnachricht bekommen, wenn eine bestimmte Tür geöffnet wird und von einer Bewohnergruppe niemand anwesend ist.
Der Türkontakt funktioniert:
--- Code: ---Internals:
DEF ShutterContact 177c04
FUUID 5fac5458-f33f-a44f-4f71-d4c5d38e9f217277
IODev cm
LASTInputDev cm
MSGCNT 37
NAME Kontakt_Flur
NR 583
NTFY_ORDER 50-Kontakt_Flur
STATE opened
SVN 23517
TYPE MAX
addr 177c04
cm_MSGCNT 37
cm_TIME 2022-11-12 09:36:34
devtype 4
type ShutterContact
READINGS:
2022-11-10 23:19:48 IODev cm
2022-11-12 09:36:34 RSSI -70
2022-11-12 09:36:34 battery ok
2022-11-12 09:36:34 batteryState ok
2022-11-12 09:36:34 onoff 1
2022-11-12 09:36:34 peerIDs 000000
2022-11-12 09:36:34 peerList Broadcast
2022-11-12 09:36:34 rferror 0
2022-11-12 09:36:34 state opened
2022-11-12 09:36:06 windowOpen 0
helper:
io:
CUL868:
raw Z0BBF0030177C040000000002
rssi -70
time 1668242193.9885
Attributes:
IODev cm
devStateIcon opened:fts_door_open closed:fts_door:FS20.off
icon control_building_modern_s_2og_eg
model ShutterContact
room Flur
--- Ende Code ---
einen dummy habe ich auch angelegt:
--- Code: ---Internals:
FUUID 5c500797-f33f-a44f-bd22-52b7c9c96f907dc2
NAME UnautorisierteTueroeffnung
NR 119
STATE off
TYPE dummy
READINGS:
2022-11-12 09:34:34 state off
Attributes:
devStateIcon on:fts_door_open off:fts_door
room Flur,Haus
--- Ende Code ---
sowie je ein notify für an und aus des dummys
--- Code: ---
Save config
Dashboard
icoHaus Haus
Bad_klein
Arbeitszimmer
Schlafzimmer
Bad
Kinderzimmer
Tania
Janic
Flur
Küche
Wohnzimmer
Garten
Hausapotheke
Heizungskeller
Abstellkammer
BMZ
Fremdenzimmer
Funkzentrale
Heizung Grafik
IT
Kalender
Residents
Unsorted
Wetter
gong_ansagen
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor
restart
stop
updatecheck
update
reloadMyutils
verbose 5
cm_pairmode
Internals:
DEF Kontakt_Flur:opened.* { fhem ("set UnautorisierteTueroeffnung on") if (Value("Bewohner_Eltern") eq "absent")}
FUUID 5c500797-f33f-a44f-9286-20123cb178dd2d36
NAME UnautorisierteTueroeffnungAn
NOTIFYDEV Kontakt_Flur
NR 121
NTFY_ORDER 50-UnautorisierteTueroeffnungAn
REGEXP Kontakt_Flur:opened.*
STATE 2022-11-12 09:36:34
TRIGGERTIME 1668242194.03528
TYPE notify
READINGS:
2022-11-12 09:28:27 state active
2022-11-12 09:36:34 triggeredByDev Kontakt_Flur
2022-11-12 09:36:34 triggeredByEvent opened
Attributes:
room Flur,Haus
Internals:
DEF Kontakt_Flur:closed.* { fhem ("set UnautorisierteTueroeffnung off") if (Value(("Bewohner_Eltern") eq "absent") || ("Bewohner_Eltern") eq "gone")}
FUUID 5c500797-f33f-a44f-98fc-77eb5e386870842b
NAME UnautorisierteTueroeffnungAus
NOTIFYDEV Kontakt_Flur
NR 122
NTFY_ORDER 50-UnautorisierteTueroeffnungAus
REGEXP Kontakt_Flur:closed.*
STATE 2022-11-12 09:36:06
TRIGGERTIME 1668242166.88363
TYPE notify
READINGS:
2022-11-11 14:13:32 state active
2022-11-12 09:36:06 triggeredByDev Kontakt_Flur
2022-11-12 09:36:06 triggeredByEvent closed
Attributes:
room Flur,Haus
--- Ende Code ---
ein notify für den pushover habe ich auch
--- Code: ---Internals:
DEF UnautorisierteTueroeffnung:on { system ("curl -s -F 'token=geheim' -F 'user=geheim' -F 'message=Haus\nUnautorisierte Türöffnung' https://api.pushover.net/1/messages.json")}
FUUID 5c500797-f33f-a44f-c1d5-77c7e47d60d7b9ac
NAME UnautorisierteTueroeffnungPushover
NOTIFYDEV UnautorisierteTueroeffnung
NR 124
NTFY_ORDER 50-UnautorisierteTueroeffnungPushover
REGEXP UnautorisierteTueroeffnung:on
STATE 2022-11-12 09:34:27
TRIGGERTIME 1668242067.47688
TYPE notify
READINGS:
2022-11-10 23:18:41 state active
2022-11-12 09:34:27 triggeredByDev UnautorisierteTueroeffnung
2022-11-12 09:34:27 triggeredByEvent on
Attributes:
room Haus
--- Ende Code ---
mit set UnautorisierteTueroeffnung on wird die pushover nachricht auch gesendet aber UnautorisierteTueroeffnungAn und UnautorisierteTueroeffnungAus schalten den dummy nicht. Laut eventmonitor arbeitet auch der Kontakt korrekt:
--- Code: ---2022-11-12 09:50:15 MAX Kontakt_Flur closed
2022-11-12 09:50:15 MAX Kontakt_Flur RSSI: -68.5
2022-11-12 09:50:15 MAX Kontakt_Flur battery: ok
2022-11-12 09:50:15 MAX Kontakt_Flur batteryState: ok
2022-11-12 09:50:15 MAX Kontakt_Flur rferror: 0
2022-11-12 09:50:15 MAX Kontakt_Flur onoff: 0
2022-11-12 09:50:15 MAX Kontakt_Flur windowOpen: 0
2022-11-12 09:50:15 MAX Kontakt_Flur peerList: Broadcast
2022-11-12 09:50:15 MAX Kontakt_Flur peerIDs: 000000
....
2022-11-12 09:50:19 MAX Kontakt_Flur opened
2022-11-12 09:50:19 MAX Kontakt_Flur RSSI: -71.5
2022-11-12 09:50:19 MAX Kontakt_Flur battery: ok
2022-11-12 09:50:19 MAX Kontakt_Flur batteryState: ok
2022-11-12 09:50:19 MAX Kontakt_Flur rferror: 0
2022-11-12 09:50:19 MAX Kontakt_Flur onoff: 1
2022-11-12 09:50:19 MAX Kontakt_Flur peerList: Broadcast
2022-11-12 09:50:19 MAX Kontakt_Flur peerIDs: 000000
--- Ende Code ---
Ich muss da also irgendwo zwischen einen Fehler haben das die notifys nicht den dummy schalten :-(
Gerne nehme ich auch andere bessere schnellere zuverlässigere Ideen entgegen ;-)
Gruß
Micha
betateilchen:
Wozu brauchst Du da eigentlich einen dummy? Und wozu ZWEI notify, die auf den dummy reagieren?
Die ganze Funktionalität und Reaktion kann man doch mit dem Türkontakt und einem notify auf den Türkontakt selbst lösen?
Prinzip:
--- Code: ---define n_tuerkontakt notify Kontakt_Flur:(opened|closed) {} # fraglich, ob man den Trigger auf closed überhaupt für irgendwas braucht
--- Ende Code ---
Im Ausführungsteil ist dann zu unterscheiden, ob die Bewohnergruppe anwesend ist oder nicht.
# das ist eine Prinzipbeschreibung, syntaktisch musst Du das entsprechend ausformulieren!
--- Code: ---{ return if "Bewohner_Eltern" eq anwesend;
# jetzt kommt der gewünschte Aktionsteil
if event = opened {
system ("curl -s -F 'token=geheim' -F 'user=geheim' -F 'message=Haus\nUnautorisierte Türöffnung' https://api.pushover.net/1/messages.json");
} else {
# hier kommt der Teil für closed hin. Aber wenn es den dummy nicht gibt, braucht man hier vermutlich gar nix tun.
};
}
--- Ende Code ---
betateilchen:
An dieser Stelle
--- Code: ---if (Value(("Bewohner_Eltern") eq "absent") || ("Bewohner_Eltern") eq "gone")
--- Ende Code ---
hast Du Syntaxfehler. Zum Einen fehlt das zweite Value() und zum Anderen passen die Klammern nicht:
--- Code: ---if (Value("Bewohner_Eltern") eq "absent" || Value("Bewohner_Eltern") eq "gone")
--- Ende Code ---
Warum mappst Du eigentlich nicht "gone" auf "absent"? Das würde Dir eine der Abfragen einsparen.
Und das Arbeiten mit Value() ist von Haus aus gruslig, aber das ist ein anderes Thema. Solange der Unfug in der commandref steht, wird es sich nicht bessern.
--
mfeske:
Hallo @betateilchen,
vielen Dank für die Tipps. Den dummy wollte ich nutzen zur grafischen Darstellung und zur Kontrolle ob funktioniert was ich vorhabe.
--- Code: ---define UnautorisierteTueroeffnung_n notify Kontakt_Flur:(opened|closed) {}
--- Ende Code ---
ist natürlich kürzer und vermutlich besser. ;-)
Ich wollte dann die pushover einsetzen für die Abewesenheit:
--- Code: ---Kontakt_Flur:(opened|closed) { return if "Bewohner_Eltern" eq absent;
if event = opened {
system ("curl -s -F 'token=geheim' -F 'user=geheim' -F 'message=Haus\nUnautorisierte Türöffnung auf' https://api.pushover.net/1/messages.json");
} else {
system ("curl -s -F 'token=geheim' -F 'user=geheim' -F 'message=Haus\nUnautorisierte Türöffnung zu' https://api.pushover.net/1/messages.json");
};
}
--- Ende Code ---
dabei erhalte ich aber schon Fehlermeldungen :-(
--- Code: ---syntax error at (eval 206621) line 2, near "if event "
syntax error at (eval 206621) line 4, near "} else"
syntax error at (eval 206621) line 7, near ";
}"
Bareword "absent" not allowed while "strict subs" in use at (eval 206621) line 1.
--- Ende Code ---
eigentlich wollte ich es sogar erweitern um
--- Code: ---set UnautorisierteTueroeffnung on
set UnautorisierteTueroeffnung off
--- Ende Code ---
um es grafisch darzustellen.
Ein zusammenfassen von absent und gone wäre mir auch lieb, habe das mit dem mapping aber nicht gefunden.
Das mit dem Value ist vermutlich wirklich so drin, weil meist auf die commandref verweisen wird und ich ja meine Muster anhand der commandref baue.
Gruß
Micha
mfeske:
Ich hab das leider noch immer nicht hinbekommen.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln