Satura rādītājs:

MQTT un Wifi darbināmas pastkastes karogs: 7 soļi (ar attēliem)
MQTT un Wifi darbināmas pastkastes karogs: 7 soļi (ar attēliem)

Video: MQTT un Wifi darbināmas pastkastes karogs: 7 soļi (ar attēliem)

Video: MQTT un Wifi darbināmas pastkastes karogs: 7 soļi (ar attēliem)
Video: Zigbee пульт управления для умного дома Moes на 4 кнопки. Обзор, интеграция в Home Assistant 2024, Jūlijs
Anonim
MQTT un Wifi darbināmas pastkastes karogs
MQTT un Wifi darbināmas pastkastes karogs

Piezīme: atjaunināts ar jaunu programmaparatūru, shēmu un padomiem programmētājam

Pāris gadus es sāku savu mājas automatizācijas projektu. Tas sākās, izveidojot ar serveri kontrolētu 433 MHz raidītāja konstrukciju ar Arduino, lai pārslēgtu daudz lētu uz PT2262 balstītu tālvadības slēdžu. Vēlāk savai laika stacijai pievienoju Arduino balstītu uztvērēju, pievienoju EV lādētāja vadības kontaktu utt. Lietas arvien vairāk savijās (un sarežģījās!). Tātad, pirms dažiem mēnešiem es nolēmu standartizēt visu, pamatojoties uz ziņojumapmaiņas MQTT, automatizācijai-Node-RED (abi darbojas ar vienu Raspberry Pi B+) un MariaDb-reģistrēšanai (darbojas manā Synology NAS). Vēlāk es arī pārcēlu MQTT brokeri (Mosquitto) un Node-RED uz NAS.

Šajā pamācībā aprakstīts dumjš un jautrs projekts, kas šajā mājas infrastruktūrā piesaista manu uz ielas uzstādīto pastkasti. Ideja ir tāda, ka, ja kāds atver žogam piestiprinātu pastkasti apmēram 10 metru attālumā no ārdurvīm, tas man signalizē pa tālruni un, iespējams, citām ierīcēm.

1. darbība: izklāsts, priekšnosacījumi un detaļas

Kontūra

Augstākā līmenī pastkastei pēc atvēršanas brokerim jānosūta unikāls MQTT ziņojums, lai šīs tēmas abonenti tiktu informēti. Mezgls-RED arī abonē un veic zināmu automatizāciju, šajā gadījumā sūtot uz manu tālruni e-pastu un/vai push ziņu.

Pastkastei vajadzētu darboties ar baterijām un darboties vismaz gadu, un tā būtu jādara, izmantojot manu WiFi tīklu. Tā kā mikrokontrollera pamodināšana un savienojuma izveide ar WiFi tīklu var aizņemt vairākas sekundes, es nevarēju izmantot aktivizācijas slēdzi, lai pārtrauktu strāvu. Tā vietā procesors jāļauj pabeigt savu darbību pēc tam, kad pastkastes vāks jau ir aizvērts.

Priekšnosacījumi

Es pieņemu, ka jums ir pieticīgas lodēšanas prasmes, esat nedaudz strādājis ar Arduino IDE un instalējis ESP8266 plates, izmantojot Boards Manager. Lai ieprogrammētu mikrokontrolleri, jums ir nepieciešams arī 3,3 voltu USB seriālais adapteris.

Es arī pieņemu, ka jums ir MQTT brokeris un Node-RED serveris. Ja nē, internetā ir daudz instrukciju, bet es ieteiktu izvēlēties slinko ceļu un izmantot Pītera Sargilja lielisko instalēšanas skriptu, ja vēlaties to palaist jebkurā Pi vai Ubuntu, vai izmantot Andreas Spiess attēlu Pi Zero W (saites šī videoklipa aprakstā), kas ietaupīs dažas stundas, skatoties instalēšanas skriptu darbību. Varat arī likt programmaparatūrai tieši nosūtīt e -pastu, taču, to darot, jūs zaudēsiet daudz elastības.

Daļas

  • 1 slēgta, 3 AA bateriju kārba
  • 2 AA baterijas
  • 1 ESP8266 modulis. Šim projektam es izmantoju ESP-01
  • 1 mikro slēdzis
  • 1 47K rezistors
  • 1 4M7 rezistors
  • 1 2.2uF kondensators
  • 1 plāna plastmasas caurule. Es izmantoju pildspalvu
  • 1 bieza, gara sērkociņa vai ledenes kociņš. Tam vajadzētu viegli ievietot un pārvietoties plastmasas caurulē

2. solis: aparatūra: kaste, slēdzis un vadi

Aparatūra: kaste, slēdzis un elektroinstalācija
Aparatūra: kaste, slēdzis un elektroinstalācija
Aparatūra: kaste, slēdzis un elektroinstalācija
Aparatūra: kaste, slēdzis un elektroinstalācija
Aparatūra: kaste, slēdzis un vadi
Aparatūra: kaste, slēdzis un vadi

Es sāku ar veco akumulatora kārbu no nederīgas Ziemassvētku dekorācijas. Tas bija paredzēts trim AA izmēra baterijām. Tā kā ESP8266 lieliski darbosies ar 3 voltiem, es varētu izmantot divas baterijas un izmantot mikrokontrollera trešo pozīciju. Ievērojiet, kā kastē bija neliels papildu nodalījums, ko es varētu izmantot aktivizācijas slēdzim. Es izmantoju ļoti izplatītu slēdža veidu, kas parādīts attēlos, bet noņemu atsperi, kas to fiksē ieslēgtā vai izslēgtā stāvoklī. Es pielodēju divus plānus vadus pie NC kontaktiem un pielīmēju to kastē ar sīku superlīmes pilienu.

Pēc tam augšējā vākā es urbju caurumu, kas atbilst plastmasas caurulei, kas ņemta no lodīšu pildspalvas. Caurums precīzi sakrīt ar slēdzi un vada virzuli, kas izgatavots no biezas sērkociņa.

Visbeidzot, es pielodēju vēl divus vadus pie akumulatora kontaktiem un vadīju visus četrus vadus trešās baterijas pozīcijā, kur atradīsies mikrokontrolleris.

3. darbība: aparatūra: ESP-01

Aparatūra: ESP-01
Aparatūra: ESP-01
Aparatūra: ESP-01
Aparatūra: ESP-01
Aparatūra: ESP-01
Aparatūra: ESP-01

Ņemot vērā WiFi prasību, viss projekts kliedz ESP8266. Šis mazais WiFi kontrolieris ir kļuvis par iecienītāko kopšanas darba zirgu kā moduli, kuru var iegādāties par cenu zem 2,50 EUR, un tajā ir integrēts pilns WiFi un TCP/IP steks ar vairāk nekā pietiekami daudz jaudas, lai rezervētu savu programmu palaišanai. Arduino IDE (vai Atom ar spraudni PlatformIO) pilnībā atbalsta ESP8266.

Es parasti ņemtu ESP-12F, bet man bija neliela ESP-01 plāksne, kas bija ideāli piemērota darbam un labi iederas akumulatora kastē. Vienīgā problēma ir tā, ka ESP-01 programmaparatūras zibspuldze ir diezgan sarežģīta. Vairāk par to nākamajā solī. Ir jāveic viena modifikācija: jums ir jānoņem sarkanā strāvas gaismas diode no tāfeles, jo tā nepārtraukti piesaista 3 mA. Ja gaismas diode ir noņemta, modulis dziļā miega režīmā izmanto tikai dažus desmitus uA, kas padarīs to ilgāku par gadu, izmantojot divas kvalitatīvas AA baterijas.

Izrādījās, ka es varētu izmantot divas sloksnes ar 4 kontaktu sieviešu galviņām un lodēt uz dažām papildu sastāvdaļām brīvā formā, lai es varētu noņemt ESP-01, lai atjauninātu programmaparatūru, kamēr tā joprojām ietilptu trešajā akumulatora nodalījumā.

Ir ļoti svarīgi pareizi savienot ESP. Izmantojot iepriekš minēto krāpšanās lapu, pievienojiet to vadam šādi.

  1. Akumulators plus līdz Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) un 47K rezistors.
  2. Akumulators mīnus GND (A1) un viens slēdža vads.
  3. Otrs slēdža vads ir 100nF kondensators un 4M7 rezistors.
  4. Abu rezistoru un kondensatora atvērtie gali uz RST (C2).
  5. TXD (A2) var palikt nesaistīts.

Edit: Man nācās nomainīt ESP-01, jo pieļāvu muļķīgu kļūdu un to iznīcināju. Izrādījās, ka man par pārsteigumu jaunais ESP-01 netika atiestatīts ar sākotnējo 100nF kondensatoru. Tam, iespējams, ir nedaudz atšķirīgs dizains. Es to nomainīju ar 2.2 uF, un tagad tas atkal darbojas

Kad tas ir izdarīts, visu var uzstādīt kastē, bet pagaidiet, vispirms mums jāprogrammē modulis.

4. solis: ESP-01 programmēšana

ESP-01 programmēšana
ESP-01 programmēšana
ESP-01 programmēšana
ESP-01 programmēšana
ESP-01 programmēšana
ESP-01 programmēšana

Lai zibspuldzētu ESP-01 programmaparatūru, varat vai nu izveidot nelielu aprīkojumu, vai arī iegādāties (gandrīz) pilnu programmētāju par aptuveni 1 eiro.

Programmēšanas aparatūra

Izveidojiet nelielu platformu ar divām sieviešu galviņām priekš ESP-01. Jums ir nepieciešams arī USB seriālais modulis, kas spēj nodrošināt 3,3 voltu spriegumu. Ņemiet vērā, ka ESP8266 mikroshēma nav 5 voltu cietināta, tāpēc šeit pieļautā kļūda var nogalināt jūsu moduli. Jebkurā gadījumā, atkal izmantojot apkrāptu lapu, savietojiet stieni šādi:

  1. 3.3V no USBSerial moduļa uz Vcc, CH_PD, RST un GPIO2.
  2. USB seriālā moduļa GND uz GND un GPIO0.
  3. USB seriālā moduļa TXD uz RXD.
  4. USBSerial moduļa RDX uz TXD.

Iepriekš izveidots programmētājs

Lai arī cik jautri būtu veidot savas lietas, slinkākā pieeja ir iegūt ESP-01-sērijas saskarni no iecienītākās izsoles vietnes, skatiet iepriekš redzamo attēlu. Tas ir daudz vieglāk, kompaktāk un uzticamāk nekā iekārta. Tomēr daži no tiem nav programmētāji, tikai sērijas saskarnes. Jums ir nepieciešams lodēt stiepļu tiltu starp GND (pin A1) un GPIO0 (pin C1) saskarnes aizmugurē, skatiet otro attēlu. Ņemiet vērā, ka ESP-01 jāpievieno tā, lai antena būtu vērsta pret USB spraudni, nevis otrādi!

Piezīme: tie pastāv arī ar slēdzi, skatiet trešo attēlu, ļoti jauki.

Ielādējiet programmaparatūru

Pieņemot, ka Arduino IDE ir 1.8.3 vai jaunāka, atlasiet Rīki> Dēlis un atlasiet to, kas jums ir. ESP-01, piemēram, es izmantoju, izvēlieties "Generic ESP8266 Module" un iestatiet šādas opcijas (tām jābūt visām noklusējuma vērtībām):

  1. Zibspuldzes režīms: DIO
  2. Zibspuldzes frekvence: 40 MHz
  3. CPU frekvence: 80 MHz
  4. Zibspuldzes izmērs: 512 KB (64 KB SPIFFS) Piezīme: ja izmantojat melnu ESP-01 plati, izvēlieties 1 MB (64 KB SPIFFS)
  5. Atkļūdošanas ports: atspējots
  6. Atkļūdošanas līmenis: nav
  7. Atiestatīšanas metode: ck
  8. Augšupielādes ātrums 115200
  9. Ports: izvēlieties portu, kas ir pievienots jūsu USB seriālajam interfeisam. Manam Ubuntu personālajam datoram tas bija /dev /ttyUSB0

Pievienojiet platformu/programmētāju, ielādējiet skici, kuru varat atrast šeit https://gitlab.com/jeroenmeijer/Mailbox.git. Sadaļā config.h norādiet savus WiFi un MQTT brokera akreditācijas datus un IP konfigurāciju un izvēlieties Augšupielādēt.

5. solis: visu salieciet

Visu saliekot
Visu saliekot

Es pastkastes iekšējā vākā, pēc iespējas tuvāk eņģēm, izurbju caurumu plastmasas caurulei, pēc tam karsti pielīmēju akumulatora kārbu pie šī vāka apakšpuses. Tālāk kā virzuli izmantoju biezu sērkociņu. Es izmantoju izgriezumu, lai nogrieztu sērkociņu garumā tā, lai slēdzis atvērtos, ja ārējais vāks būtu aizvērts. Es pārbaudīju savienojamību, atverot vāku, palaižot mosquitto_sub, lai uzraudzītu MQTT ziņojumus (nomainiet mqttbroker, lietotāju un paroli ar savu MQTT konfigurāciju):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u lietotāja -P parole

Aptuveni sešas sekundes pēc ārējā vāka atvēršanas tiek publicēts šāds MQTT ziņojums. Laiks tiek izmantots, lai pamodinātu mikrokontrolleri un izveidotu WiFi un starpnieka savienojumu.

stat/mailbox/trigger {"vcc": 3050, "flap": true, "prev": 0, "RSSI": 29, "version": "005"}

Šajā laikā mikrokontrolleris izmantoja aptuveni 70 mA. Kad tas ir izdarīts, tas nonāk dziļā miegā, un manā gadījumā tas izmantoja mazāk nekā 20uA. "Atloks" vienmēr ir taisnība, "vcc" norāda akumulatora spriegumu mV, un "iepriekšējam" jābūt 0. Ja tas ir 1 vai 2, tas nozīmē, ka pastkaste nevarēja nosūtīt ziņojumu agrāk vai nu tāpēc, ka nevarēja izveidot savienojumu ar WiFi vai tāpēc, ka tas nevarēja izveidot savienojumu ar MQTT brokeri. "RSSI" ir WiFi signāla stiprums. Abi ir ļoti ērti, lai diagnosticētu problēmas.

Ieteicams dažas dienas uzraudzīt akumulatora spriegumu, lai pārliecinātos, ka ierīce darbojas kā paredzēts un kāda iemesla dēļ tā neiztukšo akumulatoru.

Programmatūra var arī atjaunināt bezvadu režīmā (OTA), taču tas nedaudz pārsniedz šīs instrukcijas darbības jomu. Interesentiem OTA konfigurācija ir arī config.h.

6. darbība: izmantojot mezglu-SARKANO, lai rīkotos saskaņā ar MQTT ziņojumu

Node-RED izmantošana, lai rīkotos saskaņā ar MQTT ziņojumu
Node-RED izmantošana, lai rīkotos saskaņā ar MQTT ziņojumu

Visbeidzot, es izveidoju vienkāršu plūsmu Node-RED. Pirmais mezgls abonē pastkastes tēmu (stat/pastbox/trigger). Kad tiek saņemts ziņojums, otrais mezgls formatē e -pastu *). Pēdējais mezgls to nosūta uz manu gmail adresi, izmantojot gmail kā SMTP serveri. Tālrunis mani brīdinās par jaunu pastu.

Esmu pievienojis Node-RED plūsmu gitlab fragmentam, lai jūs varētu to importēt savās Node-RED plūsmās.

Protams, jūs varat pievienot vēl dažus mezglus, piemēram, lai reģistrētu pastkastes notikumus MariaDb vai SqlLite, vai izveidot papildu trauksmes signālus, kad akumulatora spriegums nokrītas zem 2,7 voltiem.

Laimīgu pasta medību!

*) Skatīt nākamo lapu, es tagad izmantoju PushBullet, nevis e -pastu.

7. solis: pēcpārdomas

Vienmēr ir sajūta, ka lietas varēja izdarīt labāk.

Slēdzis

Es būtu izvēlējies izmantot (super) magnētu un niedru kontaktu, nevis nedaudz neveiklu virzuli. Tam bija divi iemesli. Viens ir tas, ka es nevarēju veikt šo darbu, kad kontakts aizvērās, kad tika atvērta kaste, un tā vienmēr bija aizvērta, tāpēc vienmēr plūdīs neliela strāva. Retrospektīvi, mazāk nekā 1uA, kas plūst caur 4M7 rezistoru, nebūtu bijis liels akumulatora darbības laiks. Otrs bija praktiskāks. Es šo projektu izdomāju sestdien un uzrakstīju programmatūru, uzbūvēju to visu svētdien no apkārt esošā. Man vienkārši nebija niedru kontakta miskastē.

Piezīme: kā komentēja diy_bloke, niedru kontaktiem ir tendence kļūt lipīgiem, ilgstoši magnetizējoties, tāpēc varbūt virzulis nemaz nebija tik slikta ideja. Mēs redzēsim. *)

Ziņojums par iztukšošanu

Iztukšojot pastkasti, tiek nosūtīts ziņojums. Tas nav liels darījums, bet, ja vairāk cilvēku mājā saņem brīdinājumu, var beigties cilpa, pārbaudot pastkasti, ignorējot tā visu mērķi! Ir vairāki veidi, kā to novērst, piemēram, pārbaudīt, vai iekšējais vāks ir pacelts, un ja jā, nesūtiet ziņojumu. Vai arī tā vietā, lai izmantotu vāka slēdzi, pastkastes apakšā instalējiet detektoru. Vai arī mazu atiestatīšanas pogu, kas jānospiež iztukšošanas laikā. Tomēr viss sarežģītu lietas un, iespējams, pasliktinātu uzticamību.

Ziņapmaiņa

E -pasta sūtīšana ir diezgan efektīvs, bet rupjš veids, kā izlikt brīdinājumu. Elegants veids būtu tālruņa lietotne, taču es neesmu atradis Android MQTT informācijas paneļa lietotni, kuru var konfigurēt tā, lai aktivizētu brīdinājumu par operētājsistēmu, kad tiek saņemts noteikts ziņojums. Ja kāds tāds ir apkārt, lūdzu, pievienojiet tos komentāriem. **)

*) Pēc vairāk nekā gada darbības izrādās, ka manis izmantotajai konfekšu nūjai, pamatā cietajam velmētajam papīram, ir tendence saīsināties zem slēdža atsperes pastāvīgā spiediena. Pēc nelielas problēmu novēršanas es to nomainīju ar koka nūju.

**) Es tagad izmantoju PushBullet push ziņojumiem, atsevišķi no MQTT informācijas paneļa. Nelielas mezgla-RED zemas saskarnes ar API var atrast šeit. Noteikti norādiet piekļuves pilnvaru mezglā "Sagatavošanās pushbullet" un savu e -pasta adresi rezerves nolūkos mezglā "Mēģināt vēlreiz".

Ieteicams: