Cov txheej txheem:

MQTT thiab Wifi txhawb nqa lub npov xa ntawv chij: 7 Kauj Ruam (nrog Duab)
MQTT thiab Wifi txhawb nqa lub npov xa ntawv chij: 7 Kauj Ruam (nrog Duab)

Video: MQTT thiab Wifi txhawb nqa lub npov xa ntawv chij: 7 Kauj Ruam (nrog Duab)

Video: MQTT thiab Wifi txhawb nqa lub npov xa ntawv chij: 7 Kauj Ruam (nrog Duab)
Video: MQTT (Mosquitto) Протокол | Теория 2024, Hlis ntuj nqeg
Anonim
MQTT thiab Wifi Txhawb Kev Xa Ntawv Xa Ntawv Chij
MQTT thiab Wifi Txhawb Kev Xa Ntawv Xa Ntawv Chij

Nco tseg: hloov kho tshiab nrog firmware tshiab, cov txheej txheem thiab cov lus qhia rau tus programmer

Ob peb xyoos kuv tau pib ntawm kuv tus kheej lub tsev tsim kho qhov project. Nws pib tawm los ntawm kev tsim cov neeg rau zaub mov tswj hwm 433 MHz tus xa khoom tsim nrog Arduino los hloov ntau qhov pheej yig PT2262 raws cov chaw taws teeb. Tom qab ntawd kuv ntxiv Arduino raws tus txais rau kuv lub chaw nres tsheb huab cua, sib txuas kev tswj hwm ntawm kuv lub EV them nyiaj, thiab lwm yam. Tej yam loj tuaj ntxiv thiab sib cuam tshuam ntau dua (thiab nyuaj!). Yog li, ob peb hlis dhau los Kuv txiav txim siab ua tus qauv txhua yam raws li MQTT rau kev xa xov, Node-RED rau kev siv tshuab (ob qho tib si khiav ntawm ib qho Raspberry Pi B+) thiab MariaDb rau kev txiav (khiav ntawm kuv Synology NAS). Tom qab ntawd kuv tau tsiv MQTT broker (Mosquitto) thiab Node-RED hla mus rau NAS ib yam nkaus..

Cov lus qhia no piav qhia qhov ua dag rau kev lom zem ua rau kuv txoj kev teeb tsa lub npov xa ntawv hauv lub tsev no. Lub tswv yim yog tias yog leej twg qhib lub laj kab teeb tsa lub mailbox txog 10 meters los ntawm lub qhov rooj, nws qhia kuv ntawm kuv lub xov tooj thiab tej zaum lwm yam khoom siv.

Kauj Ruam 1: Cov ntsiab lus, Yam yuav tsum tau ua ua ntej thiab ntu

Tus qauv

Nyob rau qib siab, lub thawv xa ntawv yuav tsum, thaum qhib, xa cov lus tshwj xeeb MQTT rau tus tswv lag luam, yog li cov neeg rau npe rau lub ncauj lus ntawd yuav raug ceeb toom. Node-RED sau npe ib yam nkaus thiab ua qee qhov kev siv tshuab, qhov no xa email thiab/lossis xa xov mus rau kuv lub xov tooj.

Lub thawv ntawv yuav tsum siv roj teeb thiab khiav tsawg kawg ib xyoos, thiab yuav tsum ua li ntawd siv kuv li WiFi network. Raws li kev tsim lub micro-maub los thiab txuas rau WiFi network tuaj yeem siv sijhawm ob peb feeb, Kuv tsis tuaj yeem siv lub tshuab qhib kom txiav lub zog. Hloov chaw, tus txheej txheem yuav tsum tau tso cai kom ua tiav nws txoj kev lag luam tom qab lub hau ntawm lub thawv xa ntawv twb tau kaw lawm.

Prerequistites

Kuv xav tias koj muaj kev txawj ntse me me, tau ua haujlwm nrog Arduino IDE me ntsis, thiab tau teeb tsa ESP8266 cov laug cam siv Tus Thawj Tswj Tswj. Koj kuj yuav tsum muaj 3.3 volt USB Serial adapter los teeb tsa lub micro-controller.

Kuv kuj xav tias koj muaj MQTT broker thiab Node-RED server khiav. Yog tias tsis yog, muaj ntau cov lus qhia hauv Is Taws Nem, tab sis kuv yuav qhia kom coj txoj hauv kev tub nkeeg thiab siv Peter Scargill cov ntawv txhim kho zoo yog tias koj xav khiav qhov no ntawm ib qho Pi lossis Ubuntu, lossis siv Andreas Spiess cov duab rau Pi Zero W (txuas hauv cov lus piav qhia ntawm daim vis dis aus), uas yuav cawm koj ob peb teev ntawm kev saib cov ntawv teeb tsa khiav. Xwb, koj tuaj yeem ua rau lub khoos phis tawj xa email ncaj qha, tab sis koj yuav xoob ntau qhov yooj yim ua li ntawd.

Qhov

  • 1 kaw, 3 AA roj teeb lub thawv
  • 2 AA roj teeb
  • 1 ESP8266 tus qauv. Rau qhov haujlwm no kuv siv ESP-01
  • 1 micro hloov
  • 1 47K resistor
  • 1 4M7 resistor
  • 1 2.2 uF capacitor
  • 1 lub raj yas yas. Kuv siv tus cwj mem
  • 1 tuab, ntev phim lossis lollipop stick. Nws yuav tsum yooj yim haum thiab txav mus rau hauv lub raj yas

Kauj Ruam 2: Kho vajtse: Lub thawv, Hloov thiab thaiv

Kho vajtse: Lub thawv, Hloov thiab thaiv
Kho vajtse: Lub thawv, Hloov thiab thaiv
Kho vajtse: Lub thawv, Hloov thiab thaiv
Kho vajtse: Lub thawv, Hloov thiab thaiv
Kho vajtse: Lub thawv, Hloov thiab thaiv
Kho vajtse: Lub thawv, Hloov thiab thaiv

Kuv pib nrog lub thawv roj teeb qub los ntawm qhov tsis zoo nkauj Christmas kho kom zoo nkauj. Nws tau tsim los rau peb lub roj teeb AA loj. Raws li ESP8266 yuav ua haujlwm zoo ntawm 3 volt, Kuv tuaj yeem siv ob lub roj teeb thiab siv txoj haujlwm thib peb rau lub micro-maub los. Daim ntawv ceeb toom yuav ua li cas lub thawv muaj qhov me me ntxiv uas kuv tuaj yeem siv rau kev hloov pauv. Kuv siv hom kev hloov pauv uas pom hauv cov duab, tab sis tshem lub caij nplooj ntoo hlav uas kaw nws hauv qhov chaw lossis tawm txoj haujlwm. Kuv tau siv ob txoj kab xaim me me rau NC cov neeg sib cuag thiab muab nws tso rau hauv lub thawv nrog me me ntawm cov kua nplaum super.

Tom ntej no, Kuv drilled lub qhov nyob rau sab saum toj npog nrog lub raj yas nqa los ntawm lub pob cwj mem. Lub qhov kab ncaj nraim nrog qhov hloov pauv thiab taw qhia lub plunger ua los ntawm cov tuab sib dhos.

Thaum kawg, Kuv tau muab ob lub xov hlau txuas rau lub roj teeb sib txuas thiab coj tag nrho plaub lub xov hlau mus rau txoj haujlwm ntawm lub roj teeb thib peb, qhov twg yog lub micro-controller yuav mus.

Kauj Ruam 3: Kho vajtse: ESP-01

Kho vajtse: ESP-01
Kho vajtse: ESP-01
Kho vajtse: ESP-01
Kho vajtse: ESP-01
Kho vajtse: ESP-01
Kho vajtse: ESP-01

Muab qhov xav tau WiFi, tag nrho txoj haujlwm qw ESP8266. Tus tswj hwm WiFi me me no tau dhau los ua tus nyiam ua haujlwm ntawm lub zej zog tinkering raws li tus qauv uas yuav tau yuav hauv qab EUR 2.50 thiab koom ua ke tag nrho WiFi thiab TCP/IP pawg, nrog ntau dua qhov muaj peev xwm txaus los khiav koj tus kheej cov haujlwm. Arduino IDE (lossis Atom nrog PlatformIO plugin) txhawb nqa ESP8266.

Kuv feem ntau yuav siv ESP-12F, tab sis kuv muaj lub rooj tsav xwm me me ESP-01 tso ncig uas zoo rau txoj haujlwm thiab haum zoo hauv lub thawv roj teeb. Qhov teeb meem tsuas yog qhov ntawd yog qhov nyuaj heev rau nyem firmware hauv ESP-01. Xav paub ntau ntxiv hauv cov kauj ruam tom ntej. Muaj ib qho kev hloov pauv los ua: Koj yuav tsum tshem lub hwj chim liab LED los ntawm pawg thawj coj, vim nws txuas ntxiv thim 3mA. Nrog lub LED tshem tawm, tus qauv siv tsuas yog ob peb kaum ntawm uA hauv hom pw tsaug zog uas yuav ua rau nws nyob ntev dua ib xyoos ntawm ob lub roj teeb AA zoo.

Nws hloov tawm tias kuv tuaj yeem siv ob daim kab xev ntawm 4 tus poj niam lub taub hau thiab cov laug ntawm ob peb yam ntxiv hauv daim ntawv dawb yog li kuv tuaj yeem tshem ESP-01 hloov kho lub firmware, thaum nws tseem yuav haum rau hauv lub roj teeb thib peb.

Nws yog ib qho tseem ceeb heev kom raug xov tooj ESP. Siv daim ntawv cheat saum toj no, xaim nws raws li hauv qab no.

  1. Roj teeb ntxiv rau Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) thiab 47K resistor.
  2. Roj teeb rho tawm rau GND (A1) thiab ib lub xaim ntawm qhov hloov.
  3. Lwm cov xaim ntawm qhov hloov mus rau 100nF lub capacitor thiab 4M7 resistor.
  4. Qhib qhov kawg ntawm ob lub resistors thiab lub capacitor rau RST (C2).
  5. TXD (A2) tuaj yeem txuas tsis tau.

Kho kom raug: Kuv yuav tsum tau hloov ESP-01 vim tias kuv tau ua yuam kev ua dag thiab rhuav tshem nws. Hloov tawm qhov ntawd rau kuv xav tsis thoob ESP-01 tshiab tsis tau rov pib dua nrog thawj 100nF capacitor. Tej zaum nws muaj qhov sib txawv me ntsis tsim. Kuv hloov nws nrog 2.2 uF ib qho thiab tam sim no nws ua haujlwm dua

Thaum ua tiav, txhua yam tuaj yeem teeb tsa hauv lub thawv, tab sis tuav, thawj zaug peb yuav tsum tau teeb tsa tus qauv.

Kauj Ruam 4: Ua Haujlwm ESP-01

Kev ua haujlwm ESP-01
Kev ua haujlwm ESP-01
Kev ua haujlwm ESP-01
Kev ua haujlwm ESP-01
Kev ua haujlwm ESP-01
Kev ua haujlwm ESP-01

Txhawm rau teeb tsa lub khoos phis tawj ntawm koj li ESP-01, koj tuaj yeem tsim lub rig me me lossis yuav (yuav luag) ua tiav programmer txog li 1 euro.

Khoos phis tawj hardware rig

Tsim lub rig me me nrog dua ob tus poj niam lub taub hau rau ESP-01. Tsis tas li, koj xav tau USB Serial module, muaj peev xwm muab 3.3 volt. Nco ntsoov tias ESP8266 nti tsis yog 5 volt tawv, yog li qhov yuam kev ntawm no tuaj yeem tua koj tus qauv. Xijpeem, rov siv daim ntawv dag, xaim koj rig raws li hauv qab no:

  1. 3.3V los ntawm USBSerial module rau Vcc, CH_PD, RST thiab GPIO2.
  2. GND ntawm USBSerial module rau GND thiab GPIO0.
  3. TXD ntawm USBSerial module rau RXD.
  4. RDX ntawm USBSerial module rau TXD.

Ua ntej tsim tus programmer

Kev lom zem raws li nws yog los tsim koj tus kheej cov khoom, txoj kev lazier yog kom tau txais ESP-01-to-serial interface los ntawm qhov koj nyiam qhov chaw muag khoom, saib daim duab saum toj no. Qhov no yooj yim dua, ntau dua kev cog lus thiab ntseeg tau ntau dua li lub rig. Txawm li cas los xij, qee qhov no tsis yog tus tsim qauv, tsuas yog cuam tshuam nrog ntu. Koj yuav tsum tau txuas tus hlau txuas ntawm GND (tus pin A1) thiab GPIO0 (tus pin C1) ntawm sab nraub qaum ntawm lub interface, saib daim duab thib ob. Nco ntsoov tias ESP-01 yuav tsum tau txuas nrog lub kav hlau txais xov tig rau USB ntsaws, tsis yog lwm txoj hauv kev!

Nco tseg: lawv kuj muaj nyob nrog hloov, saib daim duab thib peb, zoo heev.

Rub lub firmware

Piv txwv tias yog Arduino IDE ntawm 1.8.3 lossis tom qab, xaiv Cov Cuab Yeej> Pawg Thawj Coj thiab xaiv pawg thawj coj uas koj muaj. Rau ESP-01 zoo li kuv tau siv, xaiv "Generic ESP8266 Module", thiab teeb tsa cov kev xaiv hauv qab no (qhov no yuav tsum yog txhua qhov ua tsis raug):

  1. Flash hom: DIO
  2. Zaus Zaus: 40MHz
  3. CPU Zaus: 80MHz
  4. Flash loj: 512KB (64KB SPIFFS) Nco tseg: yog tias koj siv pawg ESP-01 dub, xaiv 1MB (64KB SPIFFS)
  5. Debug chaw nres nkoj: Xiam oob qhab
  6. Debug qib: Tsis muaj
  7. Rov pib dua txoj hauv kev: ck
  8. Upload ceev 115200
  9. Chaw nres nkoj: xaiv qhov chaw nres nkoj uas txuas nrog koj USB Serial interface. Rau kuv Ubuntu PC uas yog /dev /ttyUSB0

Nqa tus rig/programmer, thauj Sketch koj tuaj yeem pom ntawm no https://gitlab.com/jeroenmeijer/Mailbox.git. Muab koj li WiFi thiab MQTT tus peev txheej pov thawj thiab koj tus IP teeb tsa hauv config.h thiab xaiv Upload.

Kauj Ruam 5: Sib Sau Ua Ke

Sib Sau Ua Ke
Sib Sau Ua Ke

Kuv tau tho lub qhov rau lub raj yas hauv lub hau sab hauv ntawm kuv lub mailbox, ze rau ntawm pob khawm kom ntau li ntau tau, tom qab ntawd kub-nplaum lub roj teeb lub thawv rau hauv qab ntawm lub hau ntawd. Tom ntej no kuv siv cov tuab tuab ua lub plunger. Kuv siv rab riam los txiav qhov ntais ntawv kom ntev thiaj li yuav qhib tau yog tias lub hau sab nrauv raug kaw. Kuv txheeb xyuas kev sib txuas los ntawm kev qhib lub hau thaum khiav mosquitto_sub los saib xyuas MQTT cov lus (hloov mqttbroker, tus neeg siv thiab tus lej zais nrog koj MQTT teeb tsa):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u tus neeg siv -P lo lus zais

Kwv yees li rau thib ob tom qab lub hau sab nraud tau qhib cov lus hauv qab no MQTT tau tshaj tawm. Lub sijhawm siv los tsa tus tswj hwm micro thiab tsim kom muaj WiFi thiab tus tswv lag luam sib txuas.

stat/mailbox/trigger {"vcc": 3050, "nrov nrov": muaj tseeb, "ua ntej": 0, "RSSI": 29, "version": "005"}

Lub sijhawm no, tus tswj hwm micro siv kwv yees li 70mA. Thaum ua tiav, nws mus pw tsaug zog thiab hauv kuv qhov xwm txheej nws siv tsawg dua 20uA. "nrov nrov" yeej ib txwm muaj tseeb, "vcc" hais qhia lub roj teeb hluav taws xob hauv mV thiab "ua ntej" yuav tsum yog 0. Yog tias nws yog 1 lossis 2, nws txhais tau tias lub thawv xa ntawv tsis tuaj yeem xa xov ua ntej, txawm tias nws tsis tuaj yeem txuas rau WiFi, lossis vim tias nws tsis tuaj yeem txuas rau MQTT broker. "RSSI" yog lub zog ntawm WiFi teeb liab. Ob leeg yog qhov yooj yim los txheeb xyuas teeb meem.

Nws yog lub tswv yim zoo los saib xyuas lub roj teeb hluav taws xob ob peb hnub kom ntseeg tau tias lub cuab yeej ua haujlwm raws li lub hom phiaj thiab tsis tso nws lub roj teeb rau qee qhov laj thawj.

Lub khoos phis tawj tseem tuaj yeem hloov kho nws tus kheej hla huab cua (OTA), tab sis qhov ntawd me ntsis dhau qhov uas tau qhia no. Rau cov neeg txaus siab, OTA teeb tsa kuj tseem nyob hauv config.h.

Kauj Ruam 6: Siv Node-RED los ua ntawm MQTT Message

Siv Node-RED los ua ntawm MQTT Message
Siv Node-RED los ua ntawm MQTT Message

Thaum kawg, Kuv tsim qhov yooj yim ntws hauv Node-RED. Thawj ntawm cov npe koom nrog lub ncauj lus ntawm lub thawv ntawv xa ntawv (stat/postbox/trigger). Thaum tau txais cov lus, qhov thib ob ntawm tus qauv email *). Qhov kawg ntawm qhov xa nws mus rau kuv qhov chaw nyob gmail, siv gmail ua SMTP server. Kuv lub xov tooj yuav ceeb toom kuv txog kev xa ntawv tshiab.

Kuv tau ntxiv Node-RED ntws mus rau gitlab snippet yog li koj tuaj yeem ntsaws nws rau hauv koj Node-RED ntws.

Tau kawg koj tuaj yeem ntxiv qee qhov ntxiv, piv txwv li teev cov xwm txheej hauv lub thawv rau MariaDb lossis SqlLite, lossis tsim lub tswb ntxiv thaum lub roj teeb hluav taws xob qis dua 2.7 volts.

Zoo siab xa ntawv yos hav zoov!

*) Saib nplooj ntawv tom ntej, Kuv tab tom siv PushBullet tam sim no tsis siv email.

Kauj Ruam 7: Tom qab kev xav

Ib txwm muaj qhov kev xav no yam uas tuaj yeem ua tau zoo dua.

Hloov

Kuv yuav tau nyiam siv lub (super) hlau nplaum thiab kev sib cuag reed hloov qhov me ntsis clumsy plunger mus kom ze. Muaj ob qhov laj thawj. Ib qho yog, tsis muaj txoj hauv kev kuv tuaj yeem ua txoj haujlwm no nrog kev tiv toj kaw thaum lub thawv tau qhib, thiab muaj nws ib txwm kaw txhais tau tias cov dej me me ib txwm yuav ntws. Hauv kev rov qab saib dua, tsawg dua 1uA ntws los ntawm 4M7 tus tiv thaiv yuav tsis yog qhov teeb meem loj ntawm lub roj teeb lub neej. Lwm qhov yog qhov ua tau zoo dua. Kuv tau ua txoj haujlwm no rau hnub Saturday thiab sau cov software, tsim nws txhua hnub Sunday los ntawm qhov uas tau tso ib puag ncig. Kuv tsuas yog tsis muaj reed hu rau hauv lub thawv tsis zoo.

Nco tseg: raws li diy_bloke tau hais tawm, cov neeg sib txuas lus tau muaj lub siab nyiam kom nplaum thaum sib nqus tau ntev, yog li tej zaum lub plunger tsis zoo li lub tswv yim tsis zoo hlo li. Peb yuav pom. *)

Xov ntawm khoob

Lub thawv ntawv xa tawm cov lus thaum khoob nws ib yam nkaus. Qhov no tsis muaj teeb meem loj tab sis nrog ntau tus neeg nyob hauv tsev tau txais lus ceeb toom, ib tus tuaj yeem xaus rau hauv lub voj voos txheeb xyuas lub thawv xa ntawv tawm tsam nws lub hom phiaj tag nrho! Muaj ob peb txoj hauv kev nyob ib puag ncig qhov no, xws li kuaj xyuas yog tias lub hau sab hauv raug tshem tawm, thiab yog li, tsis txhob xa xov. Lossis tsis txhob siv lub hau hloov, teeb tsa lub ntsuas nyob hauv qab ntawm lub thawv ntawv xa ntawv. Lossis khawm rov pib dua me me kom raug nias thaum khoob nws. Txawm li cas los xij, txhua yam yuav ua rau cov khoom nyuaj thiab tej zaum yuav ua rau muaj kev ntseeg tsis zoo.

Kev xa xov

Kev xa email yog qhov muaj txiaj ntsig zoo tab sis txoj hauv kev tsis zoo ntawm kev ceeb toom. Ib txoj hauv kev zoo dua yuav yog lub xov tooj app, tab sis kuv tsis tau pom Android MQTT dashboard app uas tuaj yeem teeb tsa los ua kom lub kaw lus ua haujlwm ceeb toom thaum tau txais qee cov lus. Yog tias muaj ib puag ncig, thov ntxiv rau cov lus pom. **)

*) Tom qab ntau tshaj li ib xyoos hauv kev ua haujlwm, nws hloov tawm lollipop lo kuv siv, pib siv cov ntawv tawv tawv, muaj qhov nyiam ua kom luv nyob hauv qhov siab tas li ntawm lub caij nplooj ntoo hlav hloov. Tom qab qee qhov teeb meem kuv hloov nws nrog tus pas ntoo.

**) Kuv tab tom siv PushBullet tam sim no rau cov lus thawb, cais los ntawm MQTT dashboard. Me me Node-RED qis cuam tshuam rau API tuaj yeem pom ntawm no. Nco ntsoov tias koj muab cov cim nkag rau hauv ntawm "Npaj rau pushbullet" thiab koj li email chaw nyob rau lub hom phiaj rov qab rau hauv node "Retry".

Pom zoo: