Inhaltsverzeichnis:
- Schritt 1: Hardware und Materialien
- Schritt 2: Software
- Schritt 3: Konfiguration
- Schritt 4: Benachrichtigungen
- Schritt 5: EasyIOT-Integration
- Schritt 6: Andere Bell Push-Aktionen
Video: Türklingel und Temperatursensor - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Dies verbessert eine standardmäßige fest verdrahtete Türklingel mit einem esp-12F (esp8266) Modul.
Es wird in der Klingeleinheit selbst installiert, um Änderungen an der Verkabelung zu vermeiden. Es bietet die folgenden Funktionen
- Türklingeldrücke erkennen
- Sendet Benachrichtigungen über IFTTT an das Telefon
- Speichert die Türklingelaktivität in einem easyIOT-Server (optional)
-
Andere Aktivitäten über eine URL auslösen, wenn die Türklingel gedrückt wird
Ich mache einen Schnappschuss mit einer Webcam an der Tür und kann die letzten Aufnahmen der Türklingel auf meinem Telefon anzeigen
- Optionaler eingebetteter Temperatursensor (DS18B20), der Teil meiner Haustemperaturüberwachung ist
Schritt 1: Hardware und Materialien
Folgende Materialien werden benötigt
- ESP-12F (ESP8266) WLAN / CPU-Modul
- DC-Abwärtswandler für 3.3V-Versorgung
- Gleichrichterdiode (z. B. 1N4001)
- Elektrolytkondensator 220uF 35V
- Elektrolytkondensator 220uF 16V
- Zenerdiode 3,3 oder 2,6V
- Widerstände
- Stück Streifenbrett
- Anschlüsse bei Bedarf
- DS18B20 digitaler Temperatursensor bei Bedarf
Der Schaltplan zeigt die verwendete Schaltung. Es wird von einer wechselstrombetriebenen Niederspannungsklingel ausgegangen, die die gebräuchlichste Art von fest verdrahteten einfachen Klingel ist. Die Klingeleinheit wird von einem externen Klingeltransformator mit typischerweise etwa 10 V Wechselstrom versorgt. Dies ist nicht kritisch, da die einzige Einschränkung die maximale Spannung in den Abwärtswandler ist. Der von mir verwendete ist MP2307-basiert mit einer maximalen Eingangsspannung von 23 V DC (~ 16 V AC).
Normalerweise gibt es 3 aktive Terminals. Mit der Klingeltaste die Verbindung von einer Seite der Wechselstromversorgung zum Klingelsolenoid herstellen. Das Modul verwendet die beiden AC-Klemmen, um die DC-Leistung über einen einfachen Einweggleichrichter zu erzeugen. Die Klingeldruck-Erfassung erfolgt durch Überwachung der Spannung über dem tatsächlichen Solenoid. Dies wird normalerweise geerdet, aber wenn die Glocke aktiviert wird, ist die volle Wechselspannung vorhanden. Ein Widerstand / eine Zenerdiode beschneidet dies, sodass ein 0 - 3,3 V 50 Hz-Impuls in einen GPIO-Pin eingespeist wird. Die Software verarbeitet dies, um eine einmalige Aktivierung pro Klingeldruck bereitzustellen.
Ich habe die Schaltung auf einem Stück Streifenbrett konstruiert und diese ist klein genug, um leicht in die Klingeleinheit zu passen. Ich verwende einfache Jumper-Anschlüsse, um die Installation zu erleichtern, und schließe sie speziell an die Hauptstromversorgung an, damit sie bei Bedarf leicht zurückgesetzt werden kann.
Der gezeigte Schaltplan enthält einen DS18B20-Temperatursensor. Dies ist optional. Ich verwende es als Teil eines Netzwerks, das die meisten Bereiche in meinem Haus überwacht. Falls vorhanden, ist es gut, den Sensor mit einigen Zentimetern Kabel zu verkabeln, um ihn von lokalen Erwärmungseffekten zu isolieren.
Schritt 2: Software
Die Türdrückereinheit verwendet eine Arduino-Skizze, die auf github verfügbar ist
Dies muss an die lokalen Bedingungen angepasst und dann in einer esp8266 Arduino-Umgebung kompiliert werden. Die folgenden Bibliotheken werden benötigt, sie sind Standard oder können hinzugefügt werden.
- ESP8266WiFi
- WLAN-Client
- ESP8266WebServer
- ESP8266mDNS
- ESP8266HTTPUpdateServer
- ArduinoJson
- WifiClientSecure
- IFTTTMaker
- DNS Server
- WiFiManager (optionale Verwendung)
- OneWire
- DallasTemperatur
Zu ändernde Elemente in der Skizze umfassen
- Details zum lokalen WLAN-Zugang (ssid, Passwort), wenn WifiManager nicht verwendet wird
- Autorisierungscode für Webzugriff AP_AUTHID. Es ist gut, dies eine anständige Länge zu machen. Es kann alphanumerische Zeichen enthalten.
- Firmware-OTA-Passwort update_password
-
WifiManager-Passwort WM_PASSWORD
WLAN kann manuell eingerichtet werden, indem du WM_NAME auskommentierst
- IFTTT-Herstellerschlüssel (siehe Benachrichtigungsschritt)
Optionale Änderungen beinhalten
- Eingangspin für Türklingelmelder ändern
- Wechselstift für Temperatursensor
- Ändern des Webzugriffsports von Standard 80
Sobald dies erledigt ist, sollte es zuerst kompiliert und mit dem herkömmlichen seriellen Upload hochgeladen werden. Ein nachfolgendes Update kann durchgeführt werden, indem eine Export-Binärdatei in der Arduino-Umgebung kompiliert und dann auf die OTA-Schnittstelle unter ip/firmware zugegriffen wird.
Das Drücken der Türklingel wird in der Software durch Interrupt-Erkennung der steigenden Flanke des ersten Impulses von der Detektorschaltung erkannt. Alle nachfolgenden Interrupts werden ignoriert. Ein Timeout wird verwendet, um den Melder nach dem BELL_MIN_INTERVAL, das auf 10 Sekunden eingestellt ist, wieder zu aktivieren.
Auf andere Aktivitäten kann auf dem esp8266-Webserver zugegriffen werden
- ip/recent zeigt die aktuelle Türklingelaktivität an
- ip/reloadConfig lädt espConfig neu
- ip/bellPush simuliert ein Klingeln
Schritt 3: Konfiguration
So wie sie aufgebaut ist, erhält die Software ihre Konfiguration von einem lokalen Webserver. Das Modul lädt Konfigurationsdaten basierend auf seiner Mac-Adresse. Dies macht es sehr bequem, mehrere Module mit derselben Binärdatei auszuführen, und macht es auch einfacher, die Konfiguration ohne Neukompilierung zu aktualisieren. Es wäre möglich, dies zu überspringen und die Konfigurationsdaten direkt in den Code einzufügen.
Ich speichere die Konfigurationsdatei auf meinem EasyIOT-Server, der unter easyIOT/html einen Ordner hat, in dem die Konfigurationsdatei leicht abgerufen werden kann.
Die Datei heißt espConfig und ist eine einfache Textdatei, die eine Reihe von Parametern (12) für jede mögliche Mac-Adresse speichert. Ein Modul lädt nur die Parameter, die für seine Mac-Adresse eingestellt sind.
Ein Beispiel aus der Datei ist
#Saal
#Mac-Adresse123456ABCDEF
#Modulname
esp8266-hall
#Servermodusmaske (1=Temp Sense, 4 = Boilermode, 4 = Türklingel)
9
#EIOT-Knoten für Temperatur
N9S0
#ungebraucht
-1
# Mindesttemperaturintervall in Sekunden
60
#Maximaltemperaturintervall in Sekunden
300
#Kesselleistungsintervall
0
#EasyIOT Kesselleistungsknoten
-1
#EasyIOT Klingeltaste
N10S0
# IFTTT-Benachrichtigungswert
Vorderseite
#IFTTT Ereignisname benachrichtigen
Türklingel
#Aktions-URL
192.168.0.2/snap.php
Jede Zeile, die mit # beginnt, wird ignoriert. Alle Zeilen müssen vorhanden sein. -1 wird für zu ignorierende Parameter verwendet.
Die Konfigurationsdatei wird beim ersten Start des Moduls gelesen. Es kann auch in einem laufenden System (wenn die Konfiguration geändert wurde) neu geladen werden, indem Sie auf ip/reloadConfig zugreifen
Der Kesselmodus-Teil der Konfiguration ist hier nicht relevant, wird aber in meinen Temperatursensoren verwendet, die an den Ausgang des Zentralheizungsrohrs angeschlossen sind, da er erkennt, wann der Kessel heizt und den durchschnittlichen Stromverbrauch berechnen kann.
Schritt 4: Benachrichtigungen
Wenn ein Türklingeldruck erkannt wird, versucht er dies per IFTTT oder PushOver zu melden. Ich habe jetzt PushOver, da es eine schnellere Reaktion gibt.
Für IFTTT benötigen Sie ein Konto und aktivieren den Maker WebHoooks-Kanal. Der MakerKey aus diesem Kanal muss in den Code kompiliert werden.
Richten Sie eine IF-Aktion mit Maker WebHooks ein und verwenden Sie den gleichnamigen Ereignisnamen wie in der Konfiguration (z. B. Türklingel). Die DANN-Aktion sollte eine IFTTT-Benachrichtigung sein. Sie können der Benachrichtigung value1 hinzufügen, die sich in der Konfigurationsdatei befindet. Dies kann nützlich sein, wenn Sie 2 oder mehr Detektoren haben.
Sie müssen die IFTTT-App auf Ihrem Telefon installieren und dann werden Benachrichtigungen angezeigt, wenn die Türklingel ausgelöst wird.
Für PushOver benötigen Sie ein PushOver-Konto und folgen den Anweisungen, um API-Benachrichtigungen zu erhalten. Sie müssen die Token NOTIFICATION_APP und NOTIFICATION_USER in der Software mit den Werten aus Ihrem PushOver-Konto einrichten.
Sie müssen die PushOver-App auf Ihrem Telefon installieren und eine geringe einmalige Gebühr zahlen, um Benachrichtigungen zu erhalten. Das lohnt sich aus meiner Sicht, um die viel schnellere Antwort zu bekommen.
Schritt 5: EasyIOT-Integration
Die Software kann Temperatur- und Türklingel-Push-Berichte an einen EasyIOT-Server senden. Die EasyIOT-Automatisierung kann verwendet werden, um basierend auf diesen Berichten zusätzliche Maßnahmen zu ergreifen.
Richten Sie einen EasyIOT-Server ein (z. B. auf einem Raspberry Pi). Konfigurieren Sie die IP-Adresse und das Passwort für den Benutzernamen in der Software esp8266 und kompilieren Sie.
Fügen Sie nun einen virtuellen Treiber in der EASYIOT-Konfiguration hinzu. Wählen Sie Temperature Analog Input und notieren Sie den EasyIOT-Knotennamen. Dies sollte in den Temperaturknotennamenteil der espConfig-Datei eingefügt werden.
Fügen Sie einen zweiten virtuellen Treiber hinzu. Wählen Sie Tür-Digitaleingang, notieren Sie den Knotennamen und legen Sie ihn in die espConfig-Datei ab.
Schritt 6: Andere Bell Push-Aktionen
Die Software verfügt über eine Routine namens actionBellOn. Wie geschrieben kann dies 3 Dinge tun
- IFTTT-Benachrichtigung
- EasyIOT-Bericht
- Ausführen einer Aktions-URL
Die URL kann verwendet werden, um andere Aktivitäten von anderen Webservern auszulösen. Die verwendete URL befindet sich in der espConfig-Datei.
Wenn der Server der URL authentifiziert ist, müssen der Benutzername und das Passwort konfiguriert und in den Code kompiliert werden.
Ich benutze dies, um auf eine URL namens snap.php auf einer Kamera neben der Tür zuzugreifen. Dies nimmt ein-j.webp
Ich verwende Raspberry Pi-basierte Kameras, die diese Bedienung sehr einfach machen. Kamera
Empfohlen:
Temperatursensor (Arduino): 8 Schritte
Temperatursensor (Arduino): Dieses Projekt ist perfekt für Fortgeschrittene und Anfänger. Die Einrichtung ist sehr einfach. Es gibt einen Chip namens LM35 (Link für zusätzliche Erklärung), der es dem Arduino ermöglicht, die Temperatur der Umgebung zu bestimmen