Inhoudsopgave:

Waterlekkagesensor op ESP8266 + Micropython + Domoticz - Ajarnpa
Waterlekkagesensor op ESP8266 + Micropython + Domoticz - Ajarnpa

Video: Waterlekkagesensor op ESP8266 + Micropython + Domoticz - Ajarnpa

Video: Waterlekkagesensor op ESP8266 + Micropython + Domoticz - Ajarnpa
Video: Water leakage sensor on ESP8266 + micropython + Domoticz 2024, November
Anonim
Waterleksensor op ESP8266 + Micropython + Domoticz
Waterleksensor op ESP8266 + Micropython + Domoticz
Waterleksensor op ESP8266 + Micropython + Domoticz
Waterleksensor op ESP8266 + Micropython + Domoticz

Enige tijd geleden vroeg mijn vrouw me om een waterlekkagesensor te maken. Ze was bang dat de slang in de stookruimte lek zou kunnen zijn en dat het water de pas gelegde houten vloer zou overstromen. En ik als een echte ingenieur nam me op om zo'n sensor te doen.

Uit mijn 15 jaar ervaring als medisch ingenieur weet ik dat de gemakkelijkste manier om water te detecteren, metalen pinnen zijn die kortgesloten zijn door water. Het werkingsprincipe van de eenvoudigste sensoren is dat water twee (of meer) metalen pinnen moet kortsluiten en zodra het gebeurt, wordt het alarm geactiveerd.

Stap 1: Hardware

Hardware
Hardware

Voor dit project hebben we nodig:

1. ESP8266 - 01-module

2. HT7333 3.3V MS Low Dropout Linear Regulator Voedingsmodule

We hebben deze module nodig om de spanning van de batterij te verlagen tot het acceptabele niveau voor ESP8266. Volgens de datasheet moet er 3V tot 3.6V ingang zijn. Deze module geeft ons 3.3V.

3. Batterij. Ik gebruik een 3, 7V Li-ion 400mAh-batterij. Eigenlijk kunt u elke andere geschikte stroombron gebruiken. 18650 batterij is ook een goede keuze. Houd er bij het kiezen van een batterij rekening mee dat ESP ongeveer 200 mA "vreet" bij verbinding met een wifi-netwerk, en ongeveer 60 mA wordt gebruikt wanneer het bord gegevens naar de server uploadt.

4. TP4056 Lipo-batterijoplaadbord.

5. Pololu mini-drukknop Power Switch Zeer interessant klein bord. Hiermee kunnen we de ESP-module alleen schakelen als er water wordt gedetecteerd. U hoeft ESP niet AAN te houden. Het is dus goed om de batterij te sparen.

6. Huisvesting7. Dubbele microschakelaar AAN-UIT. Eén lijn dient om het apparaat in te schakelen. De tweede regel is om te testen - het maakt kortsluiting zonder water, alleen om ons te laten weten of het apparaat werkt of niet.

8. Raspberry Pi-microcomputer

Ik gebruik Raspberry Pi Zero. Het is krachtig genoeg om de Domoticz-server te draaien.

Stap 2: Software

Op uw pc:

1. esptool geïnstalleerd, voor het wissen van modules en het flashen van firmware

2. Ampy geïnstalleerd, voor het flashen van je programma

3 Python 3.6 of hoger aanbevolen

4. Elke gewenste code-editor. Eenvoudigste - Python IDLE die normaal gesproken wordt geïnstalleerd met Python. Ik gebruik Pycharm / Atom of Anaconda Spyder On Raspberry Pi

5. Domoticz-server geïnstalleerd op Raspberry Pi (of gewone pc onder Windows of Linux)

Stap 3: Bereid Raspberry Pi voor - Installeer Domoticz

Neem dus uw RPi en installeer een besturingssysteem dat geschikt is voor het draaien van de Domoticz-server.

U kunt deze instructies volgen.

Ik gebruik Raspbian Stretch met Desktop vanaf hier:

De volgende stap is om de Domoticz-server op uw pc te installeren. U kunt instructies hier of hier gebruiken:). Wees niet bang, het is niet zo moeilijk. Uiteraard moet u in uw terminal uitvoeren:

curl -L install.domoticz.com | sudo bash

En dat is het:) min of meer. Domotica instellen

Nu onze server gereed is, hebben we er toegang toe vanuit elke webbrowser, ook vanaf een tablet door de volgende URL in te voeren:

Stap 4: Domoticz-installatie

Domotica instellen
Domotica instellen

Nu onze server gereed is, hebben we er toegang toe vanuit elke webbrowser, ook vanaf een tablet door de volgende URL in te voeren:

Stap 5: Pas de applicatie-instellingen aan

Pas applicatie-instellingen aan
Pas applicatie-instellingen aan
Pas applicatie-instellingen aan
Pas applicatie-instellingen aan

Er zijn verschillende applicatie-instellingen die kunnen worden ingesteld via de Setup | Instellingenmenu.

In het menu Instellingen met verschillende tabbladen kunt u persoonlijke parameters invoeren die nodig zijn voor een betere werking van het systeem. Nadat u gegevens in de velden hebt ingevoerd, moet u deze opslaan door op de rode knop "Instellingen toepassen" te drukken. Na deze actie zullen alle wachtwoordvelden, die bij de eerste toegang leeg waren, verschijnen met een lange reeks sterretjes, zelfs als ze niet zijn gebruikt.

Nadat u de hoofdconfiguratie op de pagina "Systeem" hebt gemaakt, klikt u op "Meldingen". Hier moeten we aanpassen wat voor soort meldingen we gaan gebruiken.

Stap 6: Meldingen instellen

Meldingen instellen
Meldingen instellen

Meldingen kunnen bijvoorbeeld worden verzonden als er op een schakelaar wordt gedrukt, het elektriciteitsverbruik te hoog is, de temperatuur te hoog en voor veel meer opties.

In ons geval moeten meldingen worden verzonden zodra er water door de sensor wordt gedetecteerd. Dus zet gewoon die aan die je wilt gebruiken. Normaal gesproken heb je ook een API-sleutel nodig om de melding te laten werken. Ik loop een beetje vooruit en ik zal zeggen dat ik Pushover, Pushsafer en Pushbullet heb geprobeerd. En ik bleef bij Pushover. Later zal ik vertellen waarom.

Weinig woorden over hoe meldingen werken. Je moet een account hebben op Pushbullet, Pushover of andere pagina's die je wilt gebruiken. Ook heb je een app op je mobiele telefoon of pc nodig.

Haal de API-sleutel op en voeg deze in op de bovenstaande pagina. U kunt de melding testen door op "Test" te klikken. Als de API-sleutel correct is, zou u een testmelding op uw mobiele telefoon moeten krijgen.

Zodra de sensor water detecteert, schakelt ESP in en stuurt het verzoek naar de Domoticz-server in JSON-formaat. Als aan de voorwaarden voor het activeren van een gebeurtenis (melding naar je mobiele telefoon) is voldaan, verstuurt Domoticz de melding.

Op "evenementen" kom ik later terug.

Stap 7: Stel de communicatie naar hardwareapparaat(en) in

De communicatie naar hardwareapparaat(en) instellen
De communicatie naar hardwareapparaat(en) instellen
De communicatie naar hardwareapparaat(en) instellen
De communicatie naar hardwareapparaat(en) instellen
De communicatie naar hardwareapparaat(en) instellen
De communicatie naar hardwareapparaat(en) instellen

Voordat je de Domoticz applicatie kunt gebruiken om apparaten aan te sturen of sensoren uit te lezen, moet je eerst de communicatie met hardware apparaat(en) instellen. Selecteer Setup|Harware om hardware toe te voegen. Apparaten worden pas weergegeven als de juiste hardware is toegevoegd.

De Domoticz-applicatie ondersteunt native veel hardwareapparaten. In ons geval om onze overstromingssensor te lezen, moeten we zogenaamde "Dummy" hardware toevoegen uit de lijst met hardware.

Bij het toevoegen van hardware wordt het overzicht van alle gedefinieerde hardware getoond. Hardware kan worden uitgeschakeld of verwijderd.

De nieuwe hardware zou in de lijst moeten staan en er zou een knop "Create Virtual Sensors" moeten zijn.

Klik op deze knop en kies Sensor Type "Alert". Nu moeten we het apparaat in Domoticz toevoegen om actief te worden.

Stap 8: Voeg het apparaat toe in Domoticz om actief te worden

Voeg het apparaat toe in Domoticz om actief te worden
Voeg het apparaat toe in Domoticz om actief te worden
Voeg het apparaat toe in Domoticz om actief te worden
Voeg het apparaat toe in Domoticz om actief te worden
Voeg het apparaat toe in Domoticz om actief te worden
Voeg het apparaat toe in Domoticz om actief te worden

Noteer het nummer onder "IDX". Dit is de unieke verwijzing naar dit apparaat en we hebben het later in ons Python-script nodig om de melding te adresseren. In dit geval is het IDX-nummer 1.

Schakel het apparaat in door op de groene pijl aan de linkerkant te klikken (op mijn onderstaande afbeelding is het blauw, omdat het apparaat is ingeschakeld).

Vul de naam van het apparaat in en klik op "toevoegen".

Navigeer naar het menu "Hulpprogramma's" en uw apparaat zou daar moeten worden vermeld.

Nu moeten we "event" voor onze sensor programmeren. Het betekent dat we de server moeten vertellen wat hij moet doen als hij een bericht van de sensor heeft gekregen. En het was, laten we zeggen, de moeilijkste plek voor mij:).

Stap 9: Het werkt niet op deze manier…

Het werkt niet op deze manier…
Het werkt niet op deze manier…

Ik begon door te proberen een gebeurtenis op de /device/-pagina te programmeren. Dit hieronder is niet van mij, maar het is goed om te illustreren.

Als u denkt dat u enkele selectievakjes aanvinkt en het zal werken, heeft u het mis:) Het werkt niet op deze manier. Ik veronderstel dat deze functie hier nog niet klaar is. Vergeet niet - het is open source software. Ok, na enkele uren vond ik de oplossing. We moeten "Evenementen" gebruiken in het vervolgkeuzemenu "Setup".

Nadat je op "Evenementen" hebt geklikt, kun je je eigen evenement maken. Je kunt het doen door een code in Python of LUA te schrijven, of gewoon door het ding "Blockly" te gebruiken. Ik heb ervoor gekozen om Blockly te gebruiken. Er zijn twee manieren om de server te dwingen te doen wat u wilt.

Stap 10: Bouw een evenement op een juiste manier op 1

Bouw evenement op een juiste manier 1
Bouw evenement op een juiste manier 1

1. Voer extern bestand uit via "Events", met behulp van Blockly-bericht "Start script"

Dit werkt voor mij perfect op een Windows-machine. Maar het is me op Raspbian op mijn Raspberry Pi niet gelukt. Ik vermoed dat er een probleem is met de rechten.

Stap 11: Bouw evenement op een juiste manier 2

Bouw evenement op een juiste manier 2
Bouw evenement op een juiste manier 2

2. Gebruik het bericht "Melding met onderwerp verzenden". Het werkt op Raspbian. Deze optie ondersteunt het verzenden van meldingen naar Pushsafe en Pushover.

Het voordeel van het gebruik van 1e manier is dat het flexibeler is. U kunt een pictogram kiezen dat op uw display moet worden weergegeven, geluiden enzovoort. Mijn "evenement" wordt getoond op de afbeelding hierboven.

Laten we vervolgens de ESP-module programmeren.

Stap 12: Programmeren ESP8266-01 Module

Programmeren ESP8266-01 Module
Programmeren ESP8266-01 Module

Laten we beginnen met het flashen van onze ESP8266-module. Normaal gesproken worden die modules geleverd met fabrieksfirmware. het is mogelijk om met modules te communiceren door middel van zogenaamde AT-commando's. En ook deze software staat het gebruik van modules zoals standalone controllers niet toe. Om ze als zelfstandige controllers te gebruiken, moeten we de fabrieksfirmware wissen en een nieuwe installeren.

Hiervoor gebruiken we esptool. Dan moeten we onze module op de pc aansluiten om de firmware te wissen. Hiervoor heeft u een TTL-converter + enkele extra componenten nodig. Maar er is een makkelijkere manier:). Koop gewoon op aliexpress of ebay USB naar ESP8266 ESP-01 Wi-Fi-adaptermodule met CH340G-stuurprogramma.

Steek de ESP8266-module in de TTL-converter zoals weergegeven op de afbeelding en sluit deze aan op de USB-poort.

Als je dezelfde converter hebt als ik, dan moet je de schakelaar zelf in de "Prog"-stand zetten. Zoek waar esptool is geïnstalleerd (normaal gesproken ergens zoals C:\Program Files (x86)\Python36-32\Scripts. Ga naar deze map, start de opdrachtprompt daar. Typ: python esptool.exe --port COM5 erase_flash

Kies natuurlijk de juiste poort. In mijn geval is dat COM5. U kunt de poort waarop ESP is geïnstalleerd controleren via Configuratiescherm - Systeem - Apparaatbeheer.

Installeer firmware (ik heb het hier vandaan: https://micropython.org/download#esp8266) door te typen:

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

Ok, nu zijn we klaar om de micropython-scripts te uploaden naar ESP8266.

Ik gebruik hiervoor Adafruit MicroPython Tool (ampy).

Maar tegenwoordig is er een andere optie genaamd Esplorer. Dit is een app met gebruikersinterface waarmee bestanden naar ESP-modules kunnen worden geüpload.

Instructies voor het installeren van Ampy vind je hier. Zet dus de schakelaar op de TTL-converter in de stand "UART". We moeten bestanden uploaden:

  • wifimgr.py - wifi-manager om verbinding te maken met wifi-netwerk
  • main.py - ons hoofdscript

Typ in de opdrachtregel: ampy --port COM5 zet C:\pad naar uw bestand

Druk op "invoeren". Na een paar seconden zou u een lege opdrachtregel moeten zien. Het betekent dat het bestand is geüpload. U kunt de lijst met bestanden op ESP controleren met het ampy-commando:

ampy --poort COM5 ls

Uit mijn ervaring is het beter om main.py te uploaden nadat je alle benodigde bestanden hebt geüpload. het is zo, want zodra u main.py uploadt, zal de ESP8266-module opnieuw opstarten en het main.py-bestand uitvoeren. Dus als u in dit geval een ander bestand probeert te uploaden, zal het uploadproces soms mislukken. Maar het betekent niet dat alles verloren is:), probeer het gewoon een tweede keer, en je zult slagen (alweer, uit mijn ervaring).

Alle bestanden voor dit project zijn hier beschikbaar:

Stap 13: Maak verbinding met uw wifi-netwerk. Melding krijgen

Maak verbinding met uw wifi-netwerk. Melding krijgen
Maak verbinding met uw wifi-netwerk. Melding krijgen
Maak verbinding met uw wifi-netwerk. Melding krijgen
Maak verbinding met uw wifi-netwerk. Melding krijgen

als alles in orde is, start u de module opnieuw op door de TTL-converter opnieuw in de USB-poort van uw pc te plaatsen.

Nadat ESP is gestart, zoekt u een nieuw WiFi-netwerk met de naam "Wifimanager". Maak er verbinding mee met je pc of telefoon, ga dan naar IP-adres 192.168.4.1.. Hier kun je je ESP verbinden met het lokale wifi-netwerk. Kies het wifi-netwerk dat u gaat gebruiken, typ het wachtwoord in en klik op "Verzenden".

Als alles correct is, ziet u het bericht " ESP succesvol verbonden met XXXX-netwerk". Je ESP is nu verbonden met je wifi-netwerk en klaar. Zodra het verbinding heeft met wifi, maakt het verbinding met de Domoticz-server. Shorty moet je een melding op je mobiele telefoon ontvangen.

U kunt het proces volgen in "Setup"/"Log".

Vaarwel!:) Het werkt. Nu kunnen we overgaan tot het in elkaar zetten van alle onderdelen, volgens onderstaand blokschema.

Stap 14: Blokschema

Blokdiagram
Blokdiagram

Er valt niet zo veel te zeggen over dit diagram. Erg makkelijk. Schakel de stroom met S1-schakelaar. Het apparaat staat in de uit-stand totdat water de "Watersensor"-pinnen kortsluit. Dan gaat "Pololu board" aan, en geeft stroom aan de spanningsomvormer. Deze voedingsmodule op basis van de HT7333-chip zet de spanning om in stabiele 3,3 V voor ESP8266. Vervolgens schakelt ESP in en stuurt een bericht naar de Domoticz-server.

Stap 15: Resultaat en conclusies

Resultaat en conclusies
Resultaat en conclusies
Resultaat en conclusies
Resultaat en conclusies
Resultaat en conclusies
Resultaat en conclusies
Resultaat en conclusies
Resultaat en conclusies

Het werkt. Het verzenden van een melding duurde maximaal 10 seconden: verbinding met wifi, melding verzenden, alarmmelding op uw telefoon ontvangen.

Ik heb de sensor geprogrammeerd om elke 30 seconden een alarm te sturen als er water wordt gedetecteerd. De sensor kan tot 5 - 6 meldingen verzenden totdat de batterij leeg is. Een dergelijk apparaat kan ook worden gebruikt om het waterniveau te bepalen. Wat ik zou willen verbeteren.

1. Om het sneller te laten werken. Ik denk dat ik ESP-Now-technologie ga gebruiken, waarmee ik meerdere ESP's rechtstreeks kan aansluiten. In dit geval is het stroomverbruik tijdens de verbinding erg laag en is het sneller. Het idee is dus om één ESP te gebruiken als een hub voor het aansluiten van andere ESP's.

2. Implementeer een batterijniveau-alarm. Nu kun je niet weten of er genoeg stroom is om een alarmbericht te verzenden of niet. Ik denk dat er in de volgende generatie van deze sensor een speciale knop zal zijn om de batterijlading te testen.

De gebruiker moet op een knop drukken en het batterijniveau wordt weergegeven.