Turinys:

Belaidis MQTT lovos galvūgalio valdymas: 5 žingsniai (su nuotraukomis)
Belaidis MQTT lovos galvūgalio valdymas: 5 žingsniai (su nuotraukomis)

Video: Belaidis MQTT lovos galvūgalio valdymas: 5 žingsniai (su nuotraukomis)

Video: Belaidis MQTT lovos galvūgalio valdymas: 5 žingsniai (su nuotraukomis)
Video: NodeMCU + MQTT + Relay based plant watering wireless system 2024, Liepa
Anonim
Belaidis MQTT lovos galvūgalio valdymas
Belaidis MQTT lovos galvūgalio valdymas
Belaidis MQTT lovos galvūgalio valdymas
Belaidis MQTT lovos galvūgalio valdymas

Prieš kelerius metus įsigijome naują atminties putų lovą ir, kaip ir daugeliui lovų, taip pat turėjote įsigyti vieną iš jų „patvirtintų bazių“, kad išlaikytumėte garantiją. Taigi, mes pasirinkome pigiausią pagrindą, kuris taip pat apėmė galimybę pakelti ir nuleisti lovos galvą. Po kelių dienų buvo pristatytas ir sumontuotas mūsų čiužinys ir pigi amerikietiška reguliuojama bazė su laidiniais valdikliais (po vieną kiekvienai lovos pusei).

Pirmas dalykas, kurį pastebėjome, buvo tai, kad dailūs ir ilgi laidai parodų salėje nebuvo tokie, kokius turėjome savo lovoje! Tie, kurie buvo parodų salėje, turėjo plėtinius. Šie pratęsimai nebuvo įtraukti į mūsų lovą ir buvo pakankamai įdomūs, niekas nebuvo suinteresuotas mums parduoti ilginamųjų kabelių poros. Mums liko valdikliai, kurie vos pasiekė lovos viršų ir kuriuos turėjome apversti, kad galėtume naudotis.

Jūs gaunate tai, už ką mokate

Po maždaug 6 mėnesių pastebime, kad vienos iš valdiklių įtempimo apykaklės pradėjo plyšti. Po kelių mėnesių - plikas laidas. Greitai pirmyn maždaug metus, vienas iš valdiklių nebeveikia, o kitas šiek tiek trūkčioja.

Vėlgi, niekas nebuvo suinteresuotas mums parduoti pakaitalų. Tada mane užklupo!

Palaukite velniop! Argi aš nekuriu namų automatikos ir VALDYMO sistemos?!?

1 žingsnis: atradimas

Atradimas
Atradimas
Atradimas
Atradimas

Aš norėjau pamatyti, ką galėčiau padaryti su tuo, ką turėjau, todėl pasiėmiau sugedusį valdiklį ir wow! ten buvo daug šlamšto! Kam buvo skirta visa ši medžiaga? Aš atsitraukiau ir tiesiog žiūrėjau į įeinančias ir išeinančias eilutes. Galėjau pamatyti, kad yra 12 voltų maitinimo linija ir įžeminimo linija. Kitos dvi linijos atrodė kaip signalų linijos dviem mygtukais aukštyn ir žemyn. Taigi, aš rizikavau ir tiesiog perjungiau 12 V maitinimo šaltinį į „aukštyn“signalo liniją. Lova pradėjo judėti! Tada perkėliau trumpiklį ant „žemyn“signalo linijos ir lova nusileido!

Dėžutėje yra dar 4 signalų linijų ir dar 4 mygtukų kontaktai. Geriausiai spėju, kad ši valdiklio plokštė yra naudojama visuose jų laidiniuose pagrindiniuose modeliuose, o prireikus jie tiesiog uždeda skirtingas plokštes ant plokštės. Taigi, aš turėjau darbo teoriją. Aš išbandžiau tiekimo liniją, kad pamatyčiau, ar ji panardinta naudojimo metu, ar bet kada padidėjo - ne. Per signalo linijas buvo pritraukta labai mažai srovės, tačiau varikliui įjungti reikėjo 12 voltų.

2 žingsnis: dizainas

Dizainas
Dizainas
Dizainas
Dizainas
Dizainas
Dizainas
Dizainas
Dizainas

Taigi viskas, ko reikia, yra paprastas kontaktinis ryšys tarp VCC ir signalo kaiščio, bet kaip tai padaryti mano sistemoje. Kontaktams reikės dviejų relių, o belaidžiam valdikliui - ESP8266. Kadangi relėms gali prireikti daugiau srovės, nei gali tiekti skaitmeniniai kaiščiai, geriausia naudoti optinį izoliatorių tarp valdiklio ir relės. Tai leis mažam signalui įjungti didesnės srovės jungiklį (šiuo atveju šviesos varomas tranzistorius) ir saugiai įjungti relės ritę. Be to, optoizoliatorius izoliuoja valdiklį nuo bet kokių smaigalių, kurie gali susidaryti atleidus relės ritę ir sugriuvus magnetiniam laukui. Laimei, egzistuoja relės moduliai, kuriuose jau yra visa ši grandinė, ir už gana mažą kainą.

Lova bus valdiklio maitinimo šaltinis, o norint valdyti tiekiamus 12 voltų, mums reikės kintamo kintamosios srovės keitiklio. Labai nebrangus buvo susietas žemiau ir puikiai veikia. 12 V linija ir GND linijos jungiasi prie keitiklio įvesties pusės, o reguliuojama 5 voltų pusė jungiasi prie „NodeMCU“VCC ir relės modulio VCC kaiščio. Keitiklio žemė (-) jungiasi prie GND kaiščių tiek relės modulį, tiek „NodeMCU“.

„NodeMCU“jungiasi prie IN1 naudojant D1 (GPIO5) ir IN2 naudojant D2 (GPIO4). Aukštyn esanti signalo linija ant lovos jungiasi prie įprastai atidarytos 1 relės varžto gnybto, o žemyn - prie 2 relės, paprastai atidarytos gnybtų bloko jungties. 12 V laidą, prijungtą prie „Buck“keitiklio įvesties pusės, turėsite prijungti ir prie kito gnybtų bloko jungties, skirtos tiek 1, tiek 2 relėms.

Dalys

  • 1 - „NodeMCU“
  • 1 - Dvikovos relės modulis su srovės izoliacija
  • 1 - kintamasis įvesties/išvesties kainų keitiklis
  • 1 - Duonos lentos PCB
  • 22 gabaritinė varinė šerdies viela
  • 2 - M3x 8 varžtai

3 žingsnis: gaubtas

Korpusas
Korpusas

Dangtelį rasite čia:

Aš sukūriau paprastą gaubtą su „Tinkercad“, kuris leidžia lovos valdymo kabeliui patekti į dėžę tarp įtempimo mažinimo laikiklių dėžutės viduje. Čia yra užtrauktuko užtrauktuko lizdai, kurie neleistų kabeliui slysti, tačiau mano atveju tinkamumas buvo labai tvirtas ir jo nereikėjo. Dangtelis prisukamas 2 M3x 8 varžtais. Rekomenduočiau įkelti kodą ir išbandyti sistemą prieš montuojant į dėžutę.

Lentas laikiau vietoje karštais klijais, bet tai gali būti nereikalinga.

4 žingsnis: kodas

Kodą rasite čia:

PASTABA: Šiame projekte naudojama pubsubclient biblioteka, kurią galima pridėti bibliotekos tvarkytuvėje „Arduino IDE“

Čia esantis kodas yra gana paprastas ir buvo sukurtas remiantis „Home Assistant“dangtelio MQTT tipu. Idėja čia paprasta: kai paspaudžiate aukštyn arba žemyn namų asistento mygtuką, atitinkama relė užsidaro, kol bus gauta sustabdymo komanda ARBA sistema pasieks maksimalų aktyvinimo laiką ir sustos.

Maksimalus laikas yra skirtas kaip atsargumo priemonė, jei vartotojas pamiršta jį sustabdyti arba jei komanda buvo atsitiktinai išsiųsta, ir mažai tikėtina, kad kas nors ją sustabdys. Nenorime, kad relė veiktų neribotą laiką arba nenumatytų problemų dėl lovos dėl ilgo kontaktų uždarymo.

Mano kode šis skirtasis laikas yra 20 sekundžių ir jį galima koreguoti visuotinio kintamojo bloke, esančiame kodo viršuje.

Antra atsargumo priemonė buvo visada įsitikinti, kad jei aš įjungiu vieną relę, tyčia išjungiama kita, net jei paskutinė būsena jau buvo išjungta. Nenoriu siųsti 12v žemyn abiejose signalinėse linijose, nes nežinau, ką tai padarys lovai.

Išskyrus tai, lova skelbia, kad ji prieinama kas 60 sekundžių, ir viskas. Čia nėra varpų ar švilpukų. Kadangi lova neturi grįžtamojo ryšio padėties, negalėjau jų grąžinti „Home Assistant“.

5 veiksmas: integravimo pavyzdys

Integracijos pavyzdys
Integracijos pavyzdys
Integracijos pavyzdys
Integracijos pavyzdys

Mano parašytas kodas naudoja MQTT, kad galėtų bendrauti per „WiFi“, todėl gali bendrauti su bet kuriuo automatizavimo centru ar įrenginiu, kuris naudoja MQTT. Aš naudoju namų asistentą, kuriame yra įmontuotas MQTT tarpininkas. Žemiau yra mano HA konfigūracijos pavyzdys.

HA turiu failą cover.yaml su tokiu apibrėžimu:

- platforma: mqtt

name: "Pagrindinės lovos galvūgalio galvutė" command_topic: "master_bed_control/cmd" saatavuus_topic: "master_bed_control/prieinamumas" qos: 0 išlaikyti: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: neprisijungęs "optimistiškas: tiesa

Tai suteikia man vieną įrašą mano HA sąsajoje su mygtukais aukštyn/sustabdyti/žemyn, atliekant veiksmus, kaip aprašyta aukščiau.

Be to, savo lovos valdymo skydelyje („Instructable“/ „Blog Post“) nustatiau du mygtukus, skirtus pakelti ir nuleisti galvūgalį. Mygtukai valdymo skydelyje apibrėžiami kaip MQTT jutikliai:

- platforma: mqtt

state_topic: "bedside_cp1/button5" pavadinimas: "Bedside CP1 5 button" piktograma: mdi: circle

- platforma: mqtt

state_topic: "bedside_cp1/button6" pavadinimas: "Bedside CP1 6 mygtukas" piktograma: mdi: circle

… ir 4 automatizavimo taisyklės kiekvienam mygtukui paspaudus ir atleidus. Paspaudus, komanda aukštyn arba žemyn siunčiama į lovą, priklausomai nuo to, kuris mygtukas buvo suaktyvintas, kai mygtukas atleidžiamas, siunčiama sustabdymo komanda:

- ID: '1548308650383'

Pseudonimas: „MBR Bedside CP“mygtuko 5a aktyviklis: - „Entity_id“: sensor.bedside_cp1_button_5 iš: „Išjungta“platforma: būsena iki: „Įjungta“: veiksmas: - duomenys: subjekto_id: „dangtelis.master_bed_headboard“paslauga: cover.open_cover - id: '1548308758911' slapyvardis: MBR Bedside CP 5b mygtuko aktyviklis: - entity_id: sensor.bedside_cp1_button_5 from: 'On' platform: state to: 'Off' condition: veiksmas: - data: entity_id: 'cover.master_bed_headboard' service: cover.stop_cover - id: '1548308863495 slapyvardis: MBR Bedside CP Button 6a trigger: - entity_id: sensor.bedside_cp1_button_6 from:' Off 'platform: state to:' On 'condition: action: - data: entity_id:' cover.master_bed_headboard 'service: cover.close_cover - id:' 1548308911467 'alias: MBR Bedside CP Button 6b trigger: - entity_id: sensor.bedside_cp1_button_6 from:' On 'platform: state to:' Off 'condition: veiksmas: - duomenys: entit_id: 'cover.master_bed_headboard' paslauga: cover.stop_cover

Rekomenduojamas: