Skelbimas

Išmanieji maitinimo lizdai yra paprasčiausias būdas automatizuoti namus, tačiau už maždaug 40 USD už „Wi-Fi“ arba „ZWave“ grindžiamą lizdą vargu ar nusipirksite daugiau nei kelis.

Vis dėlto galbūt jau turite keletą pigių RF pagrindu sukurtų lizdų - tokių, kurie pateikiami su individualiu nuotolinio valdymo pultu, o jų gale yra keletas kanalų ir ID parinktuvų. Deja, nėra išmaniųjų namų šakotuvai rinkoje Išmaniųjų namų centrų mūšis: kas čia dar ir kas darosi? Skaityti daugiau kad dirba su tais. Argi nebūtų puiku, jei galėtumėte juos kažkaip susieti su savo „pasidaryk pats“ išmaniųjų namų sistema? Na, jūs galite - iš tikrųjų gana nesunkiai - su maždaug 10 USD dalimis.

Atlikdami šiek tiek daugiau darbo, taip pat galite integruoti kitą, pagal užsakymą, nuotolinės, RF pagrindu sukurtos, aparatinės įrangos, pvz šio biudžeto kino ekranas.

Ko tau reikia:

  • ESP8266 „NodeMCU v12E dev“ plokštė (nesvarbu tikslus modelis, gerai turėtų būti ir v1 ar v3). „NodeMCU“ plokštę naudojame todėl, kad vėliau norime lengvo „Wi-Fi“ ryšio. Nuoroda skirta 2 pakuotėms, kurių kiekviena kainuoja po 7 USD.
  • instagram viewer
  • Pakuotė 433Mhz siųstuvas ir imtuvas (apie 3 USD).
  • RCSwitch ir MQTT bibliotekos, o mūsų kodas - viskas galima atsisiųsti iš „Github“.
  • MQTT serveris, vietinis ar nuotolinis.
  • Kai kurie radijo bangomis valdomi lizdai veikia 433 mHz dažnio juostoje (tai turėtų pasakyti nuotolinio valdymo pulte). Aš nusipirkau kasyklą iš „Maplin“ kaip 3 pakuotes už maždaug 20 svarų (25,89 USD).

Jei tai yra pirmas kartas, kai programuojate „NodeMCU“ plokštę, jums reikės atsisiųsti „Arduino“ papildinius: sekite kartu su pirmąja mūsų „Arduino Killer“ įvadinis vadovas Susipažinkite su Arduino žudiku: ESP8266O kas, jei aš jums pasakyčiau, kad ten yra „Arduino“ suderinama „dev“ plokštė su įmontuotu „Wi-Fi“ už mažiau nei 10 USD? Na, yra. Skaityti daugiau skirtas „NodeMCU / ESP8266“ lustui. Jums taip pat reikės CH430 vairuotojai. Tu gali rasti pasirašytos „macOS CH430“ tvarkyklės čia, arba „Windows“ čia.

Aš naudojau „Arduino“ v1.6.5 versiją, nes kas nors aukščiau sukelia daugiau problemų, nei išsprendžia. Jei dar to nepadarėte, pažeminkite ankstesnę versiją.

Prieš pradėdamas, turėsiu pagrindinį žinių lygį Arduino programavimas „Arduino“ programavimas pradedantiesiems: šviesoforo valdiklio projekto vadovėlis„Arduino“ šviesoforo valdiklio sukūrimas padės išsiugdyti pagrindinius kodavimo įgūdžius! Mes jums pradėti. Skaityti daugiau , ir kad turite „NodeMCU“ sąranką plokštės tvarkytuvėje ir gebate teisingai įkelti demonstracinį kodą. Jūs taip pat turėtumėte pridėti bibliotekas, įtrauktas į mūsų atsisiuntimą, į savo Arduino / bibliotekos aplankas.

Jei turite „PubSubClient“ arba MQTT biblioteka, sukurti atsarginę kopiją ir pašalinti - vienintelė, kurią įtraukiau į atsisiuntimą, kur galėjau patikimai priimti pranešimus „NodeMCU“, ir aš pabandžiau daug!

Radijo bangų nugarinimas (pasirenkama)

Šis žingsnis nereikalingas, jei norite valdyti tik DIP jungiklio ar rinkiklio pasirinkimo kištukinius lizdus - jie palaikomi ne dėžutėje, o reikės šiek tiek modifikuoti kodą (vis dėlto tai vis dar įdomu padaryti, taigi jūs suprasite, kas vyksta už scenos).

Jei turite kitų radijo dažnio nuotolinio valdymo pultų, kuriuos norėtumėte pabandyti pridėti, pirmiausia turėsite „užuosti“ perduodamus RF kodus. Norėdami tai padaryti, įkelkite „ReceiveDemo_Advanced“ eskizas iš Meniu -> Pavyzdžiai -> RCSwitch aplanką ir pakeiskite šią eilutę iš 0

„mySwitch.enableRecept“ (0); // Imtuvas pertraukus 0 => tai yra 2 kaištis

į 2.

„mySwitch.enableRecept“ (2); // GPIO 2 / D4 imtuvas.

Prijunkite imtuvo modulį taip. Žiūrint į imtuvo plokštės priekinę dalį (ji yra ilgesnė iš dviejų, siųstuvas yra stačiakampis) - šone, kuriame yra komponentai:

  • Dešinė dešinė yra GND. Prijunkite prie GND „NodeMCU“ plokštėje.
  • Kairėje yra VCC. Prijunkite prie VIN „NodeMCU“ plokštėje.
  • Viduriniai du kaiščiai yra signalas. Prijunkite kurį nors iš jų prie „NodeMCU“ D4 (jie yra sujungti, todėl nesvarbu, kuris).
433 laidų-1

Dabar įkelkite modifikuotą „ReceiveDemo_Advanced“, ir kai tai bus padaryta, atidarykite nuoseklųjį monitorių ir pradėkite spausti nuotolinio valdymo pulto mygtukus. Nukopijuokite dešimtainę (įskaitant bitų ilgį), impulso ilgį ir protokolą, kai paspausite mygtuką.

ekrano RF uostymas

Tai padaręs radau, kad mano projektoriaus ekranas yra naudojamas

  • EKRANAS: Gauta 8694273 / 24bit; Impulso ilgis: 355 arba 356; Protokolas: 1
  • Ekrane žemyn: gauta 8694276 / 24bit;Impulso ilgis: 355 arba 356; Protokolas: 1

Tęskite tiek mygtukų, kiek jums reikia.

Siųstuvo tikrinimas

Tada mes bandysime siųsti kodus naudodamiesi siųstuvu. Siųstuvo modulį (kvadratinį) prijunkite taip. Būkite atsargūs: ženklinimas ant šių kaiščių yra žiaurus.

VCC kaištis iš tikrųjų yra viduryje, o ne kairėje pusėje. Aš tai sunaikinau vieną modulį. Tas dalykas, kuris sako „ATAD“, iš tikrųjų yra „DATA“, rašomas atgal. Vėlgi, duomenys eina į D4, VCC - į VIN, o GND - į GND (pašalinkite imtuvo modulį, jums jo nebereikia).

433 laidų-2

Įkelkite Pavyzdžiai -> RCSwitch -> TypeB_WithRotaryOrSlidingSwitchesir vėl pakeiskite duomenų PIN kodą:

„mySwitch.enableTransmit“ (10);

į

„mySwitch.enableTransmit“ (2);

Atminkite, kad bibliotekoje yra daugybė pavyzdžių, o kuris iš jų jums tinka, priklausys nuo tikslaus jungiklio tipo, kurį turite. Dažniausiai pasitaiko A tipo (jungikliai) ir B (rinktuvai ar slankikliai) - žiūrėkite paveikslėlius „RCSwitch“ puslapyje. B tipo lizdo įjungimas ir išjungimas yra toks paprastas:

„mySwitch.switchOn“ (1, 4); „mySwitch.switchOff“ (1, 4);

kur 1 yra kanalo ID (viršutinis ratukas), o 4 yra lizdo ID (apatinis ratukas). Jie buvo užrašyti romėniškais skaitmenimis ant mano lizdų. Todėl galima adresuoti daugiausiai 16 atskirų lizdų, nors keli lizdai gali naudoti tą patį adresą, jei turite kelis įrenginius, kad vienu metu įjungtumėte.

Tačiau mano projektoriaus ekranas buvo šiek tiek kitoks - jame buvo naudojamas kitoks impulso ilgis. Taigi, norint juos operuoti, sekė šie darbai. Atminkite, kad taip pat galite apibrėžti kitą protokolą, jei to reikia jūsų nuotolinio valdymo pultui. BET įsitikinkite, kad apibrėžėte protokolą prieš impulsų ilgį. Keičiant protokolą, impulsų ilgis perrašomas.

// Atminkite, kad mano ekrane iš tikrųjų reikia Dviejų mygtukų paspaudimų (ne ilgo paspaudimo, bet dviejų fizinių paspauskite), todėl šiek tiek atidėlioju, tada vėl siunčiu tą patį signalą void screenUp () { „mySwitch.setPulseLength“ (358); „mySwitch.send“ (8694273,24); // (dešimtainis kodas, bitų skaičius) delsimas (2000); „mySwitch.send“ (8694273,24); } void screenDown () {mySwitch.setPulseLength (358); „mySwitch.send“ (8694276,24); vėlavimas (2000 m.); „mySwitch.send“ (8694276,24); }

Prieš pereidami prie kito žingsnio patikrinkite, ar visi jūsų kodai veikia.

Valdymas per MQTT

Atidarykite eskizą, kurį atsisiuntėte iš „Github“ mqtt_rcswitch.ino, ir pirmiausia pakeiskite tinklo SSID ir savo namų slaptažodį. Tada, jei norite, pakeiskite kanalo pavadinimą ir nustatykite MQTT serverį. Jei dar neturite MQTT serverio, veikiančio diegiant „OpenHAB“, perskaitykite mūsų „OpenHAB“ pradedančiųjų vadovo 2 dalį „OpenHAB“ vadovas pradedantiesiems 2 dalis: „ZWave“, MQTT, taisyklės ir diagramos„OpenHAB“, atvirojo kodo namų automatikos programinė įranga, žymiai viršija kitų rinkoje esančių namų automatikos sistemų galimybes, tačiau ją nustatyti nėra lengva. Tiesą sakant, tai gali būti visiškai gąsdinanti. Skaityti daugiau . Atkreipkite dėmesį, kad mano kodas yra skirtas B tipo (sukamojo jungiklio) lizdams, nors jūs galite lengvai jį modifikuoti ir DIP jungikliams.

Svarbiausia kodo dalis yra žinutė gauta () funkcija, kuri reaguoja į gaunamas MQTT komandas. Šioje funkcijoje pirmiausia patikriname pagrindinį raktinį žodį - pasirinkau „jungiklis“ ir „ekranas“. „Jungiklio“ atveju mes išanalizuojame kanalo ir kištuko ID; tada patikrinkite, ar komandoje nėra naudingo krovinio.

void messageReception (eilutės tema, eilutės naudingumas, char * baitai, nepasirašytas int ilgis) {if (topic.indexOf ("switch")> = 0) {// jungiklio valdymas, išanalizuokite kanalą ir prijunkite ID int channel = getValue (tema, '/', 3) .toInt (); int plug = getValue (tema, '/', 4) .toInt (); if (payload == "on") {mySwitch.switchOn (kanalas, kištukas); } else {mySwitch.switchOff (kanalas, kištukas); }} else if (topic.indexOf ("screen")> = 0) {// screen control if (payload == "up") {screenUp (); } else if (payload == "down") {screenDown (); }} / * pridėkite dar vieną, jei čia norite klausytis daugiau komandų (arba tiesiog pakeiskite aukščiau esančią, jei nenorite ekrano) * / }

Pagal numatytuosius nustatymus veikia šios MQTT komandos:

gyvenamasis kambarys / valdymas / jungiklis / X / Y (kur X yra kanalas, o Y yra kištuko ID; su pranešimo turiniu įjungtas arba išjungtas)
gyvenamasis kambarys / valdymas / ekranas (su pranešimo korpusu aukštyn arba žemyn)

Naudokite komandinę eilutę arba GUI MQTT klientą, kad patikrintumėte savo įrenginius prieš įtraukdami į „OpenHAB“.

Pridedama prie „OpenHAB“

Paskutinis žingsnis - tiesiog reikia sukurti keletą elementų šiems jungikliams „OpenHAB“. Šiuo metu apibrėžiau šiuos elementus, bet jūs turėtumėte suprasti, kaip pridėti daugiau:

/ * RF433mHz įrenginiai * / Perjungti „CinemaScreen“ ekraną („Cinema“) {mqtt = "> [tarpininkas: svetainė / valdymas / ekranas: komanda: ĮJUNGTA: žemyn],> [tarpininkas: gyvenamasis kambarys / valdymas / ekranas: komanda: IŠJUNGTA: aukštyn]„} „Switch“ jungiklis41 „Switch41“ (kinas) {mqtt = "> [tarpininkas: svetainė / valdymas / jungiklis / 4/1: komanda: ON: įjungta],> [tarpininkas: svetainė / valdymas / jungiklis / 4/1: komanda: OFF: išjungta] "} „Switch“ jungiklis42 „Switch42“ (kinas) {mqtt = "> [tarpininkas: gyvenamasis kambarys / valdymas / jungiklis / 4/2: komanda: ON: įjungta],> [tarpininkas: svetainė / valdymas / jungiklis / 4/2: komanda: OFF: išjungta] "}

Dabar turėtumėte galėti valdyti savo RF įrenginius iš „OpenHAB“! Vienas dalykas, kurį maloniai nustebinau, buvo diapazonas - vienas mazgas sugebėjo apimti didžiąją dalį mano namo. Žinoma, galite pridėti dar vieną mazgą, klausydamiesi to paties kanalo, kuris tiesiog pakartoja tas pačias komandas, jei jums reikia papildomos aprėpties.

Vienintelis apribojimas, kurį reikia atsiminti, yra tai, kad patys lizdai negali pranešti apie savo būseną, taigi, jei jūs naudokite originalų nuotolinio valdymo pultą, kontroliuodami lizdo būklę gali būti tiksliai neatspindima „OpenHAB“. Pasinaudokite tiesiog „OpenHAB“ sąsaja ir jums viskas bus gerai.

Klausimai ar problemos? Klauskite komentaruose ir aš padarysiu viską, kad padėčiau. Jei norite patobulinti mano kodą, nedvejodami pateikite prašymą traukti.

Jamesas yra dirbtinio intelekto bakalauras ir yra CompTIA A + bei Network + sertifikuotas. Jis yra pagrindinis „MakeUseOf“ kūrėjas ir laisvalaikį praleidžia žaisdamas VR dažasvydį ir stalo žaidimus. Nuo mažens jis statė kompiuterius.