Guten Morgen
Ich möchte gerne das ich eine Naricht bekomme wenn das Ereignis nochmal geprüft wurde nach einer Stunde ob es immer noch ist.
ZitatEingangstuer:present:.no set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'
Das ist im Moment mein Notify
Das Problem ist das ich jetzt immer ne Nachricht bekomme auch wenn der Sensor nur kurz weg ist. Deshalb wollte ich da nach einer Stunde nochmal prüfen und dann erst benachrichtigt werden
Würde ich über watchdog lösen.
https://fhem.de/commandref_DE.html#watchdog (https://fhem.de/commandref_DE.html#watchdog)
define wd_F_Bad_close watchdog Fenster_Bad:off 00:01:00 Fenster_Bad:on {\
fhem ('set cm fakeSC HK_Bad 0');;\
fhem ('setreading HK_Bad Fenster 0');;\
}
attr wd_F_Bad_close autoRestart 1
Wenn das Fenster nach 1 Minute immer noch geschlossen (off) ist, also nicht wieder auf 'on' gewechselt hat, dann tue etwas.
mit notify - dabei wird ein sleep gestartet, das nach 1 Stunde nochmal den status von Eingangstür present prüft, ob die Eingangstür immer noch auf ist, und erst dann die message schickt.
Benutze ich immer dann wenn ich nicht zusätzlich ein weiteres device definieren mag.
define n_F_Bad_close notify Eingangstuer:present:.no fhem("sleep 3600 sleep3600_Eingangstuer;{if (ReadingsVal('Eingangstuer','present','nA') eq 'on') {fhem(\"set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'\")}}")
Danke
Ich hab noch eine Frage.
Das ist ja eine Prüfung ob der Sensor der Tür nicht mehr da ist, dann soll die Naricht kommen. Wenn aber in der Stunde der Sensor wieder present ist soll keine Nachricht kommen
Dann müßte ich in der if Funktion no reinschauen stadt on?
Zitat von: Sebastian84 am 04 Juni 2023, 09:42:52Danke
Ich hab noch eine Frage.
Das ist ja eine Prüfung ob der Sensor der Tür nicht mehr da ist, dann soll die Naricht kommen. Wenn aber in der Stunde der Sensor wieder present ist soll keine Nachricht kommen
Dann müßte ich in der if Funktion no reinschauen stadt on?
Vermutlich...
Du musst halt den Status/Wert prüfen, der zu einer Nachricht führen soll (logisch)... ;)
Irgendwie hast du "sowas" doch schon (mehrfach) gefragt?
Immer noch keine (brauchbare) Lösung dafür gefunden?
EDIT: ;)
https://forum.fhem.de/index.php?topic=131751.msg1259245#msg1259245
https://forum.fhem.de/index.php?topic=131601.msg1257708#msg1257708
Dort wurden ähnliche/dieselben Vorschläge ebenfalls genannt... ;)
Gruß, Joachim
Zitatdefine Eingangstuer_Baterie_Zustand notify Eingangstuer:present:.no fhem("sleep 3600 sleep3600_Eingangstuer;{if (ReadingsVal('Eingangstuer','present','nA') eq 'no') {fhem(\"set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'\")}}").
Dann kommt diese Fehlermeldung:
Unknown command {if, try help.
Wo hast du es wie eingegeben?
Direkt in fhemWeb-cmd?
-> Strichpunkte doppeln?
Besser ein "leeres" notify etc. anlegen und dann dort anpassen (DEF)...
Gruß, Joachim
Direkt im fhem web.
ZitatDirekt im fhem web.
Dann muessen es zwei Semicolon sein, also
define n_F_Bad_close notify Eingangstuer:present:.no fhem("sleep 3600 sleep3600_Eingangstuer;;{if (ReadingsVal('Eingangstuer','present','nA') eq 'on') {fhem(\"set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'\")}}")
Jetzt kommt die Fehlermeldung
ZitatZitatMissing right curly or square bracket at (eval 1226566) line 1, at end of line
syntax error at (eval 1226566) line 1, at EOF
Verdopple halt einfach die Strichpunkte beim 1ten Vorschlag...
Oder lese bzgl. Klammern (mitdenken ist nicht verboten ;) )
Also geschweifte Klammer auf -> Perl
Da dann den fhem-Aufruf usw.
Gruß, Joachim
Das habe ich probiert vor {fhem aber kommt eine Fehlermeldung
Zitatdefine n_F_Bad_close notify Eingangstuer:present:.no {fhem("sleep 3600 sleep3600_Eingangstuer;;{if (ReadingsVal('Eingangstuer','present','nA') eq 'on') {fhem(\"set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'\")}}")
Sollte das nicht mit einem simplen DOIF zu lösen sein?
define EingangstuerPresent_DOIF DOIF ([Eingangstuer:present] eq "no")(set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike')DOELSE()
attr EingangstuerPresent_DOIF wait 3600:0
Gruß Jens
p.s. Dann lässt du den zweiten Ausführungsteil halt leer.
Ich möchte ja nur benarichtet werden wenn der Sensor nach einer Stunde immer noch nicht ereichbar ist. Der andere Zustand ist egal. Da es mir nur darum geht das ich nicht direkt informiert werde will wenn der Sensor kurz kein Empfang hat und dann wieder da ist. Es geht mir nur ums Richtige Baterie Wechsel.
Zitat von: Sebastian84 am 04 Juni 2023, 12:15:27Ich möchte ja nur benarichtet werden wenn der Sensor nach einer Stunde immer noch nicht ereichbar ist. Der andere Zustand ist egal. Da es mir nur darum geht das ich nicht direkt informiert werde will wenn der Sensor kurz kein Empfang hat und dann wieder da
Wenn "immer noch nicht ereichbar ist", dann Watchdog.
Die aktuellen Vorschläge mit sleep/at usw. prüfen ja nur, ob nach x-Zeit (zufällig) auch (nicht zwingend noch) nicht erreichbar...
EDIT: kenne DOIF zu wenig aber dort wird zurückgesetzt, wenn der Zustand mal wieder "korrekt" war? Könnte also auch tun was du willst...
Zitat von: Sebastian84 am 04 Juni 2023, 12:15:27Es geht mir nur ums Richtige Baterie Wechsel.
Geht es jetzt um Batterie wie hier https://forum.fhem.de/index.php?topic=133410.msg1274460#msg1274460 gefragt?
Oder worum?
define n_F_Bad_close notify Eingangstuer:present:.no {fhem("sleep 3600 sleep3600_Eingangstuer;;{if (ReadingsVal('Eingangstuer','present','nA') eq 'on') {fhem(\"set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'\")}}")}
Wird zumindest ohne Fehler bei Eingabe in fhem-Web-cmd geschluckt...
Gruß, Joachim
Jetzt geht es.
Das Problem bei den Senoren gibt es keine Batterie Anzeige. Deshalb wollte ich es so realisieren, dass wenn der Sensor ne gewisse Zeit ohne present ist dass die Batterie leer ist.
Kann mann das auch noch so einstellen das mann 1 Tag später erinnert wird?
Mach halt das sleep so lange du willst...
Allerdings denke ich Readingswatcher (heißt das [noch] so?) oder Watchdog ist eher geeignet?
Alternativ, wenn du eine Nachricht zu einer bestimmten Uhrzeit willst: tägl. at mit Prüfung des Readingsalters (ReadingsAge)...
Gruß, Joachim
Wie würde den der watchdog aussehen wenn der besser währe?
Zitat von: Sebastian84 am 04 Juni 2023, 15:00:24Wie würde den der watchdog aussehen wenn der besser währe?
Liest du die Antworten?
Gleich der erste Vorschlag war watchdog...
Ebenso in einem deiner anderen Threads mit ähnlicher Fragestellung...
EDIT: https://wiki.fhem.de/wiki/Watchdog
Gruß, Joachim
define Eingangstuer_Pruefung_Zustand1 watchdog present:no 00:01:00 present:yes {\{fhem(\"set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'\")}
Müsste das dann so aussehen?
Dass nur wenn der Eingangstuer Sensor auf no steht eine Naricht nach einer Minute schickt?Und wenn in der Minue der Sensor auf yes geht keine Nachricht kommt?
Zitat von: Sebastian84 am 04 Juni 2023, 18:35:00 define Eingangstuer_Pruefung_Zustand1 watchdog present:no 00:01:00 present:yes {\{fhem(\"set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'\")}
Müsste das dann so aussehen?
Dass nur wenn der Eingangstuer Sensor auf no steht eine Naricht nach einer Minute schickt?Und wenn in der Minue der Sensor auf yes geht keine Nachricht kommt?
Ich schätze: NEIN!
Weil dein Regex des notify ja folgendermassen:
Eingangstuer:present:.no
lautet.
Ob das stimmt: weißt nur du
Ob statt "no" ein "yes" muss: weißt nur du
Es gibt ja keine lists o.ä.
Man kann sich auch mittels Eventmonitor einen watchdog anlegen lassen...
https://wiki.fhem.de/wiki/Event_monitor
Gruß, Joachim
2023-06-04 18:45:23 AIN 11324 0105988-1
2023-06-04 18:45:23 FBNAME Eingangstür
2023-06-04 18:45:23 FBPROP HANFUNUnit,alarmSensor
2023-06-04 18:45:23 FBTYPE HAN-FUN
2023-06-04 18:45:23 ID 2000
2023-05-17 10:50:45 IODev FritzBox
2023-06-04 18:45:23 etsideviceid 409
2023-06-04 18:45:23 fwversion 0.0
2023-06-04 18:45:23 lastalertchgtimestamp 2023-06-04 14:58:52
2023-06-04 18:45:23 present yes
2023-06-04 18:45:23 state off
2023-06-04 18:45:23 unittype DOOR_OPEN_CLOSE_DETECTOR
Attributes:
IODev FritzBox
devStateIcon on:fts_door_right_open@#e56524 off:fts_door_right
event-min-interval power:120
event-on-change-reading .*
group Tür_Fensterkontakte
room 1_UG->Flur
userattr room_map structexclude
define Eingangstuer_Pruefung_Zustand1 watchdog Eingangstuer:present:.no 00:01:00 Eingangstuer:present:.yes {\{fhem(\"set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'\")}
Müsste nach der Liste doch dann so aussehen?
Internals:
CFGFN
CMD {\{fhem(\"set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'\")}
DEF Eingangstuer:present:.no 00:01:00 Eingangstuer:present:.yes {\{fhem(\"set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'\")}
FUUID 647cc1e1-f33f-cdd4-1f74-43b491e344fd2468
NAME Eingangstuer_Pruefung_Zustand1
NOTIFYDEV Eingangstuer_Pruefung_Zustand1,Eingangstuer
NR 21806
NTFY_ORDER 50-Eingangstuer_Pruefung_Zustand1
RE1 Eingangstuer:present:.no
RE2 Eingangstuer:present:.yes
STATE defined
TO 60
TYPE watchdog
Attributes:
autoRestart 1
Wie bist du nun zu dem Watchdog gekommen?
Eventmonitor?
EDIT: wenn ja, dann wird die Regex schon passen...
Wozu die ganzen Back-Slashes?
Du musst doch nicht mal nach Perl?
Ein "einfaches":
set pushmsg msg ' Eingangstürkontakt' 'Nicht mehr ereichbar''sebastian,galaxya50,galaxytaba8' 0 'bike'
müsste doch reichen?
Prüfen kannst du das ja einfach, indem du das in fehm-Web-cmd eingibst...
EDIT: unabhängig von den Slashes stimmen ja die Klammern auch nicht!
Gruß, Joachim
Hat super geklappt mit den watchdog
Danke