Inhaltsverzeichnis:

Wasserlecksensor auf ESP8266 + Micropython + Domoticz - Gunook
Wasserlecksensor auf ESP8266 + Micropython + Domoticz - Gunook

Video: Wasserlecksensor auf ESP8266 + Micropython + Domoticz - Gunook

Video: Wasserlecksensor auf ESP8266 + Micropython + Domoticz - Gunook
Video: Управляем адресными светодиодами на ESP32, прошивка WLED, применение в Home Assistant 2024, Juli
Anonim
Wasserlecksensor auf ESP8266 + Micropython + Domoticz
Wasserlecksensor auf ESP8266 + Micropython + Domoticz
Wasserlecksensor auf ESP8266 + Micropython + Domoticz
Wasserlecksensor auf ESP8266 + Micropython + Domoticz

Vor einiger Zeit bat mich meine Frau, einen Wasserlecksensor zu bauen. Sie hatte Angst, dass der Schlauch im Heizraum undicht sein könnte und das Wasser den neu verlegten Holzboden überfluten würde. Und ich als echter Ingenieur habe mir vorgenommen, einen solchen Sensor zu tun.

Aus meiner 15-jährigen Erfahrung als Medizintechniker weiß ich, dass durch Wasser kurzgeschlossene Metallstifte am einfachsten zu erkennen sind. Das Funktionsprinzip der einfachsten Sensoren besteht darin, dass Wasser zwei (oder mehr) Metallstifte kurzschließen muss, und sobald dies geschieht, wird ein Alarm ausgelöst.

Schritt 1: Hardware

Hardware
Hardware

Für dieses Projekt benötigen wir:

1. ESP8266 - 01 Modul

2. HT7333 3.3V MS Linearregler mit niedrigem Dropout-Stromversorgungsmodul

Wir benötigen dieses Modul, um die Spannung von der Batterie auf das für ESP8266 akzeptable Niveau zu reduzieren. Laut Datenblatt sollte es 3V bis 3,6V Eingang geben. Dieses Modul liefert uns 3,3V.

3. Akku. Ich verwende einen 3, 7V Li-Ion 400mAh Akku. Eigentlich können Sie jede andere geeignete Stromquelle verwenden. 18650 Akku ist auch eine gute Wahl. Denken Sie bei der Auswahl einer Batterie daran, dass ESP etwa 200 mA "frisst", während die Verbindung zum WLAN-Netzwerk hergestellt wird, und dass etwa 60 mA verwendet werden, wenn das Board Daten auf den Server hochlädt.

4. TP4056 Lipo-Akkuladeplatine.

5. Pololu Mini-Druckknopf-Netzschalter Sehr interessante kleine Platine. Es lässt uns das ESP-Modul nur schalten, wenn Wasser erkannt wird. ESP muss nicht eingeschaltet bleiben. Es ist also gut, um Ladung des Akkus zu sparen.

6. Gehäuse7. Doppelter Mikroschalter ON-OFF. Eine Leitung dient zum Einschalten des Gerätes. Zweite Zeile ist zum Testen - es schließt ohne Wasser kurz, nur um uns mitzuteilen, ob das Gerät funktioniert oder nicht.

8. Raspberry Pi-Mikrocomputer

Ich verwende Raspberry Pi Zero. Es ist leistungsstark genug, um den Domoticz-Server auszuführen.

Schritt 2: Software

Auf Ihrem PC:

1. esptool installiert, zum Löschen von Modulen und Flashen der Firmware

2. Ampy installiert, um Ihr Programm zu flashen

3 Python 3.6 oder höher empfohlen

4. Beliebiger Code-Editor. Am einfachsten - Python IDLE, das normalerweise mit Python installiert wird. Ich verwende Pycharm / Atom oder Anaconda Spyder On raspberry Pi

5. Domoticz-Server installiert auf Raspberry Pi (oder normaler PC unter Windows oder Linux)

Schritt 3: Raspberry Pi vorbereiten - Domoticz installieren

Nehmen Sie also Ihr RPi und installieren Sie ein Betriebssystem, das für den Betrieb des Domoticz-Servers geeignet ist.

Sie können diesen Anweisungen folgen.

Ich verwende Raspbian Stretch mit Desktop von hier:

Der nächste Schritt besteht darin, den Domoticz-Server auf Ihrem PC zu installieren. Sie können Anweisungen hier oder hier verwenden:). Haben Sie keine Angst, es ist nicht so schwer. Natürlich müssen Sie in Ihrem Terminal ausführen:

curl -L install.domoticz.com | sudo bash

Und das ist es:) mehr oder weniger. Domoticz-Setup

Nachdem unser Server nun bereit ist, können wir von jedem Webbrowser, auch von einem Tablet, darauf zugreifen, indem wir die folgende URL eingeben:

Schritt 4: Domoticz-Setup

Domoticz-Setup
Domoticz-Setup

Nachdem unser Server nun bereit ist, können wir von jedem Webbrowser, auch von einem Tablet, darauf zugreifen, indem wir die folgende URL eingeben:

Schritt 5: Passen Sie die Anwendungseinstellungen an

Passen Sie die Anwendungseinstellungen an
Passen Sie die Anwendungseinstellungen an
Passen Sie die Anwendungseinstellungen an
Passen Sie die Anwendungseinstellungen an

Es gibt verschiedene Anwendungseinstellungen, die über das Setup |. eingestellt werden können Menü Einstellungen.

Im Einstellungsmenü mit verschiedenen Registerkarten können Sie persönliche Parameter eingeben, die für eine bessere Systemfunktion erforderlich sind. Nachdem Sie die Daten in die Felder eingegeben haben, müssen Sie diese durch Drücken des roten Buttons „Einstellungen übernehmen“speichern. Nach dieser Aktion erscheinen alle Passwortfelder, die beim ersten Zugriff leer waren, mit einer langen Kette von Sternchen, auch wenn sie nicht verwendet wurden.

Nachdem Sie die Haupteinrichtung auf der Seite "System" vorgenommen haben, klicken Sie auf "Benachrichtigungen". Hier müssen wir anpassen, welche Art von Benachrichtigungen wir verwenden werden.

Schritt 6: Benachrichtigungen einrichten

Benachrichtigungen einrichten
Benachrichtigungen einrichten

Benachrichtigungen können beispielsweise gesendet werden, wenn ein Schalter gedrückt wird, der Stromverbrauch zu hoch ist, die Temperatur zu hoch ist und vieles mehr.

In unserem Fall müssen Benachrichtigungen gesendet werden, sobald vom Sensor Wasser erkannt wurde. Schalten Sie also einfach die ein, die Sie verwenden möchten. Außerdem benötigen Sie normalerweise einen API-Schlüssel, damit die Benachrichtigung funktioniert. Ich laufe ein wenig voraus und sage, dass ich Pushover, Pushsafer und Pushbullet ausprobiert habe. Und ich blieb bei Pushover. Später erzähle ich warum.

Ein paar Worte zur Funktionsweise von Benachrichtigungen. Sie müssen ein Konto auf Pushbullet, Pushover oder anderen Seiten haben, die Sie verwenden möchten. Außerdem benötigen Sie eine App auf Ihrem Handy oder PC.

Holen Sie sich den API-Schlüssel und fügen Sie ihn auf der obigen Seite ein. Sie können die Benachrichtigung testen, indem Sie auf "Testen" klicken. Wenn der API-Schlüssel korrekt ist, sollten Sie eine Testbenachrichtigung auf Ihr Mobiltelefon erhalten.

Sobald der Sensor Wasser erkennt, schaltet sich ESP ein und sendet eine Anfrage im JSON-Format an den Domoticz-Server. Wenn die Bedingungen für das Auslösen eines Ereignisses (Versenden einer Benachrichtigung an Ihr Mobiltelefon) erfüllt sind, sendet Domoticz die Benachrichtigung.

Später komme ich auf "Veranstaltungen" zurück.

Schritt 7: Einrichten der Kommunikation mit Hardwaregerät(en)

Einrichten der Kommunikation mit Hardwaregerät(en)
Einrichten der Kommunikation mit Hardwaregerät(en)
Einrichten der Kommunikation mit Hardwaregerät(en)
Einrichten der Kommunikation mit Hardwaregerät(en)
Einrichten der Kommunikation mit Hardwaregerät(en)
Einrichten der Kommunikation mit Hardwaregerät(en)

Bevor Sie die Domoticz-Anwendung zum Steuern von Geräten oder zum Auslesen von Sensoren verwenden können, müssen Sie die Kommunikation mit den Hardwaregeräten einrichten. Wählen Sie Setup|Hardware, um Hardware hinzuzufügen. Geräte werden erst angezeigt, wenn die entsprechende Hardware hinzugefügt wurde.

Die Domoticz-Anwendung unterstützt viele Hardwaregeräte nativ. In unserem Fall müssen wir zum Auslesen unseres Flutsensors sogenannte "Dummy"-Hardware aus der Hardwareliste hinzufügen.

Beim Hinzufügen von Hardware wird die Übersicht aller definierten Hardware angezeigt. Hardware kann deaktiviert oder gelöscht werden.

Die neue Hardware sollte in der Liste sein und es sollte eine Schaltfläche "Create Virtual Sensors" geben.

Klicken Sie auf diese Schaltfläche und wählen Sie Sensortyp "Alert". Jetzt müssen wir das Gerät in Domoticz hinzufügen, um aktiv zu werden.

Schritt 8: Fügen Sie das Gerät in Domoticz hinzu, um aktiv zu werden

Fügen Sie das Gerät in Domoticz hinzu, um aktiv zu werden
Fügen Sie das Gerät in Domoticz hinzu, um aktiv zu werden
Fügen Sie das Gerät in Domoticz hinzu, um aktiv zu werden
Fügen Sie das Gerät in Domoticz hinzu, um aktiv zu werden
Fügen Sie das Gerät in Domoticz hinzu, um aktiv zu werden
Fügen Sie das Gerät in Domoticz hinzu, um aktiv zu werden

Bitte beachten Sie die Nummer unter "IDX". Dies ist die eindeutige Referenz zu diesem Gerät und wir benötigen sie später in unserem Python-Skript, um die Benachrichtigung zu adressieren. In diesem Fall ist die IDX-Nummer 1.

Aktivieren Sie das Gerät, indem Sie links auf den grünen Pfeil klicken (auf meinem Bild unten ist er blau, weil das Gerät aktiviert ist).

Geben Sie den Namen des Geräts ein und klicken Sie auf "Hinzufügen".

Navigieren Sie zum Menü "Dienstprogramme" und Ihr Gerät sollte dort aufgeführt sein.

Jetzt müssen wir "Ereignis" für unseren Sensor programmieren. Das bedeutet, dass wir dem Server mitteilen müssen, was zu tun ist, falls er eine Nachricht vom Sensor bekommt. Und es war, sagen wir, der schwierigste Ort für mich:).

Schritt 9: Es funktioniert nicht auf diese Weise …

So funktioniert es nicht…
So funktioniert es nicht…

Ich begann mit dem Versuch, Ereignisse auf der Seite /device/ zu programmieren. Das unten ist nicht von mir, aber es ist in Ordnung, es zu veranschaulichen.

Wenn Sie glauben, dass Sie einige Kontrollkästchen aktivieren und es funktionieren wird, liegen Sie falsch:) So funktioniert es nicht. Ich nehme an, dieses Feature hier ist noch nicht fertig. Nicht vergessen - es ist Open Source Software. Ok, nach mehreren Stunden habe ich die Lösung gefunden. Wir müssen "Ereignisse" aus dem Dropdown-Menü "Setup" verwenden.

Nachdem Sie auf "Events" geklickt haben, können Sie Ihr eigenes Event erstellen. Sie können es tun, indem Sie einen Code in Python oder LUA schreiben, oder einfach indem Sie das Ding namens "Blockly" verwenden. Ich habe mich für Blockly entschieden. Es gibt zwei Möglichkeiten, den Server zu zwingen, das zu tun, was Sie wollen.

Schritt 10: Event richtig erstellen 1

Event richtig aufbauen 1
Event richtig aufbauen 1

1. Externe Datei über "Ereignisse" ausführen, mit Blockly-Nachricht "Skript starten"

Dies funktioniert für mich auf einem Windows-Rechner perfekt. Dies ist mir aber auf Raspbian auf meinem Raspberry Pi nicht gelungen. Ich vermute, dass es ein Problem mit den Berechtigungen gibt.

Schritt 11: Event richtig erstellen 2

Event richtig aufbauen 2
Event richtig aufbauen 2

2. Verwenden Sie die Nachricht "Benachrichtigung mit Betreff senden". Es funktioniert auf Raspbian. Diese Option unterstützt das Senden von Benachrichtigungen an Pushsafe und Pushover.

Der Vorteil der Verwendung von 1st Way ist, dass es flexibler ist. Sie können das Symbol auswählen, das auf Ihrem Display angezeigt werden soll, Töne usw. Meine "Veranstaltung" ist auf dem Bild oben dargestellt.

Als nächstes programmieren wir das ESP-Modul.

Schritt 12: ESP8266-01-Modul programmieren

Programmierung des ESP8266-01-Moduls
Programmierung des ESP8266-01-Moduls

Beginnen wir mit dem Flashen unseres ESP8266-Moduls. Normalerweise werden diese Module mit Werksfirmware geliefert. es ist möglich, mit Modulen über sogenannte AT-Befehle zu kommunizieren. Und auch diese Software erlaubt es nicht, Module wie Standalone-Controller zu verwenden. Um sie wie eigenständige Controller zu verwenden, müssen wir die Werksfirmware löschen und eine neue installieren.

Dazu verwenden wir esptool. Dann müssen wir unser Modul an den PC anschließen, um die Firmware zu löschen. Dazu benötigen Sie einen TTL-Konverter + einige zusätzliche Komponenten. Aber es gibt einen einfacheren Weg:). Kaufen Sie einfach bei aliexpress oder ebay USB zu ESP8266 ESP-01 Wi-Fi-Adaptermodul mit CH340G-Treiber.

Stecken Sie das ESP8266-Modul wie auf dem Bild gezeigt in den TTL-Konverter und verbinden Sie es mit dem USB-Anschluss.

Wenn Sie den gleichen Konverter wie ich haben, müssen Sie den Schalter allein auf die Position "Prog" stellen. Finden Sie heraus, wo esptool installiert ist (normalerweise irgendwo wie C:\Program Files (x86)\Python36-32\Scripts. Gehen Sie zu diesem Ordner, starten Sie dort die Eingabeaufforderung. Geben Sie ein: python esptool.exe --port COM5 era_flash

Wählen Sie natürlich den richtigen Port. In meinem Fall ist es COM5. Sie können den Port, auf dem ESP installiert ist, über Systemsteuerung - System - Geräte-Manager überprüfen.

Installieren Sie die Firmware (ich habe sie von hier genommen: https://micropython.org/download#esp8266), indem Sie Folgendes eingeben:

python esptool.exe --port COM5 --baud 460800 write_flash --flash_size=detect 0 C:\path_to_firmware\esp8266-20180511-v1.9.4.bin

Ok, jetzt können wir die Micropython-Skripte auf ESP8266 hochladen.

Ich verwende dafür das Adafruit MicroPython Tool (ampy).

Aber heutzutage gibt es eine andere Option namens Esplorer. Dies ist eine App mit Benutzeroberfläche, die es ermöglicht, Dateien in ESP-Module hochzuladen.

Eine Anleitung zur Installation von ampy finden Sie hier. Stellen Sie also den Schalter am TTL-Konverter auf die Position "UART". Wir müssen Dateien hochladen:

  • wifimgr.py - WLAN-Manager zum Verbinden mit dem WLAN-Netzwerk
  • main.py - unser Hauptskript

Geben Sie in der Befehlszeile Folgendes ein: ampy --port COM5 geben Sie C:\Pfad zu Ihrer Datei ein

Drücke Enter . Nach einigen Sekunden sollten Sie eine leere Befehlszeile sehen. Dies bedeutet, dass die Datei hochgeladen wurde. Sie können die Liste der Dateien auf ESP mit dem Befehl ampy überprüfen:

ampy --port COM5 ls

Aus meiner Erfahrung ist es besser main.py hochzuladen, nachdem Sie alle notwendigen Dateien hochgeladen haben. Es ist so, denn sobald Sie main.py hochladen, wird das ESP8266-Modul neu gestartet und beginnt mit der Ausführung der Datei main.py. Wenn Sie also in diesem Fall versuchen, eine andere Datei hochzuladen, schlägt der Upload-Vorgang manchmal fehl. Aber es bedeutet nicht, dass alles verloren ist:), versuchen Sie es einfach ein zweites Mal und Sie werden Erfolg haben (wiederum aus meiner Erfahrung).

Alle Dateien für dieses Projekt sind hier verfügbar:

Schritt 13: Verbinden Sie sich mit Ihrem WLAN-Netzwerk. Benachrichtigung erhalten

Verbinden Sie sich mit Ihrem WLAN-Netzwerk. Benachrichtigung erhalten
Verbinden Sie sich mit Ihrem WLAN-Netzwerk. Benachrichtigung erhalten
Verbinden Sie sich mit Ihrem WLAN-Netzwerk. Benachrichtigung erhalten
Verbinden Sie sich mit Ihrem WLAN-Netzwerk. Benachrichtigung erhalten

Wenn alles in Ordnung ist, starten Sie das Modul neu, indem Sie den TTL-Konverter wieder in den USB-Port Ihres PCs stecken.

Suchen Sie nach dem Start von ESP ein neues WLAN-Netzwerk namens "Wifimanager". Verbinden Sie sich mit Ihrem PC oder Telefon und gehen Sie dann zur IP-Adresse 192.168.4.1.. Hier können Sie Ihren ESP mit dem lokalen WLAN-Netzwerk verbinden. Wählen Sie das WLAN-Netzwerk, das Sie verwenden möchten, geben Sie das Passwort ein und klicken Sie auf "Senden".

Wenn alles korrekt ist, wird die Meldung "ESP erfolgreich mit XXXX-Netzwerk verbunden" angezeigt. Ihr ESP ist jetzt mit Ihrem WiFi-Netzwerk verbunden und bereit. Sobald es mit WiFi verbunden ist, verbindet es sich mit dem Domoticz-Server. Shorty müssen Sie eine Benachrichtigung auf Ihrem Handy erhalten.

Den Vorgang können Sie unter "Setup"/"Log" verfolgen.

Vua lia!:) Es klappt. Jetzt können wir alle Teile zusammenbauen, gemäß dem Blockschaltbild unten.

Schritt 14: Blockdiagramm

Blockschaltbild
Blockschaltbild

Zu diesem Diagramm gibt es nicht viel zu sagen. Sehr einfach. Schalten Sie die Stromversorgung mit dem Schalter S1 um. Das Gerät steht im ausgeschalteten Zustand, bis das Wasser die "Wassersensor"-Pins kurzschließt. Dann schaltet sich "Pololu Board" ein und versorgt den Spannungswandler mit Strom. Dieses auf dem HT7333-Chip basierende Leistungsmodul wandelt die Spannung für ESP8266 in stabile 3,3 V um. Als nächstes schaltet sich ESP ein und sendet eine Nachricht an den Domoticz-Server.

Schritt 15: Ergebnis und Schlussfolgerungen

Ergebnis und Schlussfolgerungen
Ergebnis und Schlussfolgerungen
Ergebnis und Schlussfolgerungen
Ergebnis und Schlussfolgerungen
Ergebnis und Schlussfolgerungen
Ergebnis und Schlussfolgerungen
Ergebnis und Schlussfolgerungen
Ergebnis und Schlussfolgerungen

Es klappt. Das Senden der Benachrichtigung dauerte bis zu 10 Sekunden: Verbindung zum WLAN, Benachrichtigung senden, Alarmmeldung an Ihr Telefon erhalten.

Ich habe den Sensor so programmiert, dass er alle 30s einen Alarm sendet, wenn Wasser erkannt wurde. Der Sensor kann bis zu 5 - 6 Benachrichtigungen senden, bis der Akku entladen ist. Ein solches Gerät kann auch verwendet werden, um den Wasserstand zu bestimmen. Was ich verbessern möchte.

1. Damit es schneller funktioniert. Ich denke, ich werde versuchen, die ESP-Now-Technologie zu verwenden, mit der ich mehrere ESPs direkt verbinden kann. In diesem Fall ist der Stromverbrauch während der Verbindung sehr gering und schneller. Die Idee ist also, einen ESP wie einen Hub zu verwenden, um andere ESPs zu verbinden.

2. Implementieren Sie einen Batteriestandsalarm. Jetzt können Sie nicht wissen, ob genügend Strom vorhanden ist, um eine Alarmmeldung zu senden oder nicht. Ich denke, in der nächsten Generation dieses Sensors wird es einen speziellen Knopf zum Testen der Batterieladung geben.

Der Benutzer muss eine Taste drücken und der Akkustand wird angezeigt.