Mögliches neues Modul: DoorMan - die klassische Haustürkamera mit Inneneinheit

Begonnen von delMar, 20 März 2021, 10:00:49

Vorheriges Thema - Nächstes Thema

delMar

Hallo,

ich hab die letzten Abende an einem Modul gearbeitet, mit dem FHEM die Aufgabe der klassischen Haustürkamera übernehmen kann.

Hier möchte ich mal das Interesse an dem Modul checken. Falls vorhanden, mach ich ein offizielles Modul daraus.
Falls nicht so sehr, wird's in contrib landen.

Das Modul im Alltag:
Wenn jemand klingelt, wird ein Bild von der Haustürkamera gemacht.
Dieses Bild kann ans Handy geschickt werden.
Das Klingeln wird als neues Event hinterlegt.
Events werden mit dem Bild verknüpft, können gelistet, angesehen werden, als gesehen markiert werden, gelöscht werden.

Dieses Modul stellt nur die Verbindung zwischen allen benötigten Devices dar.
Außer dem Protokollieren von Haustür-Events werden alle anderen Aufgaben "delegiert".
(und auch das Event-Management soll später ausgelagert werden können, zb an ZoneMinder)

Idealerweise dient es als Grundlage für eine Visualisierung, zb in FTUI.

Das Modul wird wie folgt konfiguriert

defmod frontdoor DoorMan FS20_Doorbell:on ipcam_north:snapshot1
attr frontdoor snapshotCommand get ipcam_north image
attr frontdoor snapshotSendCommand set pushmsg msg Haustür Es hat geläutet! expire=3600 attachment='www/snapshot/[ipcam_north:last]'
attr frontdoor snapshotWebPath fhem/www/snapshot/
attr frontdoor doorbellDisabledAfterTrigger 2


Zum Ablauf:
Es klingelt an der Tür. DoorMan kriegt das über FS20_Doorbell:on mit.
Bei mir zB ein FS20-KSE.
DoorMan legt nun schon ein Event an, aber noch ohne Bild.

Daraufhin führt DoorMan den Befehl aus snapshotCommand aus.
In diesem Fall wird über IPCAM ein Bild gemacht.

Die zweite Regex aus dem Define gibt an, wo DoorMan den Dateinamen des Bildes herbekommt.
Sobald dieses Event eintritt, wird das vorher angelegte Event um den Dateinamen ergänzt.
Ist das Attribut snapshotSendCommand definiert, wird das Kommando hier ausgeführt. Im Beispiel oben wird das Bild per PushOver versendet.

Wenn die Device-View in FHEM nun aktualisiert wird, sollten oben die existierenden Events sichtbar sein.
Um die Bilder per Link anzeigen zu können, muss wahrscheinlich in snapshotWebPath noch der Pfad zu den Bildern ergänzt werden.

Falls das Event mehrfach ausgelöst wird, kann mit doorbellDisabledAfterTrigger eine Sperrzeit in Sekunden angegeben werden.
(FS20-KSE sendet für ein Klingel-Ereignis zwei Signale, was den ganzen Ablauf zweimal auslöst. Das will ich nicht)

Die Readings newEvents und totalEvents können zur Visualisierung von Meldungen verwendet werden, dass es geklingelt hat.
Das Reading eventActive gibt an, ob gerade ein Event läuft. Dh ob gerade geläutet wird. Das Reading steht per default für 60 Sekunden auf 1, dann wieder auf 0. Damit kann zB in FTUI ein Popup mit dem Kamerastream angezeigt werden.
Die Dauer von 60 Sekunden ist über das Attribut eventDuration konfigurierbar.

Die Set und Get Befehle sollten selbsterklärend sein:
clearEvents löscht alle Events. DoorMan ist wieder "leer". Die Bilder werden allerdings nicht gelöscht.
deleteEvent löscht ein einzelnes Event. Die ID ist die erste Zahl in der Event Liste.
flagAllEventsAsShown setzt das Reading newEvents auf 0.

get event liefert die Daten zu einem einzigen Event.
get events liefert alle Events als JSON, damit zB ein FTUI Widget was damit anfangen kann.


Jetzt schon auf der Todo Liste:
* Wenn die Tür innerhalb zB 1 Minute geöffnet wird, wird das Event sofort als "gesehen" markiert.
* Abspielen des Türgongs über Audiogeräte, Anzeigen einer Meldung auf Kodi
* Aktivierbare Szenarien: zB
  * "Party-Modus": für eine bestimmte Zeit (zB bis 18 Uhr) wird beim Klingeln automatisch der Türöffner ausgelöst
  * wahlweises aktivieren/deaktivieren bestimmter Funktionen (Bild an Handy senden ja/nein, Türgong stumm, ...)
* Events sollen auch aus externen Systemen kommen können. zB ZoneMinder.
* evtl Arbeiten mit Streams, nicht nur mit Bildern.
* Events nach einer bestimmten Zeit oder ab einer bestimmten Menge löschen
* FTUI Visualisierung.

Technisch werden alle Events jetzt in einem versteckten Reading gespeichert. Das könnte bei vielen Events zu einem Problem werden und wird definitiv noch verbessert.


Feedback und Anregungen sind herzlich willkommen.


Außerdem:
Danke an alle hier im Forum für die Beantwortung aller möglichen Fragen.
Ohne eure Mithilfe würde aus so mancher Idee oft nix werden.



Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

loescher

Hi!

Ich hab zwar noch (!) keine Kamera an der Tür, aber wenn die mal da ist, dann klingt das Modul sehr interessant!

LG,
Stephan.

delMar

Danke für das Feedback.

Ich habs derzeit nach wie vor in diesem Baustellen-Zustand im Einsatz.
Aber wenn ich weiß, dass es Interessenten gibt, dann werd ich sicher dran weiterbauen

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

NewRasPi

Hallo delMar
eine sehr gute Idee. So ein Modul würde ich auch sehr gerne nutzen. Mein (Laien-) Wunsch wäre, es so einfach wie irgend machbar zu halten.
Es gibt bestimmt schon ähnliche Ansätze die aber auf Grund des Umfangs und Aufwands zu umständlich einzurichten sind.
Wenn es eine breite Anwendung finden soll wäre aus meiner Sicht ein gut überschaubares Modul von Vorteil.
Schöne Grüße
NewRasPi 
Raspberry Pi 2 Mod B + Raspberry Pi 3 + Raspberry Pi4; HM Lan Adapter; 8 Kanal Relaiskarte; ca. 15x 1wire Temperatur Sensor DS18B20; 10x HC-SR501 Bewegungsmelder; 9x HM Rauchmelder HM-Sec-SD; HM Funk Fenstersensoren; HM Strommess-Zwischenstecker;