Es wird zu den Aufnahmen ein LED-Blitz ausgelöst. Dies kann abhängig von der Umgebungshelligkeit geschehen.
Die Aufnahmen für Bewegung und/oder Klingeltasten-Betätigung werden gespeichert und können später beurteilt werden.
Über einen PIR-Sensor werden Bewegungen vor der Türstation erkannt. Bewegungen können Licht einschalten, Aufnahmen und/oder Benachrichtigungen auslösen.
Live Bilder oder Streams können angesehen werden. Es können Aufnahmen für die Log-Funktion erstellt werden.
Es können beliebig viele vordefinierte Sprachmitteilungen abgespielt werden.
Die wichtigste Funktion, die Tür öffnen. ist selbstverständlich auch vorhanden. Diese Funktion kann eigenständig oder in Kombination mit einer Sprachmitteilung genutzt werden
Abhängig von dem Umgebungslicht können der Blitz oder der Lichtausgang gesteuert werden.
Wird es dunkel, kann ein Ausgang ein Umgebungslicht steuern. Dies kann auch abhängig von der Bewegungserkennung erfolgen.
Bei Bewegung oder dem betätigen des Klingeltasters kann eine Benachrichtigung erfolgen. Dies kann eine Push-Benachrichtigung sein oder einen "Gong" steuern.
DoorBell32 ist ein Selbstbau-Projekt und als soches ist man gefordert selber Hand anzulegen. Die Frage nach dem 'Warum' stelle ich mir bei jedem Projekt. Ich finde immer gute Argumente für das 'Selber Machen'. Nunja, ob es dann immer fair ist die Argumente dagegen zu ignorieren sei dahin gestellt ;-).
Aber es gibt wirklich Argumente dafür. Ich habe selbst seit vielen Jahren eine Türklingel mit Kamera und einer App. Bin ich zufrieden? Nein! Aus nicht nachvollziehbaren Gründen funktioniert es nicht. Meine Daten und Video-Streams werden in das Land der aufgehenden Sonne gesendet. Die App's sind so veraltet das sie schon seit Jahren nicht mehr in den App-Stores zu finden sind. Auf neuen oder zeitgemäßen Geräten ist die Software nicht mehr funktionsfähig. Warum auch? Das Gerät ist verkauft!
Und was ist dann an einem solchen Projekt besser? Der 'Selbermacher' kann über den Umfang, die Leistungen und die Funktionstüchtigkeit selber entscheiden. Geht etwas nicht, dann kann man selber den Fehler erkennen und beheben.
Ich merke schon wieder das ich zu sehr in die Argumentation für das Projekt abgleite :-) .
Was ist nun anders? Ich bin nicht mehr abhängig von externen Diensten. Bei einer käuflich zu erwerbenden Türstation ist es wichtig das der Nutzer sie sofort in Betrieb nehmen kann. Aus diesem Grund werden die Daten zu zentralen Servern übertragen und können von diesen dann abgerufen werden. Nun ist man aber davon abhängig dass der zentrale Dienst funktioniert und noch weiter betrieben wird. Es ist oft schwer nachzuvollziehen wie Daten übermittelt werden. Nehmen wir doch an, wir haben eine App mit einer Türstation. Ich möchte nun eine Einstellung in der Türstation ändern. Dazu wird ein Server kontaktiert. Dieser verbindet sich mit der Türstation. Die Daten der Türstation werden nun von diesem Server abgefragt und an die App übermittelt. Oops, natürlich muß mein Passwort übermittelt werden damit ich überhaupt Einstellungen vornehmen darf. Und warum kann ein externer Server meine Türstation sagen das sie die Daten übermitteln soll?
Will man auf alle Abhängigkeiten verzichten, ist ein Zugriff über das Internet (wenn ich unterwegs bin) nicht oder nur mit sehr großem Aufwand möglich. Allein das Betreiben eines Push-Dienstes ist mit großem Aufwand verbunden.
Auf die Frage nach dem 'Warum' gibt es nur eine wirkliche Antwort: Weil ich es kann ;-)
Die Türstation soll per Browser oder App steuerbar sein. Ich möchte ein Bild des Besuchers sehen können. Bewegungen sollen erkannt werden. Ist es dunkel, soll eine LED-Beleuchtung aktiviert werden können. Wenn möglich nur, wenn eine Bewegung erkannt wurde. Als Rückmeldung für den Besucher soll beim betätigen des Klingeltasters ein akustisches und/oder optisches Signal erfolgen. Wünschenswert wäre auch eine direkte Sprachverbindung zur Türstation. Diese Anforderung wurde aber aufgrund des damit verbundenen Aufwandes nicht verwirklicht.
Als Kamera wurde das Modul ESP32-Cam gewählt. Es ist zu einem sehr günstigen Preis bei sehr vielen Händlern erhältlich. Es hat bereits einen 'Blitz', eine LED verbaut. Man kann eine SD-Card einstecken, ideal als Speicher für die Aufnahmen. Ohne zusätzlichen Aufwand ist eine Verbindung über WLAN herzustellen.
Als Bewegungssensor wurde ein PIR-Sensor ausgewählt. Hierfür gibt es kleine Module die eine nicht zu große Reichweite haben. In diesem Fall ein Vorteil da nur Bewegungen im Umkreis von ein paar Metern wahrgenommen werden.
Die Sprachausgabe ist hier nicht ganz richtig definiert. Es soll nicht nur Sprache sondern auch Töne ausgegeben werden. Die akustische Rückmeldung beim Betätigen des Klingetasters soll auch über dieses Modul erfolgen. Die Ausgabe soll in einer ansprechenden Qualität erfolgen. Um diese Bedingungen erfüllen zu können, ist ein Verstärker von Nöten. Bei der Auswahl der Komponenten hat sich das Modul 'DFPlayer Mini' angeboten. Dieser hat eine eigene SD-Karte um Sprach- und Ton-Ausgaben in hoher Qulität zu ermöglichen. Der integrierte Verstärker vereinfacht den Aufbau. Die Steuerung über die serielle Leitung ist einfach zu realisieren.
Die Anzahl der verfügbaren IO's beim ESP32-Cam-Modul sind sehr begrenzt. Genau genommen steht kein IO ungenutzt zur Verfügung wenn die SD-Card verwendet wird. Die SD-Card kann jedoch auch mit einem Bit angesteuert werden (statt 4 Bit). In diesem Fall kann der Blitz verwendet werden, und man kann noch auf 2 IO-Leitung zurückgreifen. Hier bietet sich eine serielle Übertragung zu einem Erweiterungsmodul an. Das kann aber nur eine Software-Serielle sein. Wesentlich fehlertoleranter ist ein One-Wire-Bus. Hier würde sich der Baustein DS2408 anbieten. Dieser Baustein ist jedoch nur schwer erhältlich und kostet in Relation zum ESP32 ein Vermögen. Auch wäre der analoge Eingang für das Umgebungslicht nicht realisierbar. Mit einem ATtiny44 oder ATtiny84 läßt sich jedoch die Funktionalität des DS2408 nachbilden und zusätzlich einen analogen Eingang bereitstellen. Und genau das ist hier realisiert.
Der Türöffner wird durch ein Relais betätigt, der wiederum durch einen Ausgang des attiny84 gesteuert wird. Hier wurde eine Trennung der Spannung durch das Relais verwirklicht, denn oft werden die Öffnermagnete mit einer Wechselspannung oder einer höheren Gleichspannung angesteuert.
Hier dauerte die Auswahl am längsten. Der Taster soll (halbwegs) wasserdicht sein. Er soll aber etwas besonderes sein. Er soll nicht zu viel Platz einnehmen. Es soll eine LED integriert sein. Die verfügbaren Taster waren alle zu groß. Das Gehäuse wäre erheblich größer geworden. Ich habe mich dann für einen Taster entschieden den ich mit meinem 3D-Drucker selber erstellen kann. Zwei SMD-Kurzhubtaster, parallel, nehmen den Tastendruck auf. Hinter dem Taster, aus transparentem PLA gedruckt, sind viele LED's (0603) angeordnet um eine gleichmäßige Ausleuchtung zu ermöglichen. Ich habe im Taster eine geätze Messingplatte mit dem Familiennamen eingelassen und mit Epoxyd abgedeckt. Dadurch ist der Name hinterleuchtet und gut zu sehen.
Der soll es ermöglichen auch bei Dämmerung oder Dunkelheit erkennbare Aufnahmen zu machen. Das ist kein 'must have', aber ein netter Zusatz. Besser wäre wenn die Kamera lichtstärker wäre, in diesem Fall muß aber das genommen werden was da ist.
Der Lichtausgang soll eine 12V LED-Beleuchtung steuern. Dafür wird ein Mosfet angesteuert und 0-schaltend auf eine Klemme geleitet. Der Pluspol der 12V LED-Lampe mit +12V verbinden, der Minuspol an den Steuerausgang anschließen.
Die ganze Schaltung soll mit 12V betrieben werden. Hierzu ist ein Spannungswandler nötig der die 12V zu den 5V des ESP32-Cam-Moduls reduziert. Die erste Version der Schaltung hatte einen fertigen DC-DC-Wandler verwendet. Ich habe nachfolgend darauf verzichtet, da sowieso eine Platine erstellt werden muß und ich so einen DC-DC-Wandler mit integrieren kann.
Alle verwendeten Komponenten sollten verfügbar sein. Manchmal möchte man es aber dennoch anders lösen weil einfach einige Teile bereits in der Bastelkiste vorhanden sind.
Für die Stromversorgung läßt sich ein einfacher DC-DC-Wandler verwenden. Er sollte ca. 800mA Strom bei 5V Ausgangsspannung liefern können. Der hohe Strom ist nicht wirklich nötig. Jedoch sorgen Stromspitzen des ESP32-Cam-Moduls dazu das das System Instabil wird.
Der attiny84 ist auch als DIL-Version erhältlich. Somit läßt sich die Schaltung auch auf einer Lochraster-Platine aufbauen. Auch für das 'Vogelfutter' sind 'Thru Hole' (bedrahtete) Versionen leicht zu beziehen.
Die Sprachausgabe läßt sich eventuell durch einen DA-Ausgang oder PWM des ESP32 erledigen. Hier muß man sich aber mit einer reduzierten Qualität abfinden. Ob sich das dann lohnt?
Als Lautsprecher wurde eine wasserresistente Version (wegen Kunstoffmembrane) verwendet. Ich gestehe das dieses Bauteil aus meiner Bastelkiste ist. Aber aktuell sind ähnliche Lautsprecher bei Pollin.de für 30-50 Cent zu erstehen. Der von mir verwendete Lautsprecher wurde bei Pollin.de zu einer anderen Bestellung dazu bestellt ... sowas kann man ja immer einmal gebrauchen ;-).
Alle Daten (Schaltpläne, Layouts, Software, STL) sind unten zum Download verlinkt.
Zum Erstellen habe ich verwendet:
Belichter (PCB),
Bohrmaschiene (PCB),
3D-Drucker (Gehäuse und Taster),
Portalfräse (Frontplatte kann aber auch 3D-gedruckt werden),
Lötkolben (PCB),
Durchhaltevermögen,
Geduld.
Alle Teile habe ich mit einer Layerhöhe von 0,15mm und einer Düse mit 0,4mm gedruckt.
Der obere Teil des Gehäuse habe ich in PLA gedruckt. Bei diesem Druck habe ich die Stützstruktur aktiviert um die Tasche für den Taster drucken zu können.
In diesem Teil werden 8 Mal Gewindeeinsätze M3 mit den üblichen Methoden (Lötkolben) eingeschweißt. Je ein Gewindeeinsatz auf Ober- und Unter-Seite der 4 Bohrungen.
Auch diese Teil habe ich aus PLA gefertigt. Eine Stützstruktur ist nicht nötig. Auf der Rückseite sind zwei Löcher. Eines davon für die LED, das andere um mit einem Stift auf einen Taster drücken zu können. Das Loch für die LED habe ich mit einm UV-Kleber geschlossen. Da der UV-Kleber transparent ist, scheint die LED hier gut durch. Das Loch für den Taster kann mit einem Stückchen Gummiband verschlossen werden. Wird das Loch benötigt, kann man das Band herausziehen.
Ich finde es edler wenn hier ALU verwendet wird. Aus diesem Grund habe ich die Front auf meiner Portalfräse hergestellt. Für die ersten Versuche hab ich die Front auch auf dem 3D-Drucker hergestellt... was soll ich sagen, auch diese haben nicht übel ausgesehen, sind also wirklich eine Alternative.
Der Taster ist auch aus PLA (transparent) gefertigt. Allerdings gibt es hier eine Besonderheit. Zuerst wird weißes PLA eingespannt. Nach den ersten zwei Lagen wird dann erst das transparente PLA eingespannt. Die ersten zwei Schichten dienen als Streuscheibe für die LED's. Wer keine LED's verwenden möchte, kann hier auch einfach den Taster in der gewünschten Farbe drucken.
Der Taster hat oben eine kleine Aushöhlung. In dieser kann eine Beschriftung eingelegt werden und mit Epoxyd vergossen werden. Das gibt eine schöne Oberfläche und ein angenehmes Gefühl beim betätigen des Tasters. Ich habe hier ein Messingblech (0,1mm) eingesetzt das ich vorher geätzt habe um die LED hier durchscheinen zu lassen.
Die Dichtung habe ich aus TPU (Soft) gedruckt. Wer noch keine Erfahrungen mit TPU hat, sollte hier auf den Druck verzichten. Für den Druck von TPU wird ein Extruder benötigt der auch das weiche Material zuverlässig transportieren kann ohne das dieses sich um die Antriebe wickelt. Hier kann alternativ das Abdichten mit ein paar Tropfen Bau-Silikon erfolgen.
Das Fenster wurde von mir mit transparentem PLA gedruckt. Alternativ kann auch etwas Plexiglas verwendet werden.
Das Fenster wurde von mir mit transparentem PLA gedruckt. Alternativ kann auch etwas Plexiglas verwendet werden.
Das ist kein Teil das ich gedruckt habe.Ich führe es hier dennoch auf, da es irgendwie zum Gehäuse gehört. Hierzu habe ich ein Uhrenglas mit 22,5mm Durchmesser und 1mm Stärke verwendet. Diese Uhrengläser sind relativ günstig auf Ebay zu erstehen. Wer keine Uhrengläser verwenden will, kann auch einen Objektträger verwenden und diesen rechteckig zuschneiden.
Abhängig vom Montageort muß hier mehr oder weniger Aufwand betrieben werden. Den Lautsprecher habe ich von hinten verklebt. Um die Durchbrüche am Gehäuse habe ich etwas Silikon verwendet. Bei mir ist das ausreichend weil das Gehäuse selber nicht der Witterung ausgesetzt ist.
Auf den Bildern kann man die Platine von Oben und Unten sehen. Für die Verdrahtung habe ich Steckverbinder verwendet. Bei der Entwicklung ist das auch nötig. Wer will, kann beim Nachbau auf diese Steckverbinder verzichten und die Kabel direkt einlöten.
Die Platine ist einseitig ausgeführt um einen Nachbau zu vereinfachen. Die Programmierung erfolgt über den Stecker K6. Dieser ist auch als SMD-Verbinder ausgeführt. Die verwendete FPC-Buchse ist bei mir für die Tiny-Serie in der Zwischenzeit Standard. Da die Programmierung nur einmalig erfolgt, können statt der Buchse auch Kabel angelötet werden die nach der Programmierung entfernt werden.
Der Schaltplan und die Platine wurden mit der Software Target3001 erstellt. Auch die Dateien mit dem Layout können herunter geladen werden. Will man diese verwenden, muß beachtet werden dass die Bohrdurchmesser nicht den realen Durchmessern entsprechen. Diese müssen dann angepaßt werden. Zum selber Herstellen einer Platine ist es einfach wenn der Bohrer beim Bohren das Zentrum leichter findet. Darum wird mit einem kleineren Durchmessern auf den Filmen gearbeitet. Ein professioneller Hersteller benötigt solche Hilfen nicht, er muß den realen Durchmesser kennen.
Die Platine wird in das Gehäuse mit zwei Schrauben 1,7mm X 5mm verschraubt. In der Platine sind bei den Bohrungen für die Montage 2mm Bohrungen ausreichend.
Auf der Platine sind 3 Brücken (Oberseite rote Leitungen) zu verlöten. Durch den Einsatz der Brücken konnte ich auf eine zweilagige Platine verzichten. Brücken sollten immer zuerst bei der Bestückung der diskreten Bauteile bestückt werden. Dann werden sie nicht vergessen wenn sie durch andere Bauteile verdeckt sind.
C16 330uF/35V Low ESR *1
C15 220uF/10V Low ESR *1
C5,C6,C9 10uF/25V 1206
C10 330pF 0805
C2,C3,C4,C8 10uF/10V 0805
C7,C11,C14 22uF/6V 0805
C1,C12,C13 100nF 0805
IC1 Attiny 84 SO14
IC2 MC34063 SO8
T1,T2,T3,T4 IRLML2402 besser IRLML0030 oder IRLML0040
R5 3K3 0805
R4,R6 10K 0805
R10 11K 0805
R11 1K 0805
R15,R18 2K2 0805
R3 470R 0805
R2,R7,R8 1R 0805
R1,R12,R13,R14,R16 1K5 0805
K6 FPC 6Pol 1mm
S1 Kurzhubtaster SMD
D1 LED 0805
D2 TS4148 0805
D3 SS14 0805 *3
D4 SMD ZD 3,6 SOT-23
RE1 Relay 12V *2
R9 LDR (5mm)
K5,K8 Schraubklemmen (2x3pol, 1x2pol)
L1 47uH 242408-FPS
X3 2x 8Pol Buchsenleiste für ESP32-Cam
X4 DFPlayer
Die meisten Bauteile lassen sich über Reichelt beziehen.
*1) Die Kondensatoren C15 und C16 haben andere Werte im Schaltplan, in der Stückliste und auf dem Foto. Ich habe hier verwendet was ich in meiner Bastelkiste hatte. Die Werte sind nicht so kritisch das man hier so genau sein muß. Sie sollten aber Low ESR haben.
*2) Für das Relay wurde ein übliches Relay verwendet (auch aus der Bastelkise) die zu Hauf für den Arduino eingesetzt werden.
*3) Für diese Diode kann eine Schottky-Diode eingesetzt werden mit mindestens 1A 30V
Ist die Platine fertig bestückt, sollte eine optische Kontrolle erfolgen. Bei Schaltungen mit Versorungsspannung verwende ich immer eine regelbare Stromversorgung. Ich stelle den Maximalstrom auf ein paar mA ein und regle dann langsam die Spannung hoch bis zur geringsten Versorgungsspannung der Komponenten. Hierdurch ist ein Kurzschluss ohne Folgeschäden sehr leicht zu erkennen. Ist soweit alles OK, kann ich die Spannung nach den Spannungsreglern prüfen ob diese vorhanden sind. In diesem Fall die 5V am Attiny. Hier muß die Spannung noch nicht gleich vorhanden sein, sollte sich aber den 5V nähern wenn ich langsam die Eingangspannung der Schaltung erhöhe. Bei irgend welchen Abweichungen davon, wieder optisch Kontrolle und eventuell die Verbindung der Bauteile messen. Solange wiederholen bis alles funktioniert.
S1-S2 Kurzhubtaster SMD
R1 470R 0805
D1-D12 LED 0603
Die meisten Bauteile lassen sich über Reichelt beziehen.
Der Widerstand R1 kann abhängig von der Anzahl der bestückten LED'S, deren Farbe und deren Leuchtkraft unterschiedlich sein. Die Farbe ist insoweit entscheidend weil die unterschiedliche Farben durch unterschiedliche Materialen erzeugt werden. Daraus ergeben sich unterschiedliche Spannungen die an den LED's abfallen.
Es können 3, 6, 9 oder 12 LED's bestückt werden. Stehen keine 0603 LED's zur Verfügung, können auch 0805 bestückt werden.
Die Firmware für den ESP32 und den Attiny wurden mit 'Visual Studio Code' geschrieben. Der Attiny und der ESP32 lassen sich direkt aus dieser IDE programmieren. Hierzu ist nur ein Programmieradapter nötig. Ich halte die Beschreibungen für den Programmiervorgang sehr kurz, da hierfür genug hervorragende Beschreibungen im Internet zu finden sind.
Wir benötigen zwei microSD-Karten. Hier reichen Karten mit 4GB oder 8GB Platz vollkommen aus. Bevor man zu einer hohen Kapazität greift, sollte man lieber hochwertige Karten mit geringerer Kapazität verwenden. Beide microSD-Karten müssen mit FAT-32 formatiert werden. Auf der Karte für die Sprachausgabe muß nun ein Verzeichnis mit dem Namen 'MP3' angelegt werden. In diesem Verzeichnis werden nun die Sprachdateien kopiert. Deren Dateinamen müssen dem Schema entsprechen 'NNNN.mp3' wobei NNNN die Nummer der Datei ist (z.B. 0001.mp3). Ist die SD-Karte im DFPlayer eingesteckt, kann man die einzelnen Dateien testen wenn man an den Pin 9 des Moduls kurz GND legt. Damit wird dem Player ohne Software mitgeteilt die nächste MP3-Datei abzuspielen. Die microSD-Karte für die Bilder muss nur FAT-32 formatiert werden.
Für die Programmierung des Attiny84 wird ein Programmieradapter benötigt. Hierfür gibt es eine Reihe von möglichen Adaptern die verwendet werden können. Im einfachsten Fall kann ein Arduino verwendet werden. Ich selber verwende am liebsten den USBAsp den ich vor vielen Jahren selber gebaut habe. Ein käuflich zu erwerbender Adapter wäre z.B. dieser oder dieser. Die Platine wird mit Strom versorgt und über das Visual-Studio eine Programmierung gestartet. Wenn alles glatt geht, war es das schon.
Für die Programmierung des ESP32-Cam wird ein Adapter benötigt. Auch hierfür gibt es eine Reihe von möglichen Adaptern die verwendet werden können. Im einfachsten Fall wird nur ein USB zu (TTL) Serial-Adapter benötigt. Ein möglicher Adapter wäre z.B. dieser. Zum Programmieren wird der PIN GPIO0 mit GND verbunden, der Serielle Adapter an TXD, RXD und GND angeschlossen und das ESP32-Cam-Modul an die Spannung angelegt. Nun kann schon die Programmierung mit 'Visual Studio Code' erfolgen. Durch 'pio run -t upload --upload-port com3' wird die Programmierung mit dem COM-Port 3 gestartet. Abhängig davon welcher Com-Port dem Seriellen Adapter zugewiesen wurde ist dies anzupassen. Nach einem Reset (Taster auf dem Modul) kann mit 'pio run -t uploadfs --upload-port com3' das SPIFFS programmiert werden. Nachdem beide Programmierungen erfolgt sind, kann die Verbindung zu GPIO0 wieder entfernt werden und das Modul in die Platine eingesteckt werden. Nach anlegen der Versorungsspannung an die Platine sollte der ESP32 über WLAN erreichbar sein. Man verbindet ein WLAN fähiges Gerät (PC, Tablet, Handy) mit dem ESP32 und stellt dann die Parameter für die WLAN-Verbindungen ein die der ESP32 verwenden soll um sich mit dem lokalem Netzwerk zu verbinden. Nachdem der ESP32 im lokalem Netzwerk angemeldet ist, kann die Türstation über den Browser erreicht werden. Hier werden dann alle weiteren Einstellungen vorgenommen. Zukünftige Updates können über OTA erfolgen. Es können in Main.h definitionen auskommentiert werden (//) um OTA und/oder den FTP-Server zu deaktivieren. Über Telnet auf die IP des Moduls können die Log-Ausgaben verfolgt werden.
Zum Anmelden an die Software ist das default Passwort 'espadmin' der default User ist 'admin'
Gibt man die IP von Doorbell32 in den Browser ein, erhält man nach der Eingabe des Usernamen und des
Passwortes die Webseite der Türstation mit einem aktuellem Bild.
Bei einem Klick auf 'Jetzt' wird eine aktuelle Aufnahme angezeigt.
Mit 'Aufnahme' wird die letzte erstellte Aufnahme angezeigt; z.B. wer zuletzt den Klingeltaster betätigt hat.
Mit 'Stream' wird der Live-Stream dargestellt.
Ein Klick auf 'Make' erstellt ein Bild das im Log archiviert wird.
Ein Klick auf eine der Knöpfe für die Sprachausgabe löst diese aus. Wird im Knopf ein Schloss-Symbol angezeigt, wird nach abspielen der Sprachausgabe der Öffner automatisch ausgelöst.
Will man nur die Tür öffnen, genügt ein Klick auf den grünen Knopf.
Die Inhalte der Sprachausgabe-Knöpfe wird unter den Einstellungen verwaltet.
Zu diesem Bild gibt es nicht viel zu sagen. Durch einen Klick oben links öffnet sich das Menü.
Auf einem Handy kann dieses auch durch ein wischen nach rechts geöffnet werden.
Unter den Settings oder Einstellungen erhält man eine, gefühlt, unendliche Liste von Einstellungen.
Ich hoffe nicht jetzt jede Einstellung einzeln erklären zu müssen. Die Beschriftungen erklären die Funktionen.
Zu beachten ist, das die URL für die Funktionen (Bewegung und Klingeltaster) nur HTTP-Url's
sein können. Ich habe hier noch keine Verschlüsselung im asynchronen Webclient eingebaut.
Werden Einstellungen geändert, dann wird das Symbol für die Speicherung (oben rechts) anklickbar.
Mit einem Klick darauf werden die Einstellungen gespeichert.
Man sollte auf alle Fälle zuerst das Passwort und eventuell den Usernamen ändern.
In den Einstellungen werden auch die Sprachausgaben verwaltet.
Klickt man auf 'Neu' erscheinen die Eingabefelder für diese Definition.
Der eindeutige Name wird zur internen Verwaltung verwendet. Dieser darf keine Leerzeichen
und Sonderzeichen enthalten (Unterstrich ist zulässig). Man sollte auch auf Umlaute verzichten.
In der nächsten Eingabezeile wird der Text definiert der auf dem Knopf erscheinen soll.
Die Sprachdateien auf der microSd-Card für den DFPlayer sind nach dem Schema 'NNNN.mp3' zu
benennen. Die Zahl die für die Datei verwendet wurde, muß hier eingegeben werden. Heißt die
Datei '0001.mp3', dann ist im nächsten Eingabefeld '1' einzugeben.
Handelt es sich um einen Klingelton der beim Betätigen des Klingeltasters ausgegeben werden
soll, dann muß hier der folgende Schalter eingeschaltet werden. Es handelt sich dann um eine
akustische Rückmeldung für den Besucher. Mit einer solchen Rückmeldung wird ein Besucher nicht so
schnell ungeduldig. Es kann auch statt einem Ton eine Ansage erfolgen z.B. 'Lieber Besucher, haben
Sie etwas Geduld. Unser Weg zu unserem Türöffner ist sehr lang'
Handelt es sich um eine Ansage, kann ein Automatisches Öffnen definert werden. Ist dieser Schalter
aktiv, wird der Türöffner nach der Ausgabe der Nachricht automatisch betätigt.
Für die Funktionen der Bewegung oder dem Betätigen des Klingeltasters können externe URL's
aufgerufen werden.
Zu beachten ist, das die URL für die Funktionen nur HTTP-Url's sein können. Ich habe hier noch
keine Verschlüsselung im Asynchronen Webclient eingebaut.
Will ich die Türstation nur lokal betreiben (kein PWA, keine App), dann kann ich hier eine URL
für einen MQTT-Server oder eines Gong's eintragen. In diesem Bild ist eine URL für einen Gong eingetragen
der mit einem ESP8266 aufgebaut ist.
Muß ich eine HTTPS-Url aufrufen, gibt es im Augenblick nur die Möglichkeit diese über einen externen
Rechner (z.B. ein sowieso laufender RPI) zu leiten und diesem die Umwandlung zu HTTPS machen zu lassen.
Wird die App genutzt, muß hier die URL eingetragen werden die das Senden der Push-Mitteilung veranlaßt.
Am Ende der Einstellungen können noch Funktionen für die Türstation ausgelöst werden.
Beim Löschen der WLAN-Daten muß die Türstation neu mit den WLAN-Daten eingestellt werden. Sind noch
keine Daten vorhanden (wie nach dem Betätigen diese Knopfes), wird ein AccessPoint geöffnet. An diesem muß
man sich Anmelden. Nach der gültigen Anmeldung, wird automatisch die Seite geöffnet in der die
Einstellungen für das WLAN vorgenommen wird. Öffnet sich keine Seite automatisch, muß ein Browser geöffnet
werden und URL http://192.168.4.1 geöffnet werden. Zur Verwaltung des WLAN wird der WIFIManager verwendet.
Beim ESP-Reboot wird die Türstation neu gestartet.
In der Türstation ist eine Session-Verwaltung für die Anbindung der App vorhanden. Durch betätigen
dieses Knopfes werden alle gespeicherten Sessions gelöscht und die App's müssen sich erneut authentifizieren.
Unter dem Menüpunkt 'Log' können die gespeicherten Aufnahmen gesichtet werden. Es wird das Bild dargestellt mit dem Namen des Bildes. Dieser Name ist der Erstellungszeitpunkt des Bildes. Ein Klick auf den Eimer löscht das Bild. Theoretisch kann die ganze microSD-Karte mit Bildern gefüllt werden. Es gibt nur Probleme wenn die Anzahl zu groß wird. Auch das Darstellen der Log-Seite dauert dann sehr lang. Man sollte immer wieder die alten oder nicht benötigten Bilder löschen.
Die 'About'-Seite listet die Verlinkungen zu den App's, dem PWA und zu dieser Seite auf.
Auf der Platine mit dem Attiny ist auch ein Taster vorhanden. Welche Funktion hat der denn? Wird der Taster weniger als 1 Sekunde lang betätigt, dann wird der Ton 0001.mp3 des DFPlayers wiedergegeben. Wird der Taster zwischen 1 und 5 Sekunden gedückt gehalten, führt die Türstation einen Neustart aus. Wird die Taste zwischen 5 Sekunden und 10 Sekunden gedückt gehalten, wird der Türöffner betätigt. Wird der Taster länger als 10 Sekunden gedrückt gehalten, werden die Einstellungen für WLAN gelöscht und man muß sich wieder per WLAN mit der Türstation verbinden um die Zugangsdaten zum Netzwerk einzustellen.
Die App ist zu finden für IOS beim App-Store und für Android auf dem Play-Store.
Zum Anmelden an die Software ist der Username und das Passwort zu verwenden das unter den Einstellungen der Türstation vergeben wurde. Aber zu Beginn erst einmal eine Erklärung zu 'PWA'. Viel werden sich fragen, was ist PWA. Diese Abkürzung steht für 'Progressive Web Apps'. Sie beschreibt die Möglichkeit eine Webseite die bestimmte Voraussetzungen erfüllt als App zu installieren. Das Verhalten dieser PWA's entspricht weitestgehend dem einer normalen APP. Es gibt jedoch Einschränkungen. Auf dem Betriebssystem IOS wird eine Push-Benachrichtigung (noch) nicht unterstützt. Auf Windows, MacOS Android wird Push unterstützt mit der Einschränkung das es nicht immer funktioniert. Meistens muß der Browser in dem die PWA installiert wurde auch aktiv sein um Benachrichtigungen erhalten zu können. Unter Android funktioniert es noch am besten. Aber auch hier ist die Zustellung einer Push davon abhängig ob das Betriebssystem nicht den Service Worker (der nimmt die Push-Nachrichten entgegen) nicht beendet hat weil dieser schon zu lange im Speicher war oder das Akku zu wenig Energie hatte.
Eine App hat nur dann einen Zugriff auf lokale IP's wenn man mit dem Handy (oder Tablet) im lokalen Netzt angemeldet ist. Eine Push-Benachrichtigung erfolgt aber immer über die Server der Anbieter der Betriebssysteme (IOS=APNS; Android=Google). Die App verwendet Firebase (Google) als Pushdienst für beide Betriebssysteme und PWA's. Damit die App auch auf die Türstation zugreifen kann wenn ich unterwegs bin, muß die Türstation im DSL-Router freigegeben werden. Dazu wird im Router eine Portweiterleitung eingerichtet. Diese stellt einen Port vom Internet bereit und leitet die Anfragen an diesen Port an die Türstation weiter. Wird vom internet meine IP (die des Routers) angegeben mit dem richtigen Port kann ich vom Internet die Seiten der Türstation aufrufen. Bei einigen DSL-Anbietern ändert sich die eigene IP öfter (z.B. einmal am Tag). Damit ich nicht jeden Tag die neue IP eintragen muß, gibt es Dienste die einen DNS-Eintrag mit meiner IP verbinden. Das ist genau das was SRVHome macht. Es stellt einen DynDNS-Server zur Verfügung. Im Router werden dazu die Einstellungen für den DYNDNS auf SRVHome eingestellt. Der Router teilt nun bei jedem Wechsel der IP mit wie die neue IP lautet. SRVHome weist diser IP einen Namen zu. Meine Türstation kann ich nun über einen Namen aufrufen. Wird SRVHome für diese Zuordnung verwendet, kann über die vergebene HOST-ID auch zusätzlich ein HTTPS-Proxy zu meiner Türstation bereitgestellt werden der dann über die App genutzt wird.
Das geht leider nicht. Die App darf nur Verbindungen zu HTTPS mit gültigen Zertifikat aufnehmen. Sollte ein lokaler Proxy bereit stehen der für die Türstation die Voraussetzungen erfüllt, kann die URL für den Proxy in den Einstellungen eingetragen werden. Will ich das nur lokal nutzen, kann ich aber auch die Seiten der Türstation verwenden und einen 'Gong' zentral plazieren damit dieser ohne Handy gehört werden kann.
Im Router eine Portweiterleitung zur Türstation einrichten (z.B. Port 1280 zu der lokalen IP der Türstation port 80)
Bei SRVHome einen Account erstellen und sich einen Namen auswählen.
Im Router SRVHome als DynDNS eintragen.
In der Einstellung für die App die Host-ID von SRVHome eintragen und den Port den man gewählt hat bei der Portweiterleitung (Beispiel: 1280).
App beenden und neu starten. Nun sollte der Login mit den Usernamen und dem Passwort der Türstation erfolgen.
Spass haben ;-)
Im Router eine Portweiterleitung zur Türstation einrichten (z.B. Port 1280 zu der lokalen IP der Türstation port 80)
Es muss eine anderer DynDNS-Dienst genutzt werden.
Einen Proxy nutzen der die Seiten der Türstation über HTTPS bereitstellt.
In den Einstellungen für die App eine User-ID erzeugen (diese extern speichern, diese wird für alle App's benötigt die dieser Türstation zugeordnet sind).
In der Einstellung für die App die URL zur Türstation eintragen.
App beenden und neu starten. Nun sollte der Login mit den Usernamen und dem Passwort der Türstation erfolgen.
Spass haben ;-)
Im Router eine Portweiterleitung zur Türstation einrichten (z.B. Port 1280 zu der lokalen IP der Türstation port 80)
Einen Proxy nutzen der die Seiten der Türstation über HTTPS bereitstellt. Das kann auch ein eigener Proxy sein.
In den Einstellungen für die App eine User-ID erzeugen (diese extern speichern, diese wird für alle App's benötigt die dieser Türstation zugeordnet sind).
In der Einstellung für die App die URL zur Türstation eintragen.
App beenden und neu starten. Nun sollte der Login mit den Usernamen und dem Passwort der Türstation erfolgen.
Spass haben ;-)
Beim ersten Start der App muß die Einstellung für die Verbindung zur Türstation stattfinden. Wird SRVHome als DynDNS-Dienst verwendet, werden die Einstellung entsprechend der Beschreibung oben vorgenommen.
Verwende ich nicht SRVHome als DynDNS, muß ich den Schalter (oben) umstellen. Nun wird die URL benötigt unter der die Türstation erreichbar ist. Diese URL muß eine HTTPS-Url sein. Besitze ich noch keine Zugangskennung kann ich durch einen Klick auf den unteren Knopf eine Zugangskennung erstellen lassen. Diese Zugangskennung wird auch dann benötigt wenn ich mehrere App's verwende. Über diese Zugangskennung wird eine Push-Benachrichtung an alle App's gesendet die die gleiche Zugangskennung verwenden. Die URL muß dann entsprechend der Beschreibung oben eingetragen werden.
Nach einem Neustart der App muß man sich mit den Daten der Türstation anmelden.
Die App sieht nahezu so aus wie die lokale Oberfläche der Türstation. Sie unterscheidet sich nur darin dass beim Starten nicht automatisch das aktuelle Bild dargestellt wird. Hier ist dann ein Platzhalter zu sehen. Oben rechts besitzt die App die Möglichkeit sich von der Türstation abzumelden.
Das Menü unterscheidet sich zu dem Menü aus den Seiten der Türstation durch den Punkt 'Datenschutz/Nutzungsbedingungen'.
Hinter dem Menüpunkt 'Datenschutz/Nutzungsbedingungen' verbergen sich die gefühlten unendlichen Bedingungen die zur Nutzung dieser App nötig sind.
Die Schaltpläne, Layouts, Zeichnungen und die Software dürfen ausschließlich für private Zwecke benutzt werden. Eine gewerbliche Nutzung ist nur mit ausdrücklicher Genehmigung des Autors gestattet.
Alle Rechte sind Eigentum des Autors soweit es nicht anders angegeben ist.
Für Hardware- oder Softwarefehler sowie eventuelle, aus dem Gebrauch resultierende Schäden oder Folgeschäden, kann keine Haftung übernommen werden.
Bei dieser Beschreibung handelt es sich nicht um eine Aufforderung zum Nachbau sondern um eine Dokumentation der eigenen Umsetzung mit der Möglichkeit diese als Basis für ein eigenes Projekt zu verwenden.
Ein Anspruch auf die Bereitstellung der App oder des Dienstes SRVhome besteht nicht.
Für die Nutzung der App oder PWA ist eine gesonderte Datenschutzerklärung und Nutzungsbedingungen vorhanden. Eine Nutzung ist nur gestattet wenn diese Bedingungen akzeptiert werden.
Die Implementierung der Cam bassiert auf https://gist.github.com/me-no-dev/d34fba51a8f059ac559bf62002e61aa3
Ich wurde insperiert durch https://github.com/Hoeby/ESP32-Doorbell
Einige Lib's sind in den Sources vorhanden, da diese einige Anpassungen erhalten haben.
Einige Funktionen wurden nicht durch Lib's bereitgestellt weil sie entweder nicht richtig funktionierten oder sie zu aufwendig waren.
Um alles unterzubringen wurde ein Customlayout verwendet: diese teilt den Flash-Speicher entsprechend auf.
Die Entscheidung für den One-Wire-Bus ist hier wegen der Fehlertoleranz gefallen. Bei der Implementierung
konnte ich fast vollständig auf die hervorragende Arbeit von Tobias Mueller zurückgreifen.
Unter https://tm3d.de/elektronik-projekte/1-wire-simulation-v2 sind die entsprechenden Informationen und Orginal-Quellen erhältlich.
Für die Implementierung wurde auf die Quellen für den DS2408 zurückgegriffen und nach den Bedürfnissen angepaßt.
Vorallem die Erfassung des analogen Wertes für die Helligkeit.
Neue Einstellung für Timeout von Bewegungserkennung und Betätigung Klingeltaster.
1. Herstellen der Platine oder alternativ auf einer Lochrasterplatine aufbauen.
2. In Betrieb nehmen der Platine (beim Eigenbau Versorgungspannung 5V einstellen) und programmieren des ATTINY84. Die nötigen Fuses sind in der Datei platformio.ini hinterlegt.
3. ESP32-Cam-Modul temporär mit 5V versorgen und über die serielle Leitung (Adapter) programmieren. Hier nicht vergessen auch das SPIFFS zu programmieren (uploadfs)
4. Eine SD-Card mit FAT32 formatieren und in das Cam-Modul einstecken.
5. Eine SD-Card mit FAT32 formatieren und die Sprachmitteilungen dort speichern.
6. ESP32-Cam-Modul in die Platine einstecken. Es sollte ein WIFI Access Point erscheinen über den die WIFI-Einstellungen vorgenommen werden müssen.
7. Neustart; nun sollte die LED auf der ATTINY-Platine flackern. Das Flackern zeigt eine Kommunikation mit dem ESP32-Modul.
8. Wenn nötig, sich per Telnet am Modul anmelden. In der Ausgabe erscheint immer wieder ein Block mit Punkten. Jeder Punkt signalisiert eine funktionierende Kommunikation mit dem OneWire-Bus. Ein 'c' zeigt einen CRC-Fehler. Einige sind nicht zu verhindern wenn der ESP die Zeitanforderungen des OneWire nicht einhalten kann weil er mit WIFI beschäftigt ist.
9. Anmelden per Browser am ESP32-Cam-Modul. Der User ist 'admin', das Passwort 'espadmin'.
10. Auf die Einstellungen gehen (links oben Menü anklicken und die Einstellungen auswählen). Hier die Einstellungen für das Passwort, den User, die Zeitzone vornehmen.
11. Die Einstellungen mit den Definitionen für die Sound-Dateien vervollständigen.
12. Bei den Signalisierungen URL's (nur HTTP) eintragen damit beim Drücken des Klingeltasters eine Signalisierung erfolgt. Das kann z.B. eine ESP-Gong sein oder die Url für einen Push-dienst (*).
13. Sonstige Einstellungen nach Wünschen einstellen.
1. Auf dem eigenen Router eine Portweiterleitung zur DoorBell32-Station einrichten.
2. Einen DynDNS-Dienst einrichten z.B. SRVHome.
3. Die App laden und starten.
3a. Wird SRVHome als DynDNS-Dienst verwendet die Host-ID für den DNS-Eintrag eingeben. Den Port eingeben der beim Einrichten der Portweiterleitung verwendet wurde.
3b. Wird nicht SRVHome verwendet, in der App den Schalter betätigen. Dort sich eine Zugangsid erstellen (Knopf unten). Nun die URL eintragen über die die Türsation erreichbar ist. Dies muß eine HTTPS-URL sein!
4. Die App schließen und beenden. Die App neu starten. Hat bis hier alles funktioniert erscheint eine Login-Seite.
5. Sich anmelden mit den Zugangsdaten die in der Türstation hinterlegt sind.
6. Das war es schon. Wird eine weitere App verwendet, muß die Zugangs-ID eingetragen werden die bei der ersten App verwendet wurde.
Soll die App verwendet werden, muß in die Türstation für die Signalisierung die Url zum Push-Dienst eingetragen werden. Diese URL lautet http://www.srvhome.de/door/signal?uid=xxxx . Die uid (xxxx) in dieser URL ist durch die Host-Id zu ersetzen wenn man SRVHome verwendet. Wird nicht SRVHome verwendet, ist hier die Zugangsid zu verwende.
Hier stelle ich, entsprechend der Fragen die mir zukommen, FAQ's zusammen.
All Rights Reserved | Copyright 2016 © The Bizium template by pFind's Goodies