Turinys:

„MQTT“ir „Wifi“palaikomos pašto dėžutės vėliava: 7 žingsniai (su paveikslėliais)
„MQTT“ir „Wifi“palaikomos pašto dėžutės vėliava: 7 žingsniai (su paveikslėliais)

Video: „MQTT“ir „Wifi“palaikomos pašto dėžutės vėliava: 7 žingsniai (su paveikslėliais)

Video: „MQTT“ir „Wifi“palaikomos pašto dėžutės vėliava: 7 žingsniai (su paveikslėliais)
Video: Home Assistant. 9.4 pamoka ADD-ON – Xiaomi Gateway 3, zigbee2mqtt integracija 2024, Liepa
Anonim
„MQTT“ir „Wifi“palaikomos pašto dėžutės vėliava
„MQTT“ir „Wifi“palaikomos pašto dėžutės vėliava

Pastaba: atnaujinta nauja programine įranga, schema ir patarimai programuotojui

Pora metų ėmiausi savo namų automatizavimo projekto. Jis prasidėjo kuriant serverio valdomą 433 MHz siųstuvo konstrukciją su „Arduino“, kad būtų galima perjungti daug pigių PT2262 nuotolinių jungiklių. Vėliau savo orų stotyje pridėjau „Arduino“imtuvą, prijungiau savo EV įkroviklio valdymo kontaktą ir pan. Daiktai vis labiau susipynė (ir komplikavosi!). Taigi, prieš kelis mėnesius nusprendžiau viską standartizuoti pagal pranešimų siuntimo MQTT, automatizavimo „Node-RED“(abu veikia su vienu „Raspberry Pi B+“) ir „MariaDb“-registravimui (veikia mano „Synology NAS“). Vėliau perkėliau MQTT brokerį („Mosquitto“) ir „Node-RED“į NAS.

Šioje pamokoje aprašomas kvailas linksmybių projektas, užkabinantis mano gatvės pašto dėžutę šioje namų infrastruktūroje. Idėja yra ta, kad jei kas nors atidaro prie tvoros pritvirtintą pašto dėžutę maždaug 10 metrų nuo priekinių durų, tai signalizuoja mane telefonu ir galbūt kitais prietaisais.

1 žingsnis: Apibrėžkite, būtinos sąlygos ir dalys

Kontūras

Aukštame lygyje pašto dėžutė, atidarius, turėtų išsiųsti unikalų MQTT pranešimą tarpininkui, kad šios temos abonentai būtų informuoti. „Node-RED“taip pat prenumeruoja ir automatizuoja, šiuo atveju siunčia el. Laišką ir (arba) tiesioginį pranešimą į mano telefoną.

Pašto dėžutė turėtų veikti iš baterijų ir veikti mažiausiai metus, o tai turėtų būti daroma naudojant mano „WiFi“tinklą. Kadangi mikrovaldiklio pažadinimas ir prisijungimas prie „WiFi“tinklo gali užtrukti kelias sekundes, negalėjau naudoti įjungimo jungiklio, kad nutraukčiau maitinimą. Vietoj to, procesoriui turėtų būti leista užbaigti savo verslą, kai pašto dėžutės dangtelis jau uždarytas.

Būtinos sąlygos

Manau, kad turite kuklius litavimo įgūdžius, šiek tiek dirbote su „Arduino IDE“ir įdiegėte ESP8266 plokštes naudodami „Boards Manager“. Norėdami programuoti mikrovaldiklį, taip pat turite turėti 3,3 voltų USB nuoseklųjį adapterį.

Taip pat manau, kad turite MQTT tarpininką ir „Node-RED“serverį. Jei ne, internete yra daug instrukcijų, tačiau patarčiau pasirinkti tingų kelią ir naudoti puikų Peterio Scargillo diegimo scenarijų, jei norite tai paleisti bet kuriame „Pi“ar „Ubuntu“arba naudoti Andreaso Spiesso atvaizdą „Pi Zero W“(nuorodas to vaizdo įrašo apraše), o tai sutaupys kelias valandas žiūrint, kaip veikia diegimo scenarijai. Arba galite priversti programinę -aparatinę įrangą tiesiogiai siųsti el. Laišką, tačiau tai darydami prarasite daug lankstumo.

Dalys

  • 1 uždaryta, 3 AA baterijų dėžutė
  • 2 AA baterijos
  • 1 ESP8266 modulis. Šiam projektui naudojau ESP-01
  • 1 mikro jungiklis
  • 1 47K rezistorius
  • 1 4M7 rezistorius
  • 1 2.2uF kondensatorius
  • 1 plonas plastikinis vamzdelis. Aš naudoju rašiklį
  • 1 stora, ilga degtukų ar ledinukų lazdelė. Jis turėtų lengvai tilpti ir judėti plastikiniame vamzdyje

2 žingsnis: Aparatūra: dėžutė, jungiklis ir laidai

Techninė įranga: dėžutė, jungiklis ir laidai
Techninė įranga: dėžutė, jungiklis ir laidai
Techninė įranga: dėžutė, jungiklis ir laidai
Techninė įranga: dėžutė, jungiklis ir laidai
Techninė įranga: dėžutė, jungiklis ir laidai
Techninė įranga: dėžutė, jungiklis ir laidai

Pradėjau nuo senos akumuliatoriaus dėžutės iš neveikiančios kalėdinės dekoracijos. Jis buvo skirtas trims AA dydžio baterijoms. Kadangi ESP8266 puikiai veiks 3 voltais, galėčiau naudoti dvi baterijas ir naudoti trečią mikrovaldiklio padėtį. Atkreipkite dėmesį, kaip dėžutėje buvo nedidelis papildomas skyrius, kurį galėčiau naudoti aktyvinimo jungikliui. Naudojau labai įprastą jungiklių tipą, pavaizduotą paveikslėliuose, bet nuėmiau spyruoklę, kuri ją fiksuoja įjungimo arba išjungimo padėtyje. Aš lituodavau du plonus laidus prie NC kontaktų ir įklijavau į dėžutę mažu lašeliu super klijų.

Tada aš išgręžiau skylę viršutiniame dangtelyje, atitinkantį plastikinį vamzdelį, paimtą iš rutulinio rašiklio. Skylė tiksliai sutampa su jungikliu ir nukreipia stūmoklį, pagamintą iš storo degtuko.

Galiausiai, lituodavau dar du laidus prie akumuliatoriaus kontaktų ir visus keturis laidus nuvedžiau į trečiosios baterijos vietą, kur bus mikrovaldiklis.

3 žingsnis: Aparatūra: ESP-01

Techninė įranga: ESP-01
Techninė įranga: ESP-01
Techninė įranga: ESP-01
Techninė įranga: ESP-01
Techninė įranga: ESP-01
Techninė įranga: ESP-01

Atsižvelgiant į „WiFi“reikalavimą, visas projektas šaukia ESP8266. Šis mažas „Wi -Fi“valdiklis tapo mėgstamiausiu meistriškumo bendruomenės darbiniu arkliuku kaip modulis, kurį galima nusipirkti mažiau nei 2,50 EUR ir kuriame integruotas visas „WiFi“ir TCP/IP paketas, turintis daugiau nei pakankamai pajėgumų paleisti savo programas. „Arduino IDE“(arba „Atom“su „PlatformIO“papildiniu) visiškai palaiko ESP8266.

Aš paprastai imdavau ESP-12F, bet turėjau aplink mažą ESP-01 plokštę, kuri puikiai tiko darbui ir puikiai tinka akumuliatoriaus dėžutėje. Vienintelė problema yra ta, kad „ESP-01“programinės įrangos atnaujinimas yra gana sudėtingas. Daugiau apie tai kitame žingsnyje. Yra vienas pakeitimas: turite pašalinti raudoną maitinimo šviesos diodą iš plokštės, nes jis nuolat traukia 3 mA. Pašalinus šviesos diodą, modulis naudoja tik kelias dešimtis uA miego režimu, todėl jis tarnaus ilgiau nei metus naudojant dvi kokybiškas AA baterijas.

Paaiškėjo, kad prie kelių papildomų komponentų laisvos formos galiu naudoti dvi juosteles su 4 kontaktų antgaliais ir lituoti, kad galėčiau pašalinti ESP-01, kad atnaujinčiau programinę-aparatinę įrangą, kol ji vis dar tilptų į trečiąjį akumuliatoriaus skyrių.

Labai svarbu tinkamai prijungti ESP. Naudodami aukščiau pateiktą apgaulės lapą, sujunkite jį taip.

  1. Baterija plius iki Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) ir 47K rezistorius.
  2. Baterija minus GND (A1) ir vienas jungiklio laidas.
  3. Kitas jungiklio laidas prie 100nF kondensatoriaus ir 4M7 rezistoriaus.
  4. Abu rezistorių ir kondensatoriaus atviri galai į RST (C2).
  5. TXD (A2) gali likti nesujungtas.

Redaguoti: Turėjau pakeisti ESP-01, nes padariau kvailą klaidą ir ją sunaikinau. Paaiškėjo, kad mano nuostabai naujasis ESP-01 nebuvo atstatytas naudojant originalų 100nF kondensatorių. Tikriausiai jis turi šiek tiek kitokį dizainą. Aš jį pakeičiau 2.2 uF ir dabar jis vėl veikia

Kai tai bus padaryta, viską galima sumontuoti dėžutėje, bet laikykitės, pirmiausia turime užprogramuoti modulį.

4 žingsnis: ESP-01 programavimas

ESP-01 programavimas
ESP-01 programavimas
ESP-01 programavimas
ESP-01 programavimas
ESP-01 programavimas
ESP-01 programavimas

Jei norite atnaujinti ESP-01 programinę įrangą, galite pastatyti nedidelį įrenginį arba nusipirkti (beveik) pilną programuotoją už maždaug 1 eurą.

Aparatinės įrangos programavimas

Sukurkite nedidelį įrenginį su dviem moteriškomis antraštėmis ESP-01. Be to, jums reikia USB serijinio modulio, galinčio tiekti 3,3 volto įtampą. Atminkite, kad ESP8266 lustas nėra sukietėjęs 5 voltais, todėl klaida gali užmušti jūsų modulį. Bet kokiu atveju, vėl naudodami apgaulės lapą, prijunkite įrenginį taip:

  1. 3.3V iš USB serijos modulio į Vcc, CH_PD, RST ir GPIO2.
  2. USB serijos modulio GND į GND ir GPIO0.
  3. USB serijos modulio TXD į RXD.
  4. USB serijos modulio RDX į TXD.

Iš anksto sukurtas programuotojas

Kaip smagu kurti savo daiktus, tingesnis būdas yra gauti ESP-01-serijos sąsają iš mėgstamos aukciono svetainės, žr. Paveikslėlį aukščiau. Tai daug lengviau, kompaktiškiau ir patikimiau nei įrenginys. Tačiau kai kurie iš jų nėra programuotojai, o tik nuoseklios sąsajos. Turite lituoti vielinį tiltą tarp GND (kaištis A1) ir GPIO0 (kaištis C1) sąsajos gale, žr. Antrą paveikslėlį. Atminkite, kad ESP-01 turi būti prijungtas taip, kad antena būtų nukreipta į USB kištuką, o ne atvirkščiai!

Pastaba: jie taip pat egzistuoja su jungikliu, žr. Trečią nuotrauką, labai gražus.

Įkelkite programinę -aparatinę įrangą

Darant prielaidą, kad „Arduino IDE“yra 1.8.3 ar naujesnė versija, pasirinkite Įrankiai> Lenta ir pasirinkite turimą plokštę. Jei naudojate tokį ESP-01, kokį naudojau, pasirinkite „Bendrasis ESP8266 modulis“ir nustatykite šias parinktis (tai turėtų būti visos numatytosios):

  1. Blykstės režimas: DIO
  2. Blykstės dažnis: 40 MHz
  3. CPU dažnis: 80 MHz
  4. Blykstės dydis: 512 KB (64 KB SPIFFS) Pastaba: jei naudojate juodą ESP-01 plokštę, pasirinkite 1 MB (64 KB SPIFFS)
  5. Derinimo prievadas: išjungtas
  6. Derinimo lygis: nėra
  7. Atstatymo metodas: ck
  8. Įkėlimo greitis 115200
  9. Uostas: pasirinkite prievadą, prijungtą prie jūsų USB nuosekliosios sąsajos. Mano „Ubuntu“kompiuteriui tai buvo /dev /ttyUSB0

Prijunkite įrenginį/programuotoją, įkelkite eskizą, kurį rasite čia https://gitlab.com/jeroenmeijer/Mailbox.git. Konfigūracijoje h pateikite „WiFi“ir „MQTT“tarpininko kredencialus ir IP konfigūraciją ir pasirinkite Įkelti.

5 žingsnis: surinkite viską

Viską surenkant
Viską surenkant

Aš išgręžiau skylę plastikiniam vamzdžiui vidiniame pašto dėžutės dangtelyje, kuo arčiau vyrio, tada karštai priklijavau akumuliatoriaus dėžutę prie to dangčio apačios. Toliau aš naudoju storą degtuką kaip stūmoklį. Aš nukirpau degtuką iki galo, kad jungiklis atsidarytų, jei išorinis dangtelis būtų uždarytas. Patikrinau ryšį, atidaręs dangtį, kai veikiau „mosquitto_sub“, kad galėčiau stebėti MQTT pranešimus (pakeiskite „mqttbroker“, naudotoją ir slaptažodį savo MQTT konfigūracija):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u vartotojo -P slaptažodis

Praėjus maždaug šešioms sekundėms po išorinio dangčio atidarymo, paskelbiamas toks MQTT pranešimas. Laikas naudojamas pažadinti mikrovaldiklį ir užmegzti „WiFi“ir tarpininko ryšį.

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

Per šį laiką mikrovaldiklis naudojo maždaug 70 mA. Kai tai padaryta, jis užmiega giliai ir mano atveju sunaudojo mažiau nei 20uA. „atvartas“visada teisingas, „vcc“nurodo akumuliatoriaus įtampą mV, o „prieš“turėtų būti 0. Jei jis yra 1 arba 2, tai reiškia, kad pašto dėžutė negalėjo išsiųsti pranešimo anksčiau, nes negalėjo prisijungti prie „WiFi“arba dėl to, kad jis negalėjo prisijungti prie „MQTT“brokerio. „RSSI“yra „WiFi“signalo stiprumas. Abu yra labai patogu diagnozuoti problemas.

Patartina kelias dienas stebėti akumuliatoriaus įtampą, kad įsitikintumėte, jog prietaisas veikia taip, kaip numatyta, ir dėl tam tikrų priežasčių neišsikrauna akumuliatorius.

Programinė įranga taip pat gali atnaujinti belaidžiu ryšiu (OTA), tačiau tai šiek tiek viršija šią instrukciją. Tiems, kurie domisi, OTA konfigūracija taip pat yra config.h.

6 veiksmas: „Node-RED“naudojimas, norint veikti pagal MQTT pranešimą

„Node-RED“naudojimas MQTT pranešimui veikti
„Node-RED“naudojimas MQTT pranešimui veikti

Galiausiai sukūriau paprastą srautą „Node-RED“. Pirmasis mazgas prenumeruoja pašto dėžutės temą (stat/postbox/trigger). Kai gaunamas pranešimas, antrasis mazgas formuoja el. Laišką *). Galutinis mazgas išsiunčia jį mano „Gmail“adresui, naudodamas „Gmail“kaip SMTP serverį. Tada mano telefonas įspės mane apie naujus laiškus.

Pridėjau „Node-RED“srautą prie „gitlab“fragmento, kad galėtumėte jį importuoti į „Node-RED“srautus.

Žinoma, galite pridėti dar keletą mazgų, pavyzdžiui, registruoti pašto dėžutės įvykius į „MariaDb“ar „SqlLite“arba sukurti papildomus aliarmus, kai akumuliatoriaus įtampa nukrenta žemiau 2,7 voltų.

Laimingos pašto medžioklės!

*) Žr. Kitą puslapį, dabar naudoju „PushBullet“, o ne el.

7 žingsnis: Po mintys

Visada yra toks jausmas, kad viskas galėjo būti padaryta geriau.

Perjungti

Aš norėčiau naudoti (super) magnetą ir nendrinį kontaktą, o ne šiek tiek nerangų stūmoklio metodą. Buvo dvi priežastys. Viena yra tai, kad niekaip negalėjau atlikti šio darbo, kai kontaktas buvo uždarytas, kai dėžutė buvo atidaryta, ir tai, kad ji visada buvo uždaryta, reiškė mažą srovę. Žvelgiant atgal, mažiau nei 1uA, tekantis per 4M7 rezistorių, nebūtų buvęs didelis dalykas, kalbant apie baterijos veikimo laiką. Kitas buvo praktiškesnis. Šeštadienį sukūriau šį projektą ir parašiau programinę įrangą, visa tai kuriu sekmadienį iš to, kas buvo aplink. Aš tiesiog neturėjau nendrės kontakto šiukšlių dėžėje.

Pastaba: kaip komentavo „diy_bloke“, nendrių kontaktai turi tendenciją tapti lipnūs, kai ilgą laiką magnetizuojami, todėl galbūt stūmoklis nebuvo tokia bloga idėja. Mes pamatysime. *)

Pranešimas apie ištuštinimą

Pašto dėžutė išsiunčia pranešimą, kai ji taip pat ištuštinama. Tai nėra didelis dalykas, tačiau kai daugiau žmonių gauna įspėjimą, gali tekti tikrinti pašto dėžutę, nepaisant viso jos tikslo! Yra keletas būdų, kaip tai išspręsti, pvz., Patikrinti, ar vidinis dangtelis yra pakeltas, ir jei taip, nesiųskite pranešimo. Arba užuot naudoję dangčio jungiklį, pašto dėžutės apačioje įdiekite detektorių. Arba mažą atstatymo mygtuką, kurį reikia paspausti jį ištuštinant. Tačiau viskas apsunkintų ir tikriausiai pablogintų patikimumą.

Pranešimai

El. Laiškų siuntimas yra gana efektyvus, bet grubus būdas įspėti. Elegantiškesnis būdas būtų telefono programa, tačiau neradau „Android MQTT“prietaisų skydelio programos, kurią būtų galima sukonfigūruoti taip, kad ji gautų tam tikrą pranešimą apie operacinę sistemą. Jei aplink yra vienas, pridėkite prie komentarų. **)

*) Po daugiau nei metų veikimo paaiškėja, kad mano naudojama ledinukų lazdelė, iš esmės kietas valcuotas popierius, turi tendenciją sutrumpėti esant pastoviam jungiklio spyruoklės slėgiui. Po tam tikro trikčių šalinimo pakeičiau jį medine lazda.

**) Dabar naudoju „PushBullet“tiesioginiams pranešimams, atskirai nuo MQTT prietaisų skydelio. Mažą „Node-RED“žemą sąsają su API rasite čia. Įsitikinkite, kad įvedėte prieigos raktą mazge „Pasiruoškite„ pushbullet ““ir savo el. Pašto adresą atsarginiams tikslams mazge „Bandyti iš naujo“.

Rekomenduojamas: