Doorbird Modul [Testversion]

IPSymconDoorbird

Dokumentation auf Github

Kurzanleitung:

PHP Modul für IP-Symcon 4.x. Es werden die Funktionen die API von Doorbird zur Zeit bietet für IP-Symcon unterstützt. Bis auf Audio werden die Funktionen der API abgebildet.

[u]Funktionsumfang:

[/u]Mit dem Modul lassen sich Befehle an eine Doorbird Türsprechanlage senden und die Statusrückmeldung in IP-Symcon (ab Version 4) empfangen.
Befehle an Doorbird senden:

[ul]
[li]Tür öffnen[/li][li]IR Licht einschalten[/li][li]Snapshot anfordern[/li][/ul]
Status Rückmeldung:

[ul]
[li]Bild Anzeige[/li][li]Zeitpunkt letztes Klingelsignal[/li][li]Zeitpunkt letzte Bewegung[/li][li]Zeitpunkt letzte Türöffnung[/li][li]Bild bei Bewegung[/li][li]Bild beim Klingeln[/li][/ul]
2. Voraussetzungen

[ul]
[li]IPS 4.x[/li][li]Doorbird Türsprechanlage, Hardware version 1.00 und höher. Firmware Version 000098 und höher.[/li][/ul]
3. Installation

a. Laden des Moduls

Über das ‚Modul Control‘ in IP-Symcon (Ver. 4.x) folgende URL hinzufügen:
GitHub - Wolbolar/IPSymconDoorbird: PHP Modul für IP-Symcon 4.x für Doorbird

https://github.com/Wolbolar/IPSymconDoorbird

b. Einrichtung in IPS

In IP-Symcon Instanz hinzufügen auswählen unter der Kategorie
unter der man die Doorbird hinzufügen will und Doorbird auswählen.
nach Abschluss der Instanzkonfiguartion werden zwei Kategorien angelegt. Eine für
Doorbird Klingelhistorie, hier werden die Bilder der Doorbird bei einem Klingelsignal
abgelegt. Eine weitere Kategorie Doorbird Besucherhistorie, hier werden Bilder bei einer
Bewegungsauslösung oder manueller Anforderung abgelegt.
Im Konfigurationsformular ist der Doorbird User und das Doorbird Passwort zu ergänzen.
Diese können in der Doorbird App nachgeschlagen werden. Die IP Adresse von Doorbird
und die IP Adresse von IP-Symcon ist zu ergänzen.
Bei jeder ausgelösten Bewegung wird von der Doorbird ein Snapshoot angefordert und in
IP-Symcon abgelegt. Ebenso wird bei jedem Klingeln ein Foto in IP-Symcon abgelegt. Unter Anzahl
der zu speichernden Bilder kann das maximale Limit der zu speichernden Bilder angegeben werden.
Wird das Limit erreicht werden die Bilder von vorne überschrieben.

Die Benachrichtigungen von Doorbird an IP-Symcon lassen sich einzeln auswählen und die Erholungszeit einstellen.
Standardeinstellung ist aktiv und der Minimumwert von 10 Sekunden. In dieser Zeit wird nicht erneut ein Event von Doorbird ausgelöst. Der Maximalwert liegt bei 10000 Sekunden.

dorrbirdmodul2.png

4. Funktionsreferenz

Doorbird:

Die IP Adresse des Doorbird sowie von IP-Symcon und der Username sowie Passwort von Doorbird sind anzugeben.
Es wird bei jedem Event Klingeln, Bewegung, Tür öffnen von Doorbird eine Mitteilung an IP-Symcon gesendet.
Mit Hilfe eines Ereignisses was bei Variablenaktualisierung greift können dann in IP-Symcon weitere Aktionen
ausgelöst werden. Das Livebild kann in IP-Symcon eingesehen werden sowie die Historie der letzten Klingelbesucher.

Verfügbare Funktionen:

Doorbird_SetupNotification(integer $InstanceID)

Benachrichtigungen zu IP-Symcon von der Doorbird einrichten

Doorbird_GetInfo(integer $InstanceID)

Liest Buildnumber, Firmware Version und WLAN MAC Adresse von Doorbird aus

Doorbird_GetSnapshot(integer $InstanceID)

Fordert einen Snapshoot von Doorbird an und legt diesen in IP-Symcon ab

Doorbird_Light(integer $InstanceID)

Schaltet die IR Lampen des Doorbird ein, entspricht Lampen Button in der App

Doorbird_OpenDoor(integer $InstanceID)

Betätigt den Türöffner der Doorbird

Es wird jetzt statt die Besucherhistorie aus der Doorbird auszulesen, die Bilder bei einem Klingeln in IP-Symcon abgelegt. Das hat den Vorteil das man unabhängig von den in der Doorbird hinterlegten Daten mehr Bilder speichern kann. Das Limit der gespeicherten Bilder kann man im Modul einstellen.

Hi Fonzo,

cool ich werde es mal testen. Ich hatte auch heute mit einem Modul begonnen, aber du bist schon weiter. Vielleicht kannst du dir ja noch etwas Nützliches aus meinem Modul rauspicken.
GitHub - iMaxxx/Sinthex-eHome-Modules

Gruß
iMaxxx

Hast Du denn noch weitere Funktionen drinn die noch nicht eingebaut sind oder wünscht Du das noch was ergänzt wird. Audio wäre natürlich eine feine Sache aber das übersteigt meine Fähigkeiten.

  • Es fehlen jetzt natürlich noch die Actions im Webfront um Öffner, Licht (mit Status), etc. zu schalten.
  • Die Kategorien würde ich beim Start automatisiert erstellen.
  • Firmware, Build und MAC würde ich standardmäßig auf Hidden setzen.
  • HTMLBox: Wenn das Gerät nicht erreichbar ist (Remote), könnten automatisch Bilder (mit Interval) angezeigt werden (Javascript).
  • History und Snapshot würde ich eventuell aus Verständnisgründen in Besucherhistorie und Klingelhistorie umbenennen.
  • Die Historie-Bilder würde ich mit Datum-Zeit benennen. Bei jeder Aktivität kann das aktuelle hinzugefügt werden und das älteste Bild wird gelöscht. (Man könnte die VarIds verketten und in einer Variable speichern - somit immer die letzte VarId löschen.)

Vielen Dank für das Modul. Da habe ich drauf gewartet.

Teste ich heute Abendd mal in meiner Anlage.

Gruß
Benjamin

Danke für die Anmerkungen. Grundsätzlich bastelt sich ja jeder sein Webfront nach seinen Bedürfnissen oder nutzt sogar andere Oberflächen wie IPSView oder NEO, daher habe ich bisher darauf verzichtet Dinge gezielt für den Webfront anzulegen. Ich würde sowieso nie empfehlen den Ordner so direkt in den Webfront einzubinden sondern statt dessen immer einen eigene Kategorie zur Visualisierung zu nutzten und dort Links zu den Variablen anzulegen die man visualisieren will.

Da das ja an sich kein Schalter ist mit An/ Aus sondern einfach nur der Befehl abgesetzt wird wie würdest Du das am besten im Webfront visualisieren wollen? Das einfachste ist sicher man erstellt sich in dem Ordner der visualisiert werden soll ein Skript und kopiert dort einfach den passenden Befehl ein. Dann kann man das Skript über den Webfront starten.

Dazu einfach ein Skript erstellen und den passenden Befehl reinkopieren, z.B.

Doorbird_Light(12345); // 12345 ObjektID von der Doorbird Instanz

Stimmt da hast Du recht, ich wollte es dem Nutzer überlassen wo er die Bilder gespeichert haben will und wie die Kategorien benannt sind. Wenn die automatisch erstellt werden können diese ja aber immer noch verschoben und umbenannt werden, ist vielleicht einfacher.

Wieso, s.o. würdest Du das so wollen? Wenn jemand das nicht visualisiert haben will soll er halt keinen Link in dem Visualisierungsordner setzten.

Wenn Du da eine konkrete Idee hast nur her damit das kann man ja einbauen.

Guter Vorschlag werde ich ändern.

Die Historie Bilder werden vom Doorbird ausgelesen. Das Automatische hinzufügen und löschen macht der Doorbird. Es werden lediglich die 20 Speicherplätze des Doorbird ausgelesen. Anderes ist das bei den Snapshoots hier wird bei jeder Bewegung ein Bild in IP-Symcon abgelegt das ist unabhängig vom Doorbird.

Ich hatte auch überlegt die mit Datum und Uhrzeit zu versehen. Das Problem ist nur das ich diese wieder eindeutig identifizieren muss um Duplikate zu vermeiden. Ich schau mir das noch mal an mit einer Ident sollte das dann auch mit Datum und Uhrzeit gehen.

Wieso, s.o. würdest Du das so wollen? Wenn jemand das nicht visualisiert haben will soll er halt keinen Link in dem Visualisierungsordner setzten.

Weil ich ein Modul immer so entwickeln würde, dass ein bequemer/Dummy-User es direkt einsetzen kann. Alle Zusätzlich, im Regelfall unbedeutenden Dinge würde ich im Webfront verbergen.

Da das ja an sich kein Schalter ist mit An/ Aus sondern einfach nur der Befehl abgesetzt wird wie würdest Du das am besten im Webfront visualisieren wollen? Das einfachste ist sicher man erstellt sich in dem Ordner der visualisiert werden soll ein Skript und kopiert dort einfach den passenden Befehl ein. Dann kann man das Skript über den Webfront starten.
Dazu einfach ein Skript erstellen und den passenden Befehl reinkopieren, z.B.

Doorbird_Light(12345); // 12345 ObjektID von der Doorbird Instanz

Ich hatte in meinem Modul z.B. beim Türöffner eine Varable [Türöffner aktiv/inaktiv] welche gedrückt werden kann und sich nach 5 Sekunden wieder zurückstellt. Aber Skripte sind warscheinlich noch besser. Diese würde ich einfach zu beginn Erstellen. Wer sie nicht braucht kann sie ja immernoch löschen. (Wie gesagt, ohne weiteres Basteln sollte es eigentlich direkt alles machen. Sorgt für einen größeren Aha-Effekt und kann später weiter angepasst werden.

Stimmt da hast Du recht, ich wollte es dem Nutzer überlassen wo er die Bilder gespeichert haben will und wie die Kategorien benannt sind. Wenn die automatisch erstellt werden können diese ja aber immer noch verschoben und umbenannt werden, ist vielleicht einfacher.

Per default im erstellten Ordner optional im Formular anpassbar. Hat auch den Charme, dass das Modul direkt funktioniert, ohne weiteres handeln.

Die Historie Bilder werden vom Doorbird ausgelesen. Das Automatische hinzufügen und löschen macht der Doorbird. Es werden lediglich die 20 Speicherplätze des Doorbird ausgelesen. Anderes ist das bei den Snapshoots hier wird bei jeder Bewegung ein Bild in IP-Symcon abgelegt das ist unabhängig vom Doorbird.

Verstehe ich, aber so brauchst du deinen rechenintensiven Interval. Mach es doch einfach wie beim Klingeln, dann ist es immer aktuell und es müssen nicht alle überschrieben werden, sondern nur das Neuste.

Ich hatte auch überlegt die mit Datum und Uhrzeit zu versehen. Das Problem ist nur das ich diese wieder eindeutig identifizieren muss um Duplikate zu vermeiden. Ich schau mir das noch mal an mit einer Ident sollte das dann auch mit Datum und Uhrzeit gehen.

Deshalb die Idee die Bilder-Idents/VarIds in einer (ausgeblendeten) Variable zu schreiben.
z.B.
String ImageIds=23484,89534,34368,21123,13633
Neues Bild wird gespeichert mit id 73476. Jetzt:
String ImageIds=73476,23484,89534,34368,21123

Ich habe mal ein Update hochgeladen. Die Kategorien werden jetzt automatisch erstellt und es gibt Buttons fürs Webfront. Falls schon installiert am besten noch mal löschen und nach dem Update erneut installieren, sollte jetzt nur einmalig notwendig sein.

Vielen vielen Dank für das Modul!
Werde ich mal testen…:slight_smile:

Wäre mal spannend ob Du ein Bild angezeigt bekommst. Du sagtest ja Du hattest damit Probleme. Ich bekomme ein Bild angezeigt, ich denke das kann dann wenn nur an irgendwelchen Einstellungen bei Doorbird liegen oder vielleicht am Browser.

Hi,

war gerade beim Testen. Die Historie-Ordner wurden mehrfach erstellt. Habe diese manuell gelöscht, dabei ist meine Datenbank inkonsistent geworden. Ich musste gerade ein Image aus der settings.json löschen, weil es den Parent nicht mehr gab.
Folgen: Das Webinterface zeigte nur noch einen Fehler, nach einem Neustart startete symcon nicht mehr.

*** IP-Symcon starting
Exception: Invalid parent 36334 for object ID 15797. Starting halted.
*** IP-Symcon shutdown

Ob die Ursache des Bugs bei Symcon oder dem Modul liegt, kann ich noch nicht sagen. Fakt ist, dass die „Folder“ mehrfach erstellt werden.

Jetzt wo Symcon wieder läuft ist erstmal Feierabend für heute :o Aber morgen teste ich gerne weiter.

Danke für die Rückmeldung. Da bin ich auch drüber gestolpert, habe einen Bugfix hochgeladen. Einfach nochmal Modulupdate durchführen und mit der neusten Version probieren.

Hi,

habe das Modul jetzt installiert und soweit konfiguriert. Auslesen der Daten funktioniert und Livebild wird angezeigt.

Leider bekommt das Modul nicht mit, wenn jemand geklingelt hat. Die Variable „Zeitpunkt letztes Klingelsignal“ aktualisiert sich nicht:

Hast Du im Modul in der Testumgebung auf Benachrichtigungen einrichten gedrückt?
Wie sieht denn der Return Code in der Var Doorbird Return aus?
Abzufragen mit:


$InstanzenListe = IPS_GetInstanceListByModuleID("{D489FA0B-765D-451E-8B21-C6B61ECAC00E}");
$InstanzCount = 0;

foreach ($InstanzenListe as $InstanzID) {
	$doorbirdid =  $InstanzID;
	 $InstanzCount++;
    $Childs[] = IPS_GetChildrenIDs($InstanzID);
}

 $notificationid = IPS_GetObjectIDByIdent("DoorbirdReturn", $doorbirdid);       
 $notification = GetValue($notificationid);
 echo $notification;

Passiert etwas wenn Du von Hand in einen Browser

http://<ipsip>:3777/hook/doorbird<12345>?doorbirdevent=doorbell

eingibst. <ipsip> ist durch die IP von IP-Symcon zu ersetzten und <12345> durch die ObjektID der Doorbirdinstanz

Hi,

ja Benachrichtigung einrichten hatte ich gedrückt.
Mein Return Code sieht so aus:

{"BHA": { "RETURNCODE": "1", "NOTIFICATIONS": [{"event": "motionsensor","subscribe": "1","url": "http://127.0.0.1:3777/hook/doorbird45604?doorbirdevent=motionsensor","user": "","password": "","relaxation": "10"},
{"event": "doorbell","subscribe": "1","url": "http://127.0.0.1:3777/hook/doorbird45604?doorbirdevent=doorbell","user": "","password": "","relaxation": "10"},
{"event": "dooropen","subscribe": "1","url": "http://127.0.0.1:3777/hook/doorbird45604?doorbirdevent=dooropen","user": "","password": "","relaxation": "10"}]}}

Habe dann

http://127.0.0.1:3777/hook/doorbird45604?doorbirdevent=doorbell
ausgeführt und habe jetzt auch eine Aktualisierung der Klingel erhalten:

Wenn jedoch jemand an der Doorbird selbst klingelt, passiert nichts.

Hoffe das hilft Dir weiter.

Gruß
Benjamin

Ja die IP Adresse ist falsch. 127.0.0.1 ist localhost Du must aber die richtige IP Adresse von IP Symcon angeben sonst weis ja Doorbird nicht wo er die Sache hinschicken soll. Localhost wäre ja in dem Fall die Doorbird selbst.

Die lokale IP sieht irgendwie so aus 192.168.X.X und kann abhängig vom Betriebssystem auf dem IP-Symcon läuft nachgeschlagen werden. Auf welchem Betriebssystem läuft denn IP-Symcon?

Wenn Du Windows benutzt nimm einfach ein Skript in IP-Symcon:


$ipinfo = Sys_GetNetworkInfo ( );
var_dump($ipinfo);

zeigt Dir die Ip Adresse an.

unter Raspberry:


$ip = exec("sudo ifconfig eth0 | grep 'inet Adresse:' | cut -d: -f2 | awk '{ print $1}'");
var_dump($ip);

Hi Ok,

das erklärt natürlich einiges. Jetzt scheint es auch zu klappen.
Mein IPS läuft auf Windows 10.

Vielen Dank für die Unterstützung!.

Tolles Modul.

Gruß
Benjamin

Jetzt habe ich ein ganz anderes Problem.

Die Variable „Zeitpunkt der letzten Bewegung“ aktualisiert sich jetzt alle paar sekunden und speicher natürlich ein Bild.
Ich habe den Bewegunsgmelder aber in der Doorbird App deaktiviert.

Eine Idee?

Kann ich den Bwegunsmelder über das Modul ebenfalls deaktivieren?

Bitte gerne geschehen. Wenn Dir noch was auffällt als melden. Was halt noch zu unserem Glück fehlt ist SIP für Audio aber eventuell wird das ja noch in Zukunft was, mal sehen was der Hersteller da so treibt.