Inhaltsverzeichnis:

MQTT/Google Home Flood/Water WIFI Sensor mit ESP-01 - Gunook
MQTT/Google Home Flood/Water WIFI Sensor mit ESP-01 - Gunook

Video: MQTT/Google Home Flood/Water WIFI Sensor mit ESP-01 - Gunook

Video: MQTT/Google Home Flood/Water WIFI Sensor mit ESP-01 - Gunook
Video: Connecting sensors to my favorite irrigation controller using WiFi - MQTT & NodeMCU 2024, November
Anonim
MQTT/Google Home Flood/Water WIFI Sensor mit ESP-01
MQTT/Google Home Flood/Water WIFI Sensor mit ESP-01

In diesem anweisbaren zeige ich Ihnen, wie man einen WLAN-Flut- / Wassersensor mit minimalen Kosten baut. Das ganze Projekt kostet mich weniger als $8 für Teile, die ich von ebay erhalte und meine vorhandenen Ersatzteile.

In diesem Projekt werden wir ESP-01 verwenden, um einen Wifi- und MQTT-Client bereitzustellen, um das Vorhandensein von Wasser zu erkennen, und optional einen direkt angeschlossenen Lautsprecher/Summer verwenden, um einen lokalisierten Alarm bereitzustellen.

Meine spezifische Anwendung für das Projekt ist die Erkennung von Überschwemmungen / Wasser in meinem Sumpfpumpenbrunnen im Falle eines Sumpfpumpenausfalls. Wenn Wasser von 2 offenen Drähten erkannt wird, sendet es eine Nachricht an den MQTT-Broker. Der MQTT-Broker leitet die Nachricht dann an NodeRED weiter. Beim Empfang einer MQTT-Nachricht sendet NodeRED eine Ankündigung an mehrere Google-Heimgeräte und optional auch eine Nachricht per Pushbullet an das Mobiltelefon / den Browser

Jetzt würde dieses Projekt natürlich nur funktionieren, wenn der Strom zu Hause eingeschaltet ist. Im nächsten anweisbaren werde ich die Batterie-Backup-Schaltung integrieren. Aber wenn Sie die Stromversorgung auf die gleiche Weise wie ich machen, können Sie einfach eine USB-Powerbank für die Batteriesicherung anschließen. Wenn Sie eine Powerbank haben, mit der Sie gleichzeitig laden und Strom liefern können, dann sind Sie fertig.

Ich verwende RaspberryPi ZeroW, um Mosquitto MQTT-Server und NodeRED zu hosten. Es läuft seit über einem Jahr ohne Probleme.

Referenzen:Raspberry Pi:https://www.switchdoc.com/2016/02/tutorial-installi…NodeRED auf Raspberry Pi installieren:

Schritt 1: Teile, die Sie benötigen

Teile, die Sie benötigen
Teile, die Sie benötigen
Teile, die Sie benötigen
Teile, die Sie benötigen
Teile, die Sie benötigen
Teile, die Sie benötigen

Liste der Einzelteile:

(1) ESP-01

(2) 10K Ohm Widerstand

(1) Kleinsignalgenerischer NPN-Transistor (ich habe 2N3904) verwendet

(2) lange Drähte

(1) 5V generische Stromversorgung (diese Schaltung benötigt weniger als 300mA Strom)

(1) 3.3V Reglermodul AMS1117

(1) Micro-USB zu DIP Adapter Buchse PCB Converter DIY Kit

(1) USB-A-zu-MicroUSB-Kabel.

(1) 8-poliger IC-Sockel - kann entfallen, wenn Sie ESP-01 direkt auf die Platine löten möchten. Schneiden Sie die Plastikbrücken, die die Lücke zwischen den Reihen bilden, und kleben Sie dann die 2 Reihen zusammen, siehe Foto.

(1) Kleines Gehäuse für das Projekt

Unten sind optionale Teile, wenn Sie einen lokalisierten Alarm mit Lautsprecher/Summer benötigen

(1) Generic PNP Transistor, wählen Sie je nach Lautsprecher-/Summerstrom-/Wattleistungsanforderung. In meinem Fall verwende ich 2N2907, da mein Lautsprecher nur 0,3 W (8 Ohm) hat, es würde genug Leistung liefern, um den Lautsprecher anzutreiben. Sie können einen größeren Transistor und einen größeren Lautsprecher wählen, wenn Sie einen lauteren Klang wünschen.

(1) Lautsprecher, siehe Hinweis zum PNP-Transistor oben

(1) 100 - 110 Ohm Widerstand

Schritt 2: Schaltplan

Schaltplan
Schaltplan

Der erste Schritt wäre, die im Diagramm gezeigte Schaltung zu erstellen.

Ich habe das 3,3-VDC-Netzteil mit einem alten 5-V-Handyladegerät gebaut, das mit dem 3,3-VDC-Regler AMS1117 gekoppelt ist. Für den ESP-01-Sockel verwende ich einen 8-poligen Standard-IC-Sockel und schneide die Kunststoffbrücken, die die Lücke zwischen den Reihen erzeugen, und klebe dann die 2 Reihen zusammen.

Die Schaltung, die ich entworfen habe, soll das Vorhandensein von Wasser zwischen den beiden Drähten erkennen. Wenn Wasser die Spitze beider Drähte erreicht, würde es einen Widerstand von ungefähr 10K bis 20K Ohm erzeugen. Dann in Reihe mit dem 10K Ohm R1 liefert es einen kleinen Strom an die Basis von Q1, wodurch Q1 gesättigt wird, wodurch der GPIO-2 an Masse geklemmt wird. R1 ist erforderlich, um Q1 zu schützen, falls ein versehentlicher Kurzschluss an den Sensordrähten auftritt.

R2 ist ein Pull-Up-Widerstand, damit ESP-01 vom Flash booten kann.

Nun zum optionalen Lautsprecher/Summer: Wenn Sie ESP-01 nur zum Sprechen von MQTT benötigen und diese lokalisierte Alarmierung nicht implementieren möchten, können Sie R2, Q2, Lautsprecher entfernen und einen 10K-Pull-up-Widerstand zwischen GPIO-0. platzieren und VCC.

Wenn Sie keine Notwendigkeit für die Verwendung des Micro-USB-zu-DIP-Adapters haben, können Sie Drähte zwischen dem 5V-PS und dem 3.3V-Reglermodul anlöten. Ich bevorzuge die Verwendung des weiblichen MicroUSB-Adapters, damit ich jedes generische Handy-Ladegerät und MicroUSB-Kabel verwenden kann.

Schritt 3: Aufbau der Schaltung

Aufbau der Schaltung
Aufbau der Schaltung
Aufbau der Schaltung
Aufbau der Schaltung
Aufbau der Schaltung
Aufbau der Schaltung

Löten Sie alle Komponenten und Teile gemäß dem Schaltplan auf der vorherigen Seite in die Leiterplatte ein und schneiden Sie die Leiterplatte zu.

Platzieren Sie die Platine in einem Gehäuse, das in die Platine und den optionalen Lautsprecher passt. In meinem Fall würden alle Teile in eine kleine Telefondose passen, obwohl ich die Abdeckung etwas erwärmen muss, um eine Ausbuchtung zu erzeugen, damit das ESP-01-Modul passt.

Schritt 4: Flashen des ESP-01

In diesem Schritt werden wir das ESP-01 mit Arduino-Skizze flashen. Wenn Sie das ESP-01-Modul noch nie geflasht haben, können Sie meinem instructable folgen, um Ihnen den Einstieg zu erleichtern:

Meine Skizze findet ihr auf meiner Github-Seite:

In der Skizze müssen Sie mindestens die folgenden Informationen zu Ihrem Heimnetzwerk/Setup ändern:

#define MQTT_SERVER "10.0.0.30"const char* ssid1 = "SSID";const char* password1 = "MYSSIDpassword";const char* ssid2 = "SSID1";const char* password2 = "MYSSIDpassword";

In meinem Heimnetzwerk habe ich 2 verschiedene Zugangspunkte, die 2 verschiedene SSIDs übertragen, und diese Skizze würde Redundanz ermöglichen, indem eine Verbindung zur nächsten SSID hergestellt wird, wenn die Kommunikation zum aktuellen AP verloren geht. Wenn Sie nur eine SSID haben, füllen Sie sowohl ssid1 als auch ssid2 mit demselben Wert aus.

Sobald Sie die Änderung vorgenommen haben, laden Sie die Skizze in ESP-01 hoch und stecken Sie das ESP-01 in die Schnittstellenplatine ein.

Schritt 5: Testlauf

Um zu testen, ob unser Projekt funktioniert, wäre es am einfachsten, MQTT-Nachrichten im Netzwerk zu überwachen. Dazu müssen Sie eine SSH-Sitzung zum Mosquitto-Broker öffnen und den folgenden Befehl ausführen:

mosquitto_sub -v -t '#'

Der obige Befehl würde es uns ermöglichen, alle MQTT-Nachrichten zu sehen, die in den Broker eingehen.

Schalten Sie nun unsere Schaltung ein, und wenn alles funktioniert, sollten Sie in wenigen Sekunden zumindest die folgende MQTT-Nachricht sehen:

stat/SumpfWasserSensor/LWT Online

Testen Sie nun den Wassersensor, indem Sie die 2 Sensordrähte in eine Tasse Wasser tauchen, und Sie sollten diese Meldung sehen:

tele/SumpfWasserSensor WET

Und wenn Sie die Drähte aus dem Wasser nehmen, sollten Sie diese Meldung sehen:

tele/SumpfWasserSensor DRY

Wenn Sie diese Meldungen sehen, ist Ihr Projekt ein Erfolg.

Ich habe auch einige nützliche MQTT-Themen in die Skizze aufgenommen, die Sie verwenden können:

"stat/SumpWaterSensorInfo": Diese Nachricht wird jede Minute gesendet, um Betriebszeit und andere Informationen bereitzustellen.

"cmnd/SumpWaterSensorInfo": ESP-01 sendet Informationen, wenn es dieses Thema mit dem Wert '1' (ascii=49) empfängt

"cmnd/SumpWaterSensorCPRestart": ESP-01 wird neu gestartet, wenn es dieses Thema mit dem Wert '1' (ascii=49) empfängt

"cmnd/SumpWaterSensorBeep": ESP-01 lässt den Lautsprecher ertönen, wenn er dieses Thema mit dem Wert '1' (ascii=49) empfängt.

"cmnd/SumpWaterSensorBeepFreq": Legt die Frequenz des Lautsprecheralarms fest, Standard = 900 (Hz)

"cmnd/SumpWaterSensorDebug": Aktivieren und Festlegen des seriellen Debug-Levels (Standard ist 0 - kein Debuggen)

Schritt 6: Montieren Sie den Sensor

Montieren Sie den Sensor
Montieren Sie den Sensor
Montieren Sie den Sensor
Montieren Sie den Sensor

In meiner Anwendung möchte ich den Wasserstand in meinem Sumpfpumpenbrunnen überwachen und mich benachrichtigen, wenn Wasser über den Schwimmerschalter der Sumpfpumpe gelangt, was bedeutet, dass meine Sumpfpumpe nicht funktioniert. Ich habe die Drähte verlegt und Kabelbinder verwendet, um sie entlang des Abflussrohrs zu befestigen.

Schritt 7: Letzter Schliff

Letzter Schliff
Letzter Schliff

Jetzt, da wir das Projekt zum Laufen gebracht haben und in der Lage sind, MQTT-Nachrichten an den Broker zu veröffentlichen, besteht der nächste Schritt darin, sich eine Idee zu überlegen, was damit zu tun ist.

In meinem Projekt verwende ich Node-RED, um das MQTT-Thema "tele/SumpWaterSensor" anzuhören / zu abonnieren und mehreren Google-Home-Lautsprechern anzukündigen, wenn Wasser erkannt wird. Darüber hinaus habe ich den Flow auch mit einem Pushbullet-Knoten verknüpft, um Benachrichtigungen an mein Android-Telefon zu senden.

Ich habe auch ein Web-Front-End erstellt, um den Status des Sensors zu sehen (on/offline, Betriebszeit usw.). Manchmal habe ich gesehen, dass es im Laufe einer Woche einige Male offline geht, aus den Statistiken, oft liegt es daran, dass ESP-01 vom WLAN oder MQTT getrennt wurde. Aber keine Sorge, mein Sketch hat eine Routine zum Neustart des ESP-01 enthalten, wenn es weiterhin fehlschlägt, eine Verbindung zu WIFI und / oder MQTT-Broker herzustellen.

Das Bild in diesem Schritt zeigt den Node-RED-Flow, um dies zu erreichen. Sie können den Flow auch von meiner Github-Seite in Ihr Node-RED einfügen:

Die Google Home-Ankündigung ist nur ein Beispiel für dieses Projekt, aber ich denke, es ist das nützlichste und praktischste. Sie können sich jederzeit mit anderen MQTT-Listenern verbinden oder sogar IFTTT verwenden, um andere Geräte anzusteuern, wenn Wasser erkannt wird.

Spaß haben…

Empfohlen: