Hallo,
ich habe einen HM Fensterkontakt mit dem ich die Klappe im Briefkasten überwache.
Jetzt möchte ich aber 2 verschiedene Zustände erhalten.
1. Brief wurde eingeworfen (Klappe unter 30 Sec offen)
2. Es wurde etwas "großes" eingeworfen (Klappe steht noch offen)
Hat jemand einen Tip?
Gruß Detlef
Worum geht es dir denn genau? Geht es dir um Benachrichtigung, einen ablesbaren Status oder beides?
Die Benachrichtigung und die Visualisierung habe ich schon realisiert.
Mir gehts nur darum nur eine Meldung zu bekommen, damit nicht 2 Benachrichtigungen rausgehen.
Sprich, eine Funktion, die mir sagt ob der Stus "open" unter 30 Sec war, oder noch ansteht.
Aktuell mache ich das mit einem DOIF in folgender Form:
Internals:
DEF ([Briefkasten_FK] eq "open")(set Briefkasten open_long, {sendMeJabberMessage("Es wurde Posteingeworfen, die Klappe ist noch auf")})
DOELSEIF ([Briefkasten_FK] eq "closed")(set Briefkasten open, {sendMeJabberMessage("Es wurde Post eingeworfen")})
DOELSEIF ([Briefkasten] eq "closed")
NAME Briefkasten_status
NR 545
NTFY_ORDER 50-Briefkasten_status
STATE cmd_2
TYPE DOIF
CHANGETIME:
Helper:
Dblog:
Cmd_event:
Dblog:
TIME 1428133249.00024
VALUE Briefkasten_FK
Cmd_nr:
Dblog:
TIME 1428133249.00024
VALUE 2
State:
Dblog:
TIME 1428133249.00024
VALUE cmd_2
Readings:
2015-04-04 09:40:49 cmd_event Briefkasten_FK
2015-04-04 09:40:49 cmd_nr 2
2015-04-04 09:40:48 e_Briefkasten_FK_STATE closed
2015-04-04 09:40:48 e_Briefkasten_STATE open
2015-04-04 09:40:49 state cmd_2
2015-04-04 09:40:43 wait_timer no timer
Condition:
0 InternalDoIf('Briefkasten_FK','STATE','') eq "open"
1 InternalDoIf('Briefkasten_FK','STATE','') eq "closed"
2 InternalDoIf('Briefkasten','STATE','') eq "closed"
Devices:
0 Briefkasten_FK
1 Briefkasten_FK
2 Briefkasten
all Briefkasten_FK Briefkasten
Do:
0 set Briefkasten open_long, {sendMeJabberMessage("Es wurde Posteingeworfen, die Klappe ist noch auf")}
1 set Briefkasten open, {sendMeJabberMessage("Es wurde Post eingeworfen")}
2
Helper:
last_timer 0
sleeptimer -1
Internals:
0 Briefkasten_FK:STATE
1 Briefkasten_FK:STATE
2 Briefkasten:STATE
all Briefkasten_FK:STATE Briefkasten:STATE
Itimer:
Readings:
State:
Trigger:
Attributes:
room System
wait 30
"Briefkaste" ist dabei der Dummy für die Visualisierung.
Der Nacchteil dabei ist, das wenn die Klappe dann später geschlossen wird (Lange Post wird entnommen) es wieder zur Bedingung 2 kommt und eine erneute Meldung erfolgt.
Gruß Detlef
Gruß Detlef
Mit DOIF kenne ich mich nicht aus (und möchte es auch nicht) aber umgangsprachlich würde ich einfach auf eine lange Zeit testen (über 45 Sekunden!?). Ist die Klappe länger auf, Benachrichtigen, dass etwas großes drin steckt, andernfalls war es nur ein Brief. Zum entnehmen von großen Teilen würde sich die Klappe ja nur schließen. Diesen Status würde ich in dem Fall völliig unbeachtet lassen, wenn man davon ausgeht, dass man Briege durch eine größere Tür entnimmt und die Klappe dabei zu bleibt.
Hallo Detlef,
nur mal als Idee , eine Lösung für Dein Problem habe ich so erst mal nicht .
Ich habe jetzt auch schon ein paar Wochen einen HM-Sec-SCo , einen optischen Fensterkontakt, im Einsatz .
Den habe ich einfach mit der "Optik" nach oben auf den Boden des Briefkasten geklebt.
Wenn jetzt eine Zeitung , Post etc. eingeworfen wird dann meldet der Kontakt closed und ich weiß das Post im Briefkasten ist . Wenn natürlich nur etwas in der Klappe klemmt dann bekommt der Sensor auf dem Boden das nicht mit . Mein Kasten ist aber so groß das bisher alles auch unten ankam . Selbst wenn nur eine Benachrichtigungskarte eingeworfen wird hat der Sensor das mitbekommen .
Was natürlich nicht funktioniert ist , wenn der Sensor belegt ist und noch etwas eingeworfen wird wird das nicht noch mal erfasst, weil der Sensor schon belegt ist .
Mir genügt das aber als Info das etwas im Briefkasten ist vollkommen und es war recht einfach zu installieren .
Gruß Martin
Habs gelöst über 4 DOIF und 2 DUMMY.
Vielleicht etwas umständlich, aber es geht. Eventuell hat ja jemand ne bessere Lösung.
Hier meine:
Dummy Helpermodul (Zwischenstatus):
Internals:
CFGFN
NAME Briefkasten_helper
NR 964
STATE closed
TYPE dummy
CHANGETIME:
Helper:
Dblog:
State:
Dblog:
TIME 1428142822.11313
VALUE closed
Readings:
2015-04-04 12:20:22 state closed
Attributes:
devStateIcon open:message_mail@green:closed closed:message_mail open_long:message_mail@red:closed
Dummy für Visualisierung mit Rücksetzmöglichkeit:
Internals:
NAME Briefkasten_icon
NR 537
STATE closed
TYPE dummy
CHANGETIME:
Helper:
Dblog:
State:
Dblog:
TIME 1428142866.53042
VALUE closed
Readings:
2015-04-04 12:21:06 state closed
Attributes:
devStateIcon open:message_mail@green:closed closed:message_mail open_long:message_mail@red:closed
fp_Grundriss 120,1000,0,,,
room Unsorted
DOIF zur Erfassung kurzes Öffnen:
Internals:
CFGFN
DEF ([Briefkasten_FK] eq "open")(set Briefkasten_helper open)
DOELSEIF ([Briefkasten_helper] eq "closed")
NAME Briefkasten_status_open
NR 989
NTFY_ORDER 50-bk_di1
STATE initialized
TYPE DOIF
CHANGETIME:
Helper:
Dblog:
Cmd_event:
Dblog:
TIME 1428142822.11801
VALUE Briefkasten_helper
Cmd_nr:
Dblog:
TIME 1428142822.11801
VALUE 2
State:
Dblog:
TIME 1428142904.69368
VALUE initialized
Readings:
2015-04-04 12:21:44 state initialized
Condition:
0 InternalDoIf('Briefkasten_FK','STATE','') eq "open"
1 InternalDoIf('Briefkasten_helper','STATE','') eq "closed"
Devices:
0 Briefkasten_FK
1 Briefkasten_helper
all Briefkasten_FK Briefkasten_helper
Do:
0 set Briefkasten_helper open
1
Helper:
last_timer 0
sleeptimer -1
Internals:
0 Briefkasten_FK:STATE
1 Briefkasten_helper:STATE
all Briefkasten_FK:STATE Briefkasten_helper:STATE
Itimer:
State:
Timerfunc:
Attributes:
DOIF zur Erfassung langes Öffnen:
Internals:
CFGFN
DEF ([Briefkasten_FK] eq "open")(set Briefkasten_helper open_long)
DOELSEIF ([Briefkasten_helper] eq "closed")
NAME Briefkasten_status_open_long
NR 1007
NTFY_ORDER 50-bk_di2
STATE initialized
TYPE DOIF
CHANGETIME:
Helper:
Dblog:
Cmd_event:
Dblog:
TIME 1428142822.13036
VALUE Briefkasten_helper
Cmd_nr:
Dblog:
TIME 1428142822.13036
VALUE 2
State:
Dblog:
TIME 1428142887.83407
VALUE initialized
Wait_timer:
Dblog:
TIME 1428142782.0023
VALUE no timer
Readings:
2015-04-04 12:21:27 state initialized
Condition:
0 InternalDoIf('Briefkasten_FK','STATE','') eq "open"
1 InternalDoIf('Briefkasten_helper','STATE','') eq "closed"
Devices:
0 Briefkasten_FK
1 Briefkasten_helper
all Briefkasten_FK Briefkasten_helper
Do:
0 set Briefkasten_helper open_long
1
Helper:
last_timer 0
sleeptimer -1
Internals:
0 Briefkasten_FK:STATE
1 Briefkasten_helper:STATE
all Briefkasten_FK:STATE Briefkasten_helper:STATE
Itimer:
State:
Timerfunc:
Attributes:
wait 20
DOIF zum setzen des Visualisierungs Dummy:
Internals:
DEF ([Briefkasten_helper] eq "open_long")(set Briefkasten_icon open_long, {sendMeJabberMessage("Es wurde Post eingeworfen, die Klappe ist noch auf")})
DOELSEIF ([Briefkasten_helper] eq "open")(set Briefkasten_icon open, {sendMeJabberMessage("Es wurde Post eingeworfen")})
DOELSEIF ([Briefkasten_helper] eq "closed")
NAME Briefkasten_status
NR 545
NTFY_ORDER 50-Briefkasten_status
STATE cmd_3
TYPE DOIF
CHANGETIME:
Helper:
Dblog:
Cmd_event:
Dblog:
TIME 1428142822.18414
VALUE Briefkasten_helper
Cmd_nr:
Dblog:
TIME 1428142822.18414
VALUE 3
State:
Dblog:
TIME 1428142822.18414
VALUE cmd_3
Wait_timer:
Dblog:
TIME 1428142822.16785
VALUE no timer
Readings:
2015-04-04 12:20:22 cmd_event Briefkasten_helper
2015-04-04 12:20:22 cmd_nr 3
2015-04-04 12:20:22 e_Briefkasten_helper_STATE closed
2015-04-04 12:20:22 state cmd_3
2015-04-04 12:20:22 wait_timer no timer
Condition:
0 InternalDoIf('Briefkasten_helper','STATE','') eq "open_long"
1 InternalDoIf('Briefkasten_helper','STATE','') eq "open"
2 InternalDoIf('Briefkasten_helper','STATE','') eq "closed"
Devices:
0 Briefkasten_helper
1 Briefkasten_helper
2 Briefkasten_helper
all Briefkasten_helper
Do:
0 set Briefkasten_icon open_long, {sendMeJabberMessage("Es wurde Post eingeworfen, die Klappe ist noch auf")}
1 set Briefkasten_icon open, {sendMeJabberMessage("Es wurde Post eingeworfen")}
2
Helper:
last_timer 0
sleepdevice Briefkasten_helper
sleeptimer -1
Internals:
0 Briefkasten_helper:STATE
1 Briefkasten_helper:STATE
2 Briefkasten_helper:STATE
all Briefkasten_helper:STATE
Itimer:
Readings:
State:
Timerfunc:
Trigger:
Attributes:
room Unsorted
wait 30:30:00
DOIF zum zurücksetzen des Helper Dummys damit erneut gemeldet wird, wenn noch etwas eingeworfen wird:
Internals:
CFGFN
DEF ([Briefkasten_helper] ne "closed")(set Briefkasten_helper closed)
NAME Briefkasten_helper_reset
NR 3058
NTFY_ORDER 50-Briefkasten_helper_reset
STATE cmd_1
TYPE DOIF
CHANGETIME:
Helper:
Dblog:
Cmd_event:
Dblog:
TIME 1428142822.14356
VALUE Briefkasten_helper
Cmd_nr:
Dblog:
TIME 1428142822.14356
VALUE 1
State:
Dblog:
TIME 1428142822.14356
VALUE cmd_1
Wait_timer:
Dblog:
TIME 1428142822.06187
VALUE no timer
Readings:
2015-04-04 12:20:22 cmd_event Briefkasten_helper
2015-04-04 12:20:22 cmd_nr 1
2015-04-04 12:20:22 e_Briefkasten_helper_STATE closed
2015-04-04 12:20:22 state cmd_1
2015-04-04 12:20:22 wait_timer no timer
Condition:
0 InternalDoIf('Briefkasten_helper','STATE','') ne "closed"
Devices:
0 Briefkasten_helper
all Briefkasten_helper
Do:
0 set Briefkasten_helper closed
Helper:
last_timer 0
sleepdevice Briefkasten_helper
sleeptimer -1
Internals:
0 Briefkasten_helper:STATE
all Briefkasten_helper:STATE
Itimer:
Readings:
State:
Trigger:
Attributes:
do always
wait 60
Und der Vollständigkeit halber noch das DOIF für die Ansage:
Internals:
DEF ([Briefkasten_icon] eq "open_long" and [Detlef_presence] eq "present")(set Sonos_Kueche Speak 45 de |kb_air| Es wurde Post eingeworfen und die Klappe ist noch offen)
DOELSEIF ([Briefkasten_icon] eq "open" and [Detlef_presence] eq "present")(set Sonos_Kueche Speak 45 de |kb_air| Es wurde Post eingeworfen)
DOELSEIF ([Briefkasten_helper] eq "closed")
NAME Briefkasten_Ansage
NR 547
NTFY_ORDER 50-Briefkasten_Ansage
STATE cmd_1
TYPE DOIF
CHANGETIME:
Helper:
Dblog:
Cmd_event:
Dblog:
TIME 1428142834.86712
VALUE Detlef_presence
Cmd_nr:
Dblog:
TIME 1428142834.86712
VALUE 1
Error:
Dblog:
TIME 1428137220.94551
VALUE internal does not exist
State:
Dblog:
TIME 1428142834.86712
VALUE cmd_1
Wait_timer:
Dblog:
TIME 1428138043.74062
VALUE no timer
Readings:
2015-04-04 12:20:34 cmd_event Detlef_presence
2015-04-04 12:20:34 cmd_nr 1
2015-04-04 12:20:22 e_Briefkasten_helper_STATE closed
2015-04-04 12:21:06 e_Briefkasten_icon_STATE closed
2015-04-04 12:31:01 e_Detlef_presence_STATE present
2015-04-04 12:20:34 state cmd_1
Condition:
0 InternalDoIf('Briefkasten_icon','STATE','') eq "open_long" and InternalDoIf('Detlef_presence','STATE','') eq "present"
1 InternalDoIf('Briefkasten_icon','STATE','') eq "open" and InternalDoIf('Detlef_presence','STATE','') eq "present"
2 InternalDoIf('Briefkasten_helper','STATE','') eq "closed"
Devices:
0 Briefkasten_icon Detlef_presence
1 Briefkasten_icon Detlef_presence
2 Briefkasten_helper
all Briefkasten_icon Detlef_presence Briefkasten_helper
Do:
0 set Sonos_Kueche Speak 45 de |kb_air| Es wurde Post eingeworfen und die Klappe ist noch offen
1 set Sonos_Kueche Speak 45 de |kb_air| Es wurde Post eingeworfen
2
Helper:
last_timer 0
sleeptimer -1
Internals:
0 Briefkasten_icon:STATE Detlef_presence:STATE
1 Briefkasten_icon:STATE Detlef_presence:STATE
2 Briefkasten_helper:STATE
all Briefkasten_icon:STATE Detlef_presence:STATE Briefkasten_helper:STATE
Itimer:
Readings:
State:
Timerfunc:
Trigger:
Attributes:
room Unsorted
Ganz wichtig sind die wait Timer!
Gruß Detlef
Ich setze einfach wenn"open"einen dummy auf "Post " und um Mitternacht per at auf "Lehr " das reicht mir fällig um nicht zu oft rauszulaufen
Hallo!
Also ich habe mir anhand dieser Anleitung http://forum.fhem.de/index.php/topic,33961.msg270606.html#msg270606 (http://forum.fhem.de/index.php/topic,33961.msg270606.html#msg270606) einen "smarten" Briefkasten gebaut.
Dafür habe ich einen Homematic Türkontakt (HM-SEC-SC-2) benutzt, welcher von Hause aus zwei Schalter beinhaltet. Einmal den normalen Türkontakt (Reed-Kontakt) und dann noch einen Sabotagekontakt (kleiner Taster). Beide habe ich ausgelötet und jeweils einen von diesen Reed-Kontakten http://www.amazon.de/Magnetkontakt-Fensterkontakt-Reedkontakt-Alarmanlage-Alarmkontakt/dp/B00FOIUBZM/ref=sr_1_1?ie=UTF8&qid=1428171507&sr=8-1&keywords=reedkontakt (http://www.amazon.de/Magnetkontakt-Fensterkontakt-Reedkontakt-Alarmanlage-Alarmkontakt/dp/B00FOIUBZM/ref=sr_1_1?ie=UTF8&qid=1428171507&sr=8-1&keywords=reedkontakt) an jeden Schalter gelötet und so in meinen Briefkasten geklebt, dass der eine Reed auslöst, wenn die Einwurfklappe geöffnet wird und der andere wenn ich die Entnahmeklappe öffne, um die Post rauszunehmen.
Mittels zweier notify übergebe ich den jeweiligen Zustand an ein dummy "Post".
Briefkasten:open {fhem ("set Post on")}
Briefkasten {if (ReadingsVal("Briefkasten", "sabotageError", "") eq "on") {fhem ("set Post off")}}
Sobald die Einwurfklappe durch den Briefträger geöffnet wird, wird der dummy Post auf "on" gesetzt und ich bekomme eine Push "Sie haben Post!". Wenn ich die Entnahmeklappe öffne, um die Post herauszunehmen, wird der dummy auf "off" gesetzt und es wird eine Push "Briefkasten geleert" verschickt.
Den Zustand der offenstehenden Einwurfklappe bei großen Briefen habe ich über ein Watchdog gelöst. Wenn die Klappe nicht nach bsw. 15 Sekunden wieder zu ist, wird der dummy Post auf "gross" gesetzt.
Briefkasten:open 00:00:15 Briefkasten:closed set Post gross
Für meine Bedürfnisse auf jeden Fall ausreichend und mit relativ wenig Code gelöst.
Oli
Hallo Oli S. ,
dann bekommt Du aber 2 Zustände gemeldet, oder?
Gruß Detlef
Hallo Detlef!
Na ja, ich kriege bei Posteinwurf erst den Zustand "Post ja" und 15 Sekunden später den Zustand "Post gross". Aber das stört mich jetzt nicht so sehr.
Oli
Hallo,
ich hatte diesen Beitrag mit als Vorlage für meine Umsetzung genommen.
Ich benutze einen billigen China Fenstersensor. Der Funkt auf 433MHz (IT). Habe ich auch schon häufiger etwas zu geschrieben.
https://www.lightinthebox.com/de/p/gs-iwds07-drahtlosen-intelligenten-tuer-fenster-magnetkontakt_p4766217.html?prm=1.18.104.0
Neu ist nur, das die wohl ausverkauft sind :(
Statt des Magnetkontaktes habe ich mir einen kleinen taster an die Klappe montiert. Somit ist Briefkasten offen = Fenster auf.
Zum Rücksetzen nach dem entnehmen benutze ich den Manipulationskontakt. Dafür habe ich einen versteckten Taster an die Seite des Briefkastens montiert.
Gelöst habe ich das mit einem DOIF:
defmod di_Briefkasten DOIF ([Briefkasten] eq "Offen") (\
{\
my $state = ReadingsVal("Briefkasten","state",0);;\
if ($state eq "on"){\
fhem("set pushmsg msg device=pushdev sound=bike title=POST 'Post ist gekommen'");;\
}\
if ($state eq "off"){\
fhem("set pushmsg msg device=pushdev sound=incoming title=POST 'Große Post ist gekommen. Der Briefkasten steht auf!'");;\
}\
}\
) DOELSEIF ([Briefkasten] eq "Kaputt")
attr di_Briefkasten do always
attr di_Briefkasten room IT
attr di_Briefkasten wait 15
Sobald der Briefkasten geöffnet wird, startet der Timer. Wird der Rücksetzknopf betätigt, wird der Timer abgebrochen.
Nach den 15sek. prüfe ich den Zustand...wenn offen dann Quillt der Briefkasten über.
Vielleicht braucht es ja nochmal jemand...
Gruß
Bismsoa