INHOUDSOPGAWE:

Waterleksensor op ESP8266 + Micropython + Domoticz: 16 stappe (met foto's)
Waterleksensor op ESP8266 + Micropython + Domoticz: 16 stappe (met foto's)

Video: Waterleksensor op ESP8266 + Micropython + Domoticz: 16 stappe (met foto's)

Video: Waterleksensor op ESP8266 + Micropython + Domoticz: 16 stappe (met foto's)
Video: Ajax WaterStop: op afstand controleerbare elektrische watertoevoerafsluitingsklep 2024, November
Anonim
Waterleksensor op ESP8266 + Micropython + Domoticz
Waterleksensor op ESP8266 + Micropython + Domoticz
Waterleksensor op ESP8266 + Micropython + Domoticz
Waterleksensor op ESP8266 + Micropython + Domoticz

'N Tyd gelede het my vrou my gevra om 'n waterleksensor te maak. Sy was bang dat die slang in die ketelkamer lek, en die water die nuwe houtvloer sou oorstroom. En ek as 'n ware ingenieur het so 'n sensor onderneem om te doen.

Uit my 15 jaar ervaring as mediese ingenieur, weet ek dat metaalspelde die maklikste is om water op te spoor. Die beginsel van werking van die eenvoudigste sensors is dat water twee (of meer) metaalpenne moet kortmaak, en sodra dit gebeur, word alarm geaktiveer.

Stap 1: Hardeware

Hardeware
Hardeware

Vir hierdie projek benodig ons:

1. ESP8266 - 01 module

2. HT7333 3.3V MS Lae uitval lineêre regulator Kragtoevoer modu

Ons benodig hierdie module om die spanning van die battery na die aanvaarbare vlak vir ESP8266 te verminder. Volgens die datablad moet daar 3V tot 3.6V ingang wees. Hierdie module gee ons 3.3V.

3. Battery. Ek gebruik 'n 3, 7V Li-ion 400mAh battery. U kan eintlik enige ander geskikte kragbron gebruik. 18650 battery is ook 'n goeie keuse. As u 'n battery kies, moet u in gedagte hou dat ESP ongeveer 200mA "eet" tydens die verbinding met die WiFi -netwerk, en dat ongeveer 60mA gebruik word wanneer die bord data na die bediener oplaai.

4. TP4056 Lipo battery laai bord.

5. Pololu mini -drukknop -kragskakelaar Baie interessante klein bord. Dit laat ons slegs die ESP -module oorskakel as daar water opgespoor word. U hoef nie ESP AAN te hou nie. Dit is dus goed om die lading van die battery te bespaar.

6. Behuising7. Dubbele mikroskakelaar AAN-UIT. Een lyn dien om die toestel aan te skakel. Die tweede reël is om te toets - dit is 'n kortsluiting sonder water, net om te laat weet dat die toestel werk of nie.

8. Framboos Pi mikro rekenaar

Ek gebruik Raspberry Pi Zero. Dit is kragtig genoeg om die Domoticz -bediener te bestuur.

Stap 2: sagteware

Op jou rekenaar:

1. esptool geïnstalleer, vir die uitvee van modules en flitsende firmware

2. Ampy geïnstalleer, om u program te flits

3 Python 3.6 of hoër word aanbeveel

4. Enige kode redakteur wat jy wil. Eenvoudigste - Python IDLE wat normaalweg met Python geïnstalleer word. Ek gebruik Pycharm / Atom of Anaconda Spyder op framboos Pi

5. Domoticz -bediener geïnstalleer op Raspberry Pi (of gewone rekenaar onder Windows of Linux)

Stap 3: Berei Raspberry Pi voor - installeer Domoticz

Neem dus u RPi en installeer die bedryfstelsel wat geskik is vir die bestuur van die Domoticz -bediener.

U kan hierdie instruksies volg.

Ek gebruik Raspbian Stretch met Desktop vanaf hier:

Die volgende stap is om die Domoticz -bediener op u rekenaar te installeer. U kan hier of hier instruksies gebruik:). Moenie bang wees nie, dit is nie so moeilik nie. Uiteraard moet u in u terminale werk:

krul -L install.domoticz.com | sudo bash

En dit is dit:) min of meer. Opstelling van Domoticz

Noudat ons bediener gereed is, kan ons toegang verkry vanaf elke webblaaier, insluitend vanaf 'n tablet, deur die volgende URL in te voer: https:// IP_domoticz: 8080

Stap 4: Domoticz -opstelling

Opstelling van Domoticz
Opstelling van Domoticz

Noudat ons bediener gereed is, kan ons toegang verkry vanaf elke webblaaier, insluitend vanaf 'n tablet, deur die volgende URL in te voer: https:// IP_domoticz: 8080

Stap 5: Pas die programinstellings aan

Pas die programinstellings aan
Pas die programinstellings aan
Pas die programinstellings aan
Pas die programinstellings aan

Daar is verskillende toepassingsinstellings wat deur die opstelling | Instellings kieslys.

Met die instellingsmenu met verskillende oortjies kan u persoonlike parameters invoer wat nodig is vir 'n beter funksionering van die stelsel. Nadat u data in die velde ingevoer het, moet u dit stoor deur op die rooi knoppie "Instellings toe te pas" te druk. Na hierdie aksie sal alle wagwoordvelde, wat leeg was by die eerste toegang, met 'n lang string sterre verskyn, selfs al is dit nie gebruik nie.

Nadat u die hoofopstelling op die "Stelsel" -bladsy gemaak het, klik op "Kennisgewings". Hier moet ons aanpas watter soort kennisgewings ons gaan gebruik.

Stap 6: Stel kennisgewings op

Stel kennisgewings op
Stel kennisgewings op

Kennisgewings kan gestuur word, byvoorbeeld as 'n skakelaar gedruk word, die elektrisiteitsverbruik te hoog is, die temperatuur te hoog en vir nog vele meer opsies.

In ons geval moet kennisgewings gestuur word sodra water deur die sensor bespeur is. Skakel dus net die aan wat u wil gebruik. Normaalweg het u ook 'n API -sleutel nodig om kennisgewings te laat werk. As ek 'n bietjie vorentoe hardloop, sal ek sê dat ek Pushover, Pushsafer en Pushbullet probeer het. En ek het by Pushover gebly. Ek sal later vertel hoekom.

Paar woorde oor hoe kennisgewings werk. U moet 'n rekening hê op Pushbullet, Pushover of ander bladsye wat u wil gebruik. U benodig ook 'n app op u selfoon of rekenaar.

Kry 'n API -sleutel en plaas dit op die bladsy hierbo. U kan die kennisgewing toets deur op "Toets" te klik. As die API -sleutel korrek is, moet u 'n toetsberig op u selfoon kry.

Sodra die sensor water voel, skakel ESP aan en stuur die versoek na die Domoticz -bediener in JSON -formaat. As die voorwaardes vir die aanvang van 'n gebeurtenis (stuur kennisgewing na u selfoon) voldoen, stuur Domoticz die kennisgewing.

Later kom ek terug na “events”.

Stap 7: Stel die kommunikasie op hardeware -toestelle op

Stel die kommunikasie op hardeware -toestelle op
Stel die kommunikasie op hardeware -toestelle op
Stel die kommunikasie op hardeware -toestelle op
Stel die kommunikasie op hardeware -toestelle op
Stel die kommunikasie op hardeware -toestelle op
Stel die kommunikasie op hardeware -toestelle op

Voordat u die Domoticz -toepassing kan gebruik om toestelle te beheer of sensors te lees, moet u die kommunikasie op hardeware (s) instel. Kies Setup | Hardware om hardeware by te voeg. Toestelle verskyn eers as die toepaslike hardeware bygevoeg is.

Die Domoticz -toepassing ondersteun baie hardeware -toestelle inheems. In ons geval om ons vloedsensor te lees, moet ons die sogenaamde "Dummy" hardeware byvoeg uit die lys hardeware.

As hardeware bygevoeg word, word die oorsig van alle gedefinieerde hardeware gewys. Hardeware kan gedeaktiveer of verwyder word.

Die nuwe hardeware moet in die lys verskyn en daar moet 'n knoppie wees "Skep virtuele sensors".

Klik op hierdie knoppie en kies Sensortipe "Alert". Nou moet ons die toestel in Domoticz byvoeg om aktief te word.

Stap 8: Voeg die toestel in Domoticz by om aktief te word

Voeg die toestel in Domoticz by om aktief te word
Voeg die toestel in Domoticz by om aktief te word
Voeg die toestel in Domoticz by om aktief te word
Voeg die toestel in Domoticz by om aktief te word
Voeg die toestel in Domoticz by om aktief te word
Voeg die toestel in Domoticz by om aktief te word

Let asseblief op die nommer onder "IDX". Dit is die unieke verwysing na hierdie toestel, en ons benodig dit later in ons Python -script om kennisgewings aan te spreek. In hierdie geval is die IDX -nommer 1.

Aktiveer die toestel deur op die groen pyltjie aan die linkerkant te klik (op my prentjie hieronder is dit blou as gevolg van die ingeskakel toestel).

Vul die naam van die toestel in en klik op "add".

Gaan na die menu "Hulpprogramme" en u toestel moet daar verskyn.

Nou moet ons 'gebeurtenis' vir ons sensor programmeer. Dit beteken dat ons aan die bediener moet vertel wat hy moet doen as die sensor 'n boodskap ontvang het. En dit was die moeilikste plek vir my:).

Stap 9: Dit werk nie op hierdie manier nie …

Dit werk nie so nie …
Dit werk nie so nie …

Ek het begin deur die geleentheid op die / device / page te probeer programmeer. Dit hieronder is nie myne nie, maar dit is goed om dit te illustreer.

As u glo dat u 'n paar blokkies sal merk en dit sal werk, is u verkeerd:) Dit werk nie op hierdie manier nie. Ek veronderstel dat hierdie funksie hier nog nie klaar is nie. Moenie vergeet nie - dit is 'n open source sagteware, en ek het na 'n paar uur die oplossing gevind. Ons moet 'Gebeurtenisse' in die keuselys 'Opstel' gebruik.

Nadat u op "Events" geklik het, kan u u eie geleentheid skep. U kan dit doen deur 'n kode in Python of LUA te skryf, of net deur 'Blockly' te gebruik. Ek het besluit om Blockly te gebruik. Daar is twee maniere om die bediener te dwing om te doen wat u wil.

Stap 10: Bou 'n geleentheid op die regte manier 1

Bou 'n geleentheid op die regte manier 1
Bou 'n geleentheid op die regte manier 1

1. Voer eksterne lêer uit via "Events" deur die Blockly -boodskap "Start script" te gebruik

Dit werk perfek vir my op Windows -masjien. Maar ek het dit nie reggekry op Raspbian op my Raspberry Pi nie. Ek vermoed dat daar 'n probleem met toestemmings is.

Stap 11: Bou 'n geleentheid op die regte manier 2

Bou 'n geleentheid op 'n regte manier 2
Bou 'n geleentheid op 'n regte manier 2

2. Gebruik die boodskap "Stuur kennisgewing met onderwerp". Dit werk op Raspbian. Hierdie opsie ondersteun kennisgewings na Pushsafe en Pushover.

Die voordeel van die eerste manier is dat dit meer buigsaam is. U kan die ikoon kies wat op u skerm, klanke ensovoorts vertoon moet word. My 'gebeurtenis' word op die foto hierbo getoon.

Laat ons dan die ESP -module programmeer.

Stap 12: Programmering van ESP8266-01-module

Programmeer ESP8266-01-module
Programmeer ESP8266-01-module

Kom ons begin met die flits van ons ESP8266 -module. Normaalweg kom die modules met fabrieks firmware. dit is moontlik om met modules te kommunikeer deur die sogenaamde AT -opdragte te gebruik. En hierdie sagteware laat nie modules soos selfstandige beheerders toe nie. Om dit soos selfstandige beheerders te gebruik, moet ons die fabrieksfirmware uitvee en 'n nuwe een installeer.

Om dit te doen, gebruik ons esptool. Dan moet ons ons module aan 'n rekenaar koppel om die firmware uit te vee. Hiervoor benodig u 'n TTL -omskakelaar + 'n paar ekstra komponente. Maar daar is 'n makliker manier:). Koop net op AliExpress of ebay USB na ESP8266 ESP-01 Wi-Fi-adaptermodule met CH340G-bestuurder.

Koppel die ESP8266 -module in die TTL -omskakelaar soos op die foto, en koppel dit aan die USB -poort.

As u dieselfde omskakelaar as ek het, moet u op sigself die skakelaar na die "Prog" -posisie verander. Vind waar esptool geïnstalleer is (gewoonlik êrens soos C: / Program Files (x86) Python36-32 / Scripts. Gaan na hierdie gids, begin die opdragprompt daar. Tipe: python esptool.exe --port COM5 erase_flash

Kies natuurlik die regte poort. In my geval is dit COM5. U kan die poort waar ESP geïnstalleer is, kontroleer vanaf die bedieningspaneel - stelsel - apparaatbestuurder.

Installeer firmware (ek het dit hiervandaan geneem: https://micropython.org/download#esp8266) deur te tik:

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

Ok, nou is ons gereed om die mikropython -skrifte na ESP8266 op te laai.

Ek gebruik hiervoor Adafruit MicroPython Tool (ampy).

Maar deesdae is daar 'n ander opsie genaamd Esplorer. Dit is 'n app met 'n gebruikerskoppelvlak, waarmee u lêers na ESP -modules kan oplaai.

U kan hier instruksies vind oor hoe om ampy te installeer. Plaas dus die skakelaar op die TTL -omskakelaar in die posisie "UART". Ons sal lêers moet oplaai:

  • wifimgr.py - wifi -bestuurder vir verbinding met wifi -netwerk
  • main.py - ons hoofskrif

Tik in die opdragreël: ampy --port COM5, plaas C: / pad na u lêer

Klik op "enter". Na 'n paar sekondes moet u die leë opdragreël sien. Dit beteken dat die lêer opgelaai is. U kan die lys met lêers op ESP na die ampy -opdrag kyk:

ampy --port COM5 ls

Uit my ervaring is dit beter om main.py op te laai nadat u alle nodige lêers opgelaai het. dit is so, want sodra u die main.py oplaai, sal die ESP8266 -module herlaai en die hoof.py -lêer begin uitvoer. As u in hierdie geval 'n ander lêer probeer oplaai, sal die oplaai proses soms misluk. Maar dit beteken nie dat alles verlore is nie:), probeer net 'n tweede keer, en u sal slaag (weer uit my ervaring).

Alle lêers vir hierdie projek is hiervandaan beskikbaar:

Stap 13: Koppel aan u WiFi -netwerk. Kry kennisgewing

Koppel aan u WiFi -netwerk. Kry kennisgewing
Koppel aan u WiFi -netwerk. Kry kennisgewing
Koppel aan u WiFi -netwerk. Kry kennisgewing
Koppel aan u WiFi -netwerk. Kry kennisgewing

As alles reg is, herlaai die module deur die TTL -omskakelaar weer in die USB -poort van u rekenaar te plaas.

Nadat ESP begin het, soek 'n nuwe WiFi -netwerk genaamd "Wifimanager". Verbind dit met u rekenaar of telefoon, en gaan dan na die IP -adres 192.168.4.1.. Hier kan u u ESP aan die plaaslike WiFi -netwerk koppel. Kies die WiFi -netwerk wat u gaan gebruik, tik die wagwoord in en klik op "Submit".

As alles korrek is, sal u die boodskap "ESP suksesvol gekoppel aan XXXX -netwerk" sien. U ESP is nou aan u WiFi -netwerk gekoppel en gereed. Sodra dit aan WiFi gekoppel is, sal dit aan die Domoticz -bediener koppel. Shorty, u moet 'n kennisgewing op u selfoon ontvang.

U kan die proses in "Setup"/"Log" volg.

Vua lia!:) Dit werk. Nou kan ons voortgaan met die samestelling van alle dele volgens die blokdiagram hieronder.

Stap 14: Blokdiagram

Blokdiagram
Blokdiagram

Daar is nie veel te sê oor hierdie diagram nie. Baie eenvoudig. Skakel die krag met die S1 -skakelaar. Die toestel staan in 'n toestand totdat die water 'watersensor' penne kortgooi. Dan skakel "Pololu -bord" aan en gee die spanningskonverter krag. Hierdie kragmodule gebaseer op HT7333 -chip, skakel spanning om na stabiele 3.3V vir ESP8266. Volgende skakel ESP aan en stuur 'n boodskap na die Domoticz -bediener.

Stap 15: Resultaat en gevolgtrekkings

Uitslag en gevolgtrekkings
Uitslag en gevolgtrekkings
Uitslag en gevolgtrekkings
Uitslag en gevolgtrekkings
Uitslag en gevolgtrekkings
Uitslag en gevolgtrekkings
Uitslag en gevolgtrekkings
Uitslag en gevolgtrekkings

Dit werk. Die stuur van kennisgewing het tot 10 sekondes geneem: verbinding met WiFi, kennisgewing stuur, alarmboodskap na u telefoon kry.

Ek het die sensor geprogrammeer om elke 30 sekondes alarm te stuur as daar water opgemerk word. Die sensor kan tot 5 - 6 kennisgewings stuur totdat die battery leeg is. So 'n toestel kan ook gebruik word om die watervlak te bepaal. Wat ek graag wil verbeter.

1. Om dit vinniger te laat werk. Ek dink ek sal probeer om ESP-Now-tegnologie te gebruik, waarmee ek verskeie ESP's direk kan koppel. In hierdie geval is die kragverbruik tydens die aansluiting baie laag en dit is vinniger. Die idee is dus om een ESP soos 'n hub te gebruik om ander ESP's aan te sluit.

2. Implementeer batteryniveau alarm. Nou kan u nie weet of daar genoeg krag is om 'n alarmboodskap te stuur of nie. Ek dink in die volgende generasie van hierdie sensor sal daar 'n spesiale knoppie wees om die laai van die batterye te toets.

Die gebruiker sal 'n knoppie moet druk, en die batteryniveau sal verskyn.

Aanbeveel: