Inhoudsopgave:

MQTT/Google Home Flood/Water WIFI-sensor met ESP-01 - Ajarnpa
MQTT/Google Home Flood/Water WIFI-sensor met ESP-01 - Ajarnpa

Video: MQTT/Google Home Flood/Water WIFI-sensor met ESP-01 - Ajarnpa

Video: MQTT/Google Home Flood/Water WIFI-sensor met ESP-01 - Ajarnpa
Video: Shelly Flood Sensor - Water Leak Notifications with Home Assistant and MQTT 2024, Juli-
Anonim
MQTT/Google Home Flood/Water WIFI-sensor met ESP-01
MQTT/Google Home Flood/Water WIFI-sensor met ESP-01

In deze instructable laat ik je zien hoe je een wifi-overstromings- / watersensor kunt bouwen met minimale kosten. Het hele project kost me minder dan $ 8 voor onderdelen die ik van ebay koop en mijn bestaande reserveonderdelen.

In dit project zullen we ESP-01 gebruiken om wifi en MQTT-client te bieden om de aanwezigheid van water te detecteren, en optioneel gebruiken we een direct aangesloten luidspreker/zoemer om een gelokaliseerd alarm te bieden.

Mijn specifieke toepassing voor dit project is het detecteren van overstroming/water in mijn zinkputpompput, in het geval van een storing in de zinkputpomp. Wanneer water wordt gedetecteerd door 2 open draden, stuurt het een bericht naar de MQTT-makelaar. MQTT-makelaar stuurt het bericht vervolgens door naar NodeRED. Na ontvangst van het MQTT-bericht zou NodeRED een aankondiging naar meerdere Google Home-apparaten sturen en optioneel ook een bericht naar mobiel / browser sturen via pushbullet

Nu zou dit project natuurlijk alleen werken als de elektriciteit thuis AAN staat. In de volgende instructable zal ik het batterijback-upcircuit integreren. Maar als je de voeding op dezelfde manier maakt als ik, kun je gewoon een USB-powerbank aansluiten voor back-up van de batterij. Als je een powerbank hebt waarmee je tegelijkertijd kunt opladen en stroom kunt leveren, dan ben je helemaal klaar.

Ik gebruik RaspberryPi ZeroW om Mosquitto MQTT-server en NodeRED te hosten. Het draait al meer dan een jaar zonder enig probleem.

Referenties:Raspberry Pi:https://www.switchdoc.com/2016/02/tutorial-installi…Installeer NodeRED op Raspberry Pi:

Stap 1: Onderdelen die u nodig heeft

Onderdelen die u nodig heeft
Onderdelen die u nodig heeft
Onderdelen die u nodig heeft
Onderdelen die u nodig heeft
Onderdelen die u nodig heeft
Onderdelen die u nodig heeft

Onderdelen lijst:

(1) ESP-01

(2) 10K ohm Weerstand:

(1) generieke NPN-transistor met klein signaal (ik gebruikte 2N3904)

(2) lange draden

(1) 5V generieke voeding (dit circuit vereist minder dan 300mA stroom)

(1) 3.3V regelmodule AMS1117

(1) Micro-USB naar DIP-adapter Vrouwelijke connector PCB-omzetter DIY-kit

(1) USB-A naar MicroUSB-kabel.

(1) 8-pins IC-socket - kan worden weggelaten als u ESP-01 rechtstreeks op de printplaat wilt solderen. Knip de plastic bruggen die de opening tussen de rijen creëren, en lijm vervolgens de 2 rijen aan elkaar, zie foto.

(1) Kleine behuizing voor het project

Hieronder staan optionele onderdelen als u een gelokaliseerd alarm nodig heeft met luidspreker/zoemer

(1) Generieke PNP-transistor, kies volgens luidspreker/zoemerstroom/wattage-eis. In mijn geval gebruik ik 2N2907 omdat mijn luidspreker slechts 0,3 W (8 ohm) is, het zou voldoende vermogen leveren om de luidspreker aan te sturen. U kunt een grotere transistor en luidspreker kiezen als u een luider geluid wilt.

(1) Luidspreker, zie opmerking over PNP-transistor hierboven

(1) 100 - 110 ohm Weerstand

Stap 2: Schakelschema

Schakelschema
Schakelschema

De eerste stap zou zijn om het circuit te maken dat in het diagram wordt weergegeven.

Ik heb de 3.3VDC-voeding gebouwd met behulp van een oude 5V-oplader voor mobiele telefoons in combinatie met een AMS1117 3.3VDC-regelaar. Voor de ESP-01-socket gebruik ik een 8-pins standaard IC-socket en snij de plastic bruggen die de opening tussen de rijen creëren, en lijm vervolgens de 2 rijen aan elkaar.

Het circuit dat ik heb ontworpen is om de aanwezigheid van water tussen de twee draden te voelen. Wanneer water de punt van beide draden bereikt, zou dit een weerstand creëren van ongeveer 10K tot 20K ohm. Vervolgens in serie met de 10K ohm R1 levert het een kleine stroom aan de basis van de Q1 waardoor Q1 verzadigd raakt, waardoor de GPIO-2 aan aarde wordt vastgeklemd. R1 is nodig om Q1 te beschermen in het geval er per ongeluk kortsluiting is op de sensordraden.

R2 is een pull-up-weerstand waarmee ESP-01 kan opstarten vanaf flash.

Nu voor de optionele luidspreker/zoemer, als je alleen ESP-01 nodig hebt om MQTT te spreken en deze gelokaliseerde alarmering niet wilt implementeren, kun je R2, Q2, luidspreker verwijderen en een 10K pull-up-weerstand tussen GPIO-0 plaatsen en VCC.

Als u niet de behoefte voelt om de vrouwelijke Micro-USB naar DIP-adapter te gebruiken, kunt u draden tussen de 5V PS en de 3,3V-regelaarmodule solderen. Ik gebruik liever de vrouwelijke MicroUSB-adapter, zodat ik elke generieke mobiele telefoonoplader en MicroUSB-kabel kan gebruiken.

Stap 3: Het circuit bouwen

Het circuit bouwen
Het circuit bouwen
Het circuit bouwen
Het circuit bouwen
Het circuit bouwen
Het circuit bouwen

Soldeer alle componenten en onderdelen in de printplaat volgens het schakelschema op de vorige pagina en knip de printplaat op maat.

Plaats de printplaat in een behuizing die op de printplaat en de optionele luidspreker past. In mijn geval zouden alle onderdelen in een kleine telefoondoos passen, hoewel ik de hoes een beetje moet opwarmen om een uitstulping te maken zodat de ESP-01-module zou passen.

Stap 4: Knipperen van de ESP-01

In deze stap zullen we de ESP-01 flashen met arduino-schets. Als je de ESP-01-module nog nooit hebt geflitst, kun je mijn instructable volgen om je op weg te helpen:

Je kunt mijn schets vinden op mijn github-pagina:

In de schets moet u minimaal de volgende informatie met betrekking tot uw thuisnetwerk/configuratie wijzigen:

#define MQTT_SERVER "10.0.0.30"const char* ssid1 = "SSID";const char* wachtwoord1 = "MYSSIDpassword";const char* ssid2 = "SSID1";const char* wachtwoord2 = "MYSSIDpassword";

In mijn thuisnetwerk heb ik 2 verschillende toegangspunten die 2 verschillende SSID's uitzenden, en deze schets zou redundantie mogelijk maken door verbinding te maken met de volgende SSID als de communicatie met het huidige AP wegvalt. Als je maar één SSID hebt, vul dan zowel ssid1 als ssid2 in met dezelfde waarde.

Nadat u de wijziging hebt aangebracht, uploadt u de schets naar ESP-01 en sluit u de ESP-01 aan op het interfacebord.

Stap 5: Proefdraaien

Om te testen of ons project werkt, is het het gemakkelijkst om MQTT-berichten in het netwerk te controleren. Om dat te doen, moet je een SSH-sessie openen voor de mug-makelaar en de volgende opdracht geven:

mosquitto_sub -v -t '#'

Met het bovenstaande commando kunnen we alle MQTT-berichten zien die de makelaar binnenkomen.

Zet nu ons circuit aan, en als alles werkt, zou je binnen een paar seconden op zijn minst het volgende MQTT-bericht moeten zien:

stat/SumpWaterSensor/LWT Online

Test nu de watersensor door de 2 sensordraden in een kopje water te dompelen, en u zou dit bericht moeten zien:

tele/SumpWaterSensor NAT

En als je de draden uit het water haalt, zou je dit bericht moeten zien:

tele/SumpWaterSensor DROOG

Als je die berichten ziet, is je project een succes.

Ik heb ook verschillende nuttige MQTT-onderwerpen in de schets opgenomen die je kunt gebruiken:

"stat/SumpWaterSensorInfo": dit bericht wordt elke minuut verzonden om uptime en andere informatie te verstrekken.

"cmnd/SumpWaterSensorInfo": ESP-01 verzendt informatie als het dit onderwerp ontvangt met de waarde '1' (ascii=49)

"cmnd/SumpWaterSensorCPurestart": ESP-01 zal opnieuw opstarten als het dit onderwerp ontvangt met de waarde '1' (ascii=49)

"cmnd/SumpWaterSensorBeep": ESP-01 laat de luidspreker klinken als deze dit onderwerp ontvangt met de waarde '1' (ascii=49)

"cmnd/SumpWaterSensorBeepFreq": Stelt de frequentie van het luidsprekeralarm in, standaard = 900 (Hz)

"cmnd/SumpWaterSensorDebug": Serieel foutopsporingsniveau inschakelen en instellen (standaard is 0 - geen foutopsporing)

Stap 6: Monteer de sensor

Monteer de sensor
Monteer de sensor
Monteer de sensor
Monteer de sensor

In mijn toepassing wil ik het waterniveau in mijn zinkputpompput controleren en mij waarschuwen als het water boven de vlotterschakelaar van de zinkputpomp komt, wat betekent dat mijn zinkputpomp niet werkt. Ik liet de draden lopen en gebruik draadbanden om het langs de afvoerpijp te bevestigen.

Stap 7: Laatste hand

Laatste aanraking
Laatste aanraking

Nu we het project hebben laten werken en in staat zijn om het MQTT-bericht naar de broker te publiceren, is de volgende stap om een idee te bedenken wat we daarmee kunnen doen.

In mijn project gebruik ik Node-RED om te luisteren/abonneren op het "tele/SumpWaterSensor" MQTT-onderwerp en aan te kondigen aan verschillende Google Home-luidsprekers als er water wordt gedetecteerd. Daarnaast heb ik de stroom ook gekoppeld aan een pushbullet-knooppunt om een melding naar mijn Android-telefoon te sturen.

Ik heb ook een web front-end gemaakt om de status van de sensor te zien (aan/offline, uptime, etc). Soms zag ik dat het in de loop van 1 week een paar keer offline gaat, uit de statistieken, vaak komt het doordat ESP-01 de verbinding met wifi of MQTT verbreekt. Maar maak je geen zorgen, mijn schets bevat een routine om de ESP-01 opnieuw op te starten als het niet lukt om verbinding te maken met WIFI en/of MQTT-broker.

De afbeelding bij deze stap toont de Node-RED-stroom om dit te bereiken. Je kunt ook de stroom van mijn github-pagina in je Node-RED plakken:

Google Home-aankondiging is slechts één voorbeeld voor dit project, maar ik denk dat dit het nuttigst en meest praktisch is. Je kunt altijd communiceren met andere MQTT-luisteraars, of zelfs IFTTT gebruiken om andere apparaten aan te sturen wanneer er water wordt gedetecteerd.

Veel plezier…

Aanbevolen: