Reklama

Inteligentné napájacie zásuvky sú najjednoduchším spôsobom automatizácie vášho domu, ale pri každej zásuvke s pripojením Wi-Fi alebo ZWave približne 40 USD pravdepodobne nekúpite viac ako niekoľko.

Možno už máte nejaké lacné zásuvky na báze RF - druh, ktorý prichádza s vlastným diaľkovým ovládaním a na zadnej strane sú niektoré voliče kanálov a ID. Bohužiaľ nie sú inteligentné domáce centrá na trhu Bitka o inteligentné domáce uzly: Čo je tam a čo sa deje? Čítaj viac ktoré s nimi pracujú. Nebolo by skvelé, keby ste ich nejako prepojili so svojím inteligentným domácim systémom pre domácich majstrov? No, v skutočnosti - celkom ľahko - asi 10 dolárov na diely.

S trochou práce môžete integrovať aj nejaký iný vzdialený hardvér založený na báze RF táto obrazovka kina s rozpočtom.

Čo potrebuješ:

  • Doska ESP8266 NodeMCU v12E dev (Nezáleží na presnom modeli, mal by byť v poriadku aj v1 alebo v3). Dôvod, prečo používame dosku NodeMCU, je ten, že chceme ľahké pripojenie Wi-Fi neskôr. Odkaz je pre balík 2, ktorý vyjde na 7 dolárov.
  • instagram viewer
  • Balenie Vysielač a prijímač 433 MHz (okolo 3 USD).
  • Knižnice RCSwitch a MQTT a náš kód - všetko k dispozícii na stiahnutie v službe Github.
  • Server MQTT, lokálny alebo vzdialený.
  • Niektoré zásuvky riadené RF fungujúce v pásme 433 mHz (malo by sa to povedať na diaľkovom ovládači). Ja som si kúpil baňu od Maplina ako balíček 3 za asi 20 libier (25,89 dolárov).

Ak ste prvýkrát programovali dosku NodeMCU, musíte si za ňu stiahnuť doplnky Arduino: postupujte spolu s prvou časťou nášho Úvodný sprievodca Arduino Killer Zoznámte sa s Arduino Killer: ESP8266Čo keby som vám povedal, že existuje doska na vývojárov kompatibilná s Arduino so vstavanou sieťou Wi-Fi za menej ako 10 dolárov? No, existuje. Čítaj viac pre čip NodeMCU / ESP8266. Budete tiež potrebovať Ovládače CH430. Môžeš nájsť tu podpísali ovládače systému MacOS CH430alebo Windows tu.

Použil som v1.6.5 Arduina, pretože čokoľvek vyššie predstavuje viac problémov, ako to rieši. Ak ste tak ešte neurobili, prejdite na nižšiu verziu.

Než budete pokračovať, budem predpokladať základnú úroveň vedomostí Programovanie Arduino Programovanie Arduino pre začiatočníkov: Výukový program pre projektové riadenie semaforovVytvorenie radiča semafora Arduino vám pomôže rozvíjať základné zručnosti v oblasti kódovania! Začíname. Čítaj viac , a že máte NodeMCU nastavenie v správcovi karty a dokážete správne nahrať nejaký demo kód. Do knižnice by ste mali pridať aj knižnice, ktoré sú súčasťou nášho sťahovania Arduino / knižnice zložky.

Ak už máte Knižnica PubSubClient alebo MQTT, zálohujte ho a odstráňte - ten, ktorý som prevzal do sťahovania, je jediný, kde som mohol spoľahlivo prijímať správy na NodeMCU, a vyskúšal som veľa!

RF sniffing (voliteľné)

Tento krok nie je potrebný, ak chcete ovládať iba zásuvky DIP-switch alebo zásuvky s voličom voľby - tie sú podporované po vybalení a bude potrebná minimálna úprava kódu (je to však zaujímavé urobiť najskôr, takže pochopíte, čo sa deje za scény).

Ak máte ďalšie diaľkové ovládače, ktoré by ste chceli skúsiť pridať, musíte najskôr „preniknúť“ prenášané RF kódy. Ak to chcete urobiť, načítajte ReceiveDemo_Advanced skica z Menu -> Príklady -> Prepínač RC a zmeňte nasledujúci riadok z 0

mySwitch.enableReceive (0); // Prijímač pri prerušení 0 => to je pin # 2

až 2.

mySwitch.enableReceive (2); // Prijímač na GPIO 2 / D4.

Zapojte modul prijímača nasledujúcim spôsobom. Pri pohľade na prednú stranu prijímacej dosky (je to dlhšie z týchto dvoch, vysielač je štvorcový) - strana so zapnutými komponentmi:

  • Úplne vpravo je GND. Pripojte sa k GND na doske NodeMCU.
  • Zľava je VCC. Pripojte sa k VIN na doske NodeMCU.
  • Signál sú stredné dva kolíky. Pripojte jeden k D4 na NodeMCU (sú spolu spojené, takže na tom nezáleží).
433 vedenie-1

Teraz nahrajte upravené ReceiveDemo_Advanceda po dokončení otvorte sériový monitor a stlačte tlačidlá na diaľkovom ovládači. Po stlačení tlačidla skopírujte desatinné miesto (vrátane dĺžky bitov), ​​dĺžku impulzu a protokol.

čuchanie obrazovky

Po vykonaní tohto postupu som zistil, že sa používa projektorová obrazovka

  • SCREEN UP: Prijaté 8694273 / 24bit; Dĺžka impulzu: 355 alebo 356; Protokol: 1
  • SCREEN DOWN: Prijaté 8694276 / 24bit;Dĺžka impulzu: 355 alebo 356; Protokol: 1

Pokračujte toľko tlačidiel, koľko potrebujete.

Testovanie vysielača

Ďalej sa pokúsime odoslať kódy pomocou vysielača. Pripojte modul vysielača (štvorcový) nasledujúcim spôsobom. Buďte opatrní: označenie týchto kolíkov je hrozné.

Kolík VCC je v skutočnosti v strede, nie na ľavej strane. Pri zisťovaní toho som zničil jeden modul. Tá vec, ktorá hovorí, že „ATAD“ je v skutočnosti „DATA“, hláskuje dozadu. Údaje opäť smerujú do D4, VCC do VIN a GND do GND (vyberte modul prijímača, ktorý už nepotrebujete).

433 vedenie-2

Načítať Príklady -> RCSwitch -> TypeB_WithRotaryOrSlidingSwitchesa znova zmeňte dátový pin:

mySwitch.enableTransmit (10);

na

mySwitch.enableTransmit (2);

Všimnite si, že v knižnici je zahrnutých množstvo príkladov a ktorý z nich bude pracovať pre vás, bude závisieť od presného typu prepínača, ktorý máte. Typ A (dip prepínače) a B (číselníky alebo posuvné prepínače) sú najbežnejšie - pozrite si obrázky na stránke Prepínač RCS. Pre typ B je zapnutie a vypnutie zásuvky také jednoduché ako:

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

kde 1 je ID kanála (horná voľba) a 4 je soket ID (dolná voľba). Boli napísané rímskymi číslicami na mojich zásuvkách. Preto je možné osloviť maximálne 16 samostatných soketov, aj keď viac soketov môže používať tú istú adresu, ak máte viac zariadení na zapnutie naraz.

Avšak obrazovka môjho projektora bola trochu iná - používala inú dĺžku impulzu. Aby sme ich mohli prevádzkovať, fungovalo toto. Všimnite si, že môžete definovať aj iný protokol, ak to vyžaduje váš diaľkový ovládač, ale uistite sa, že ste definovali protokol pred dĺžkou impulzu. Pri zmene protokolu sa prepíše dĺžka impulzu.

// Všimnite si, že moja obrazovka vyžaduje stlačenie tlačidla DVA (nie dlhé stlačenie, ale dve fyzické stlačenie) stlačí), takže trochu zdržiavam a potom znova vysielam ten istý signál, čím odpadá obrazovkaUp () { mySwitch.setPulseLength (358); mySwitch.send (8694273,24); // (desatinné číslo, počet bitov) oneskorenie (2000); mySwitch.send (8694273,24); } void screenDown () {mySwitch.setPulseLength (358); mySwitch.send (8694276,24); oneskorenie (2000); mySwitch.send (8694276,24); }

Skôr ako prejdete na ďalší krok, otestujte všetky svoje kódy.

Ovládanie cez MQTT

Otvorte skicu, ktorú ste prevzali z Githubu mqtt_rcswitch.inoa začnite úpravou sieťového SSID a hesla pre váš domov. Potom zmeňte názov kanála a nastavte server MQTT. Ak ešte nemáte nainštalovaný server MQTT pri inštalácii OpenHAB, prečítajte si časť 2 našej začiatočnej príručky pre OpenHAB Príručka pre začiatočníkov OpenHAB, časť 2: ZWave, MQTT, pravidlá a mapovanieOpenHAB, softvér pre domácu automatizáciu s otvoreným zdrojovým kódom, ďaleko prevyšuje možnosti ostatných systémov domácej automatizácie na trhu - nastavenie však nie je ľahké. V skutočnosti to môže byť úplne frustrujúce. Čítaj viac . Upozorňujeme, že môj kód je navrhnutý pre zásuvky typu B (otočný prepínač), aj keď ho môžete ľahko zmeniť aj pre prepínače DIP.

Najdôležitejšou časťou kódu je správa prijatá() funkcia, ktorá reaguje na prichádzajúce príkazy MQTT. V tejto funkcii najskôr zisťujeme hlavné kľúčové slovo - vybral som „prepínač“ a „obrazovka“. V prípade „prepínača“ potom analyzujeme ID kanála a konektora; potom skontrolujte príkaz pre užitočné telo.

void messageReceived (téma reťazca, užitočné zaťaženie reťazca, char * bajty, nepodpísaná int dĺžka) {if (topic.indexOf ("switch")> = 0) {// ovládanie prepínačov, analyzovanie kanála a ID kanála int channel = getValue (Téma, '/', 3) .toInt (); int plug = getValue (téma, '/', 4) .toInt (); if (payload == "on") {mySwitch.switchOn (kanál, zástrčka); } else {mySwitch.switchOff (channel, plug); }} else if (topic.indexOf ("screen")> = 0) {// ovládanie obrazovky if (užitočné zaťaženie == "up") {screenUp (); } else if (payload == "down") {screenDown (); }} / * pridajte ďalšie, ak chcete počúvať viac príkazov (alebo jednoducho zmeniť vyššie uvedený príkaz, ak nechcete obrazovku) * / }

V predvolenom nastavení potom fungujú nasledujúce príkazy MQTT:

obývacia izba / ovládanie / vypínač / X / Y (kde X je kanál a Y je ID zástrčky; s textom správy zapnutým alebo vypnutým)
obývacia izba / ovládanie / obrazovka (so správou nahor alebo nadol)

Pred pridaním do OpenHAB otestujte svoje zariadenia pomocou príkazového riadka alebo klienta GUI MQTT.

Pridáva sa do OpenHAB

Ako posledný krok musíme v OpenHAB vytvoriť iba niektoré položky pre tieto prepínače. Zatiaľ sme definovali nasledujúce položky, mali by ste však byť schopní zistiť, ako pridať viac:

/ * RF433mHz zariadenia * / Prepnite CinemaScreen "Screen" (Cinema) {mqtt = "> [maklér: obývacia izba / ovládanie / obrazovka: príkaz: ZAP: dole],> [maklér: obývacia izba / ovládanie / obrazovka: príkaz: VYPNUTÉ: hore]"}} Switch Switch41 "Switch41" (Cinema) {mqtt = "> [maklér: obývacia izba / ovládanie / spínač / 4/1: príkaz: ON: on],> [maklér: obývacia izba / ovládanie / spínač / 4/1: príkaz: OFF: off] "} Prepínač Switch42 "Switch42" (Cinema) {mqtt = "> [maklér: obývačka / ovládanie / prepínač / 4/2: príkaz: ON: on],> [maklér: obývačka / ovládanie / spínač / 4/2: príkaz: OFF: off] "}

Teraz by ste mali byť schopní ovládať svoje RF zariadenia z OpenHAB! Jedna vec, ktorú ma príjemne prekvapilo, bol dosah - jediný uzol dokázal pokryť väčšinu môjho domu. Môžete samozrejme pridať ďalší uzol počúvajúci ten istý kanál, ktorý jednoducho opakuje rovnaké príkazy, ak potrebujete ďalšie pokrytie.

Jediným obmedzením, ktoré treba mať na pamäti, je to, že samotné zásuvky nemôžu oznámiť svoj stav, takže ak áno Ak používate originálny diaľkový ovládač, ovládajte stav zásuvky, aby sa vo vnútri nemusel presne odrážať OpenHAB. Držte sa používania iba rozhrania OpenHAB a mali by ste byť v poriadku.

Otázky alebo problémy? Spýtajte sa na komentáre a ja sa snažím čo najviac pomôcť. Ak by ste chceli vylepšiť môj kód, pošlite žiadosť o stiahnutie.

James má bakalárske štúdium v ​​oblasti umelej inteligencie a je držiteľom certifikátu CompTIA A + a Network +. Je popredným vývojárom MakeUseOf a trávi svoj voľný čas hraním VR paintballu a spoločenských hier. Staval počítače od malička.