Reklāma

Viedās strāvas kontaktligzdas ir vienkāršākais veids, kā automatizēt jūsu māju, taču, ja katrs maksājat apmēram 40 USD par Wi-Fi vai ZWave balstītu kontaktligzdu, jūs, visticamāk, nenopirksit vairāk nekā dažus.

Jums, iespējams, jau ir dažas lētas, uz RF balstītas ligzdas, tādas, kādas ir ar individuālu tālvadības pulti, un aizmugurē ir daži kanālu un ID atlasītāji. Diemžēl tādu nav viedo māju mezgli tirgū Kauja ar viedajiem mājas centriem: kas tur ir un kas nāk? Lasīt vairāk kas strādā ar tiem. Vai nebūtu lieliski, ja jūs kaut kā varētu tos sasaistīt ar jūsu viedās mājas sistēmu DIY? Jūs varat - diezgan viegli - ar aptuveni 10 USD pa daļām.

Ar nedaudz vairāk darba jūs varat integrēt arī kādu citu uz RF balstītu attālo aparatūru, piemēram šī budžeta kinoekrāns.

Ko tev vajag:

  • ESP8266 NodeMCU v12E dev dēlis (precīzam modelim nav nozīmes, arī v1 vai v3 ir jābūt labi) Iemesls, kāpēc mēs izmantojam NodeMCU plati, ir tas, ka mēs vēlamies ērtu Wi-Fi savienojumu vēlāk. Saite paredzēta 2 paciņām, kuru katra cena ir 7 USD.
  • Iepakojums 433Mhz raidītājs un uztvērējs (ap USD 3).
  • RCSwitch un MQTT bibliotēkas, un mūsu kods - viss pieejams lejupielādei no Github.
  • MQTT serveris, lokāls vai attāls.
  • Dažas RF kontrolētas ligzdas, kas darbojas 433 mHz frekvenču joslā (tā jāsaka uz tālvadības pults). Es nopirku mīnu no Maplin kā 3 iepakojumu par aptuveni 20 sterliņu mārciņām (25,89 latiem).

Ja šī ir jūsu pirmā reize, kad programmējat NodeMCU plati, jums tai būs jālejupielādē Arduino spraudņi: sekojiet līdzi mūsu vietnes pirmajai daļai Arduino Killer ievada ceļvedis Iepazīstieties ar Arduino slepkavu: ESP8266Ko darīt, ja es jums teiktu, ka tur ir ar Arduino saderīga dev plātne ar iebūvētu Wi-Fi mazāk par 10 ASV dolāriem? Nu, tur ir. Lasīt vairāk mikroshēmai NodeMCU / ESP8266. Jums arī būs nepieciešams CH430 autovadītāji. Tu vari atrast parakstīti macOS CH430 draiveri šeit, vai Windows šeit.

Es izmantoju Arduino v1.6.5, jo kaut kas augstāks rada vairāk problēmu, nekā tās atrisina. Pazeminiet amatu, ja vēl neesat to izdarījis.

Pirms turpināt, es pieņemšu pamatzināšanu līmeni par Arduino programmēšana Arduino programmēšana iesācējiem: luksofora kontroliera projekta apmācībaArduino luksofora kontroliera izveidošana palīdz attīstīt kodēšanas pamatiemaņas! Mēs sākam jūs. Lasīt vairāk , un ka jūsu NodeMCU ir iestatīts paneļa pārvaldniekā un jūs varat pareizi augšupielādēt demonstrācijas kodu. Jums arī vajadzēja pievienot mūsu lejupielādei iekļautās bibliotēkas Arduino / bibliotēkas mape.

Ja jums jau ir PubSubClient vai MQTT bibliotēka, dublējiet to un noņemiet to - tas, kuru esmu iekļāvis lejupielādē, ir vienīgais, kurā es droši varēju saņemt ziņojumus NodeMCU, un es mēģināju daudz!

RF šņaukšana (pēc izvēles)

Šis solis nav nepieciešams, ja vēlaties kontrolēt tikai DIP slēdža vai ciparripas izvēles spraudņa ligzdas - tās tiek atbalstītas ārpus komplekta, un būs nepieciešama minimāla koda modifikācija (vispirms to tomēr ir interesanti izdarīt, tāpēc jūs sapratīsit, kas notiek aiz ainas).

Ja jums ir citas RF tālvadības pultis, kuras vēlaties mēģināt pievienot, jums vispirms ir “jāšņaukā” pārraidītie RF kodi. Lai to izdarītu, ielādējiet ReceiveDemo_Advanced skice no Izvēlne -> Piemēri -> RCSwitch mapi un nomainiet šo rindu no 0

mySwitch.enableReict (0); // Uztvērējs ar pārtraukumu 0 => tas ir, 2. piespraude

līdz 2.

mySwitch.enableReict (2); // GPIO 2 / D4 uztvērējs.

Savienojiet uztvērēja moduli šādi. Skatoties uz uztvērēja paneļa priekšpusi (tas ir garāks no diviem, raidītājs ir kvadrātā) - puse, kurā ir ieslēgtas sastāvdaļas:

  • Galēji labējais ir GND. Pieslēdzieties GND uz NodeMCU plates.
  • Pa kreisi ir VCC. Izveidojiet savienojumu ar VIN NodeMCU plāksnē.
  • Divi vidējie tapas ir signāls. Pievienojiet vienu no tiem NodeMCU D4 (tie ir savienoti kopā, tāpēc nav svarīgi, kurš).
433 elektroinstalācija-1

Tagad augšupielādējiet modificēto ReceiveDemo_Advanced, un kad tas ir izdarīts, atveriet seriālo monitoru un sāciet nospiest tālvadības pults pogas. Nospiežot pogu, nokopējiet decimālo zīmi (ieskaitot bitu garumu), impulsa garumu un protokolu.

ekrāna RF šņaukšana

Pēc tam es atklāju, ka mans projektora ekrāns ir izmantots

  • UZKLĀŠANA: Saņemta 8694273 / 24bit; Impulsa garums: 355 vai 356; Protokols: 1
  • Ekrāns lejup: saņemts 8694276 / 24bit;Impulsa garums: 355 vai 356; Protokols: 1

Turpiniet tik daudz pogu, cik nepieciešams.

Raidītāja pārbaude

Tālāk mēs mēģināsim nosūtīt kodus, izmantojot raidītāju. Vada raidītāja moduli (kvadrātveida) šādi. Esiet piesardzīgs: šo tagu marķēšana ir šausmīga.

VCC tapa faktiski atrodas vidū, nevis kreisajā pusē. Izdomājot, es iznīcināju vienu moduli. Tas, kas saka “ATAD”, patiesībā ir “DATI”, rakstīts atpakaļgaitā. Atkal dati nonāk D4, VCC - VIN un GND - GND (noņemiet uztvērēja moduli, jums tas vairs nav nepieciešams).

433 elektroinstalācija-2

Ielādējiet Piemēri -> RCSwitch -> TypeB_WithRotaryOrSlidingSwitchesun atkal mainiet datu tapu:

mySwitch.enableTransmit (10);

uz

mySwitch.enableTransmit (2);

Ņemiet vērā, ka bibliotēkā ir iekļauti dažādi piemēri, un kurš no tiem darbojas jums, būs atkarīgs no precīzā slēdža veida, kāds jums ir. A tipa (pagrieziena slēdži) un B (ciparripas vai slīdņi) ir visizplatītākās - skatiet attēlus RCSwitch lapā. B tipa kontaktligzdas ieslēgšana un izslēgšana ir tikpat vienkārša kā:

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

kur 1 ir kanāla ID (augšējais disks) un 4 ir kontaktligzdas ID (apakšējais disks). Tie bija rakstīti ar romiešu cipariem manās kontaktligzdās. Tāpēc var adresēt ne vairāk kā 16 atsevišķas kontaktligzdas, lai gan vairākas kontaktligzdas var izmantot vienu un to pašu adresi, ja jums vienlaikus ir vairākas ierīces.

Tomēr mana projektora ekrāns bija nedaudz atšķirīgs - tas izmantoja atšķirīgu impulsa garumu. Tātad, lai tos operētu, darbojās šādi. Ņemiet vērā, ka jūs varat arī definēt citu protokolu, ja tas ir nepieciešams jūsu tālvadībai, BET noteikti definējiet protokolu PIRMS impulsa garuma. Mainot protokolu, impulsa garums tiek pārrakstīts.

// Ņemiet vērā, ka manā ekrānā faktiski ir nepieciešami divi taustiņu nospiešanas (nevis ilgs nospiešana, bet divi fiziski nospiež), tāpēc es nedaudz kavējos, pēc tam atkal nosūtot to pašu signālu anulēts screenUp () { mySwitch.setPulseLength (358); mySwitch.send (8694273,24); // (decimālais kods, bitu skaits) kavēšanās (2000); mySwitch.send (8694273,24); } void screenDown () {mySwitch.setPulseLength (358); mySwitch.send (8694276,24); kavēšanās (2000); mySwitch.send (8694276,24); }

Pirms pāriet uz nākamo darbību, vispirms pārbaudiet, vai visi jūsu kodi darbojas.

Kontrolēšana caur MQTT

Atveriet skici, kuru lejupielādējāt no Github ar nosaukumu mqtt_rcswitch.inoun sāciet, mainot mājas SSID un paroli. Pēc tam mainiet kanāla nosaukumu, ja vēlaties, un iestatiet MQTT serveri. Ja jums vēl nav MQTT servera, kas darbojas jūsu OpenHAB instalācijā, izlasiet mūsu OpenHAB rokasgrāmatas iesācējiem 2. daļu OpenHAB rokasgrāmata iesācējiem, 2. daļa: ZWave, MQTT, noteikumi un diagrammasAtvērtā koda mājas automatizācijas programmatūra OpenHAB ievērojami pārsniedz citu tirgū esošo mājas automatizācijas sistēmu iespējas - taču to nav viegli iestatīt. Faktiski tas var būt pilnīgi nomākts. Lasīt vairāk . Ņemiet vērā, ka mans kods ir paredzēts B tipa (rotācijas slēdža) ligzdām, lai gan jūs to varētu viegli modificēt arī DIP slēdžiem.

Vissvarīgākā koda daļa ir Ziņojums saņemts () funkcija, kas reaģē uz ienākošajām MQTT komandām. Šajā funkcijā mēs vispirms pārbaudām galveno atslēgvārdu - es izvēlējos “slēdzis” un “ekrāns”. Pēc “slēdža” mēs analizējam kanāla un spraudņa ID; pēc tam pārbaudiet, vai komandai nav kravas kravas.

void messageRe Received (virknes tēma, virknes lietderīgā slodze, char * baiti, neparakstīts int garums) {if (topic.indexOf ("switch")> = 0) {// pārslēdziet vadību, parsējiet kanālu un pievienojiet ID int channel = getValue (tēma, '/', 3) .toInt (); int plug = getValue (temats, '/', 4) .toInt (); if (payload == "on") {mySwitch.switchOn (kanāls, spraudnis); } cits {mySwitch.switchOff (kanāls, spraudnis); }} cits if (topic.indexOf ("screen")> = 0) {// ekrāna vadība if (payload == "up") {screenUp (); } cits, ja (payload == "down") {screenDown (); }} / * pievienojiet citu, ja šeit klausāties vairāk komandu (vai vienkārši modificējiet iepriekšminēto, ja nevēlaties ekrānu) * / }

Pēc noklusējuma darbojas šādas MQTT komandas:

viesistaba / vadība / slēdzis / X / Y (kur X ir kanāls, un Y ir spraudņa ID; ar ziņojuma pamattekstu ieslēgtu vai izslēgtu)
viesistaba / vadības pults / ekrāns (ar ziņojuma korpusu uz augšu vai uz leju)

Izmantojiet komandrindu vai GUI MQTT klientu, lai pārbaudītu savas ierīces pirms pievienošanas OpenHAB.

Notiek pievienošana OpenHAB

Kā pēdējais solis mums vienkārši jāveido daži elementi šiem slēdžiem OpenHAB. Pagaidām esmu definējis šādus vienumus, bet jums vajadzētu spēt izdomāt, kā pievienot vairāk:

/ * RF433mHz ierīces * / Pārslēgt CinemaScreen "Screen" (Cinema) {mqtt = "> [starpnieks: viesistaba / vadība / ekrāns: komanda: ON: uz leju],> [brokeris: livingroom / control / screen: komanda: OFF: up]"} Switch switch41 "Switch41" (Cinema) {mqtt = "> [starpnieks: dzīvojamā istaba / vadība / slēdzis / 4/1: komanda: ON: ieslēgta],> [brokeris: livingroom / control / switch / 4/1: command: OFF: izslēgts] "} Switch switch42 "Switch42" (Cinema) {mqtt = "> [starpnieks: dzīvojamā istaba / vadība / slēdzis / 4/2: komanda: ON: ieslēgta],> [brokeris: livingroom / control / switch / 4/2: command: OFF: izslēgts] "}

Tagad jums vajadzētu būt iespējai kontrolēt RF ierīces no OpenHAB! Viena lieta, kas mani patīkami pārsteidza, bija diapazons - viens mezgls spēja aptvert manu māju lielāko daļu. Protams, jūs varat pievienot vēl vienu mezglu, klausoties to pašu kanālu, kurš vienkārši atkārto tās pašas komandas, ja jums nepieciešams papildu pārklājums.

Vienīgais ierobežojums, kas jāpatur prātā, ir tas, ka pašas kontaktligzdas nevar ziņot par savu statusu, tāpēc, ja jūs izmantojiet oriģinālo tālvadības pulti, kontrolējiet kontaktligzdas statusu, iespējams, tajā precīzi neatspoguļojot OpenHAB. Neatkarīgi no tā, vai izmantojat tikai OpenHAB saskarni, jums būs labi.

Jautājumi vai problēmas? Pajautājiet komentāros, un es darīšu visu iespējamo, lai palīdzētu. Ja vēlaties uzlabot manu kodu, droši iesniedziet vilkšanas pieprasījumu.

Džeimsam ir mākslīgā intelekta bakalaura grāds, un viņš ir sertificēts CompTIA A + un Network +. Viņš ir galvenais MakeUseOf izstrādātājs un brīvo laiku pavada, spēlējot VR peintbolu un galda spēles. Kopš mazotnes viņš būvēja datorus.