reklama

Inteligentní napájecí zásuvky jsou nejjednodušší cestou k automatizaci vašeho domu, ale za přibližně 40 $ za soket Wi-Fi nebo ZWave pravděpodobně nebudete kupovat více než několik.

Možná už máte nějaké levné zásuvky založené na RF - ten typ, který přichází s jejich vlastním dálkovým ovládáním, a na zadní straně jsou některé voliče kanálů a ID. Bohužel nejsou chytré domácí uzly na trhu Battle of the Smart Home Hubs: Co je tam a co se děje? Přečtěte si více které s nimi pracují. Nebylo by skvělé, kdybyste je nějakým způsobem propojili se svým inteligentním domovským systémem pro kutily? No, ve skutečnosti - docela snadno - s částkami kolem 10 $.

S trochou další práce můžete také integrovat nějaký další zakázkový vzdálený hardware založený na RF Tato obrazovka kina rozpočtu.

Co potřebuješ:

  • Deska ESP8266 NodeMCU v12E dev (přesný model nezáleží, v1 nebo v3 by měly být také v pořádku). Důvod, proč používáme desku NodeMCU, je ten, že chceme snadné připojení Wi-Fi později. Odkaz je pro balíček 2, který vyjde na 7 $ každý.
  • instagram viewer
  • Balíček Vysílač a přijímač 433 MHz (kolem 3 $).
  • Knihovny RCSwitch a MQTT a náš kód - vše k dispozici ke stažení z Githubu.
  • Server MQTT, místní nebo vzdálený.
  • Některé RF řízené zásuvky běžící v pásmu 433 mHz (mělo by se říci na dálkovém ovládání). Koupil jsem si svůj od Maplin jako balíček 3 za asi 20 liber (25,89 $).

Pokud je to vaše první programování desky NodeMCU, budete si muset stáhnout Arduino pluginy: postupujte společně s první částí Úvodní příručka Arduina Killera Seznamte se s Arduino Killer: ESP8266Co kdybych ti řekl, že je tu deska pro Arduino kompatibilní s vestavěným Wi-Fi za méně než 10 $? No, je. Přečtěte si více pro čip NodeMCU / ESP8266. Budete také potřebovat Ovladače CH430. Můžeš najít podepsali zde ovladače MacOS CH430, nebo Windows zde.

Použil jsem v1.6.5 Arduina, protože cokoli vyšší přináší více problémů, než to řeší. Pokud jste tak již neučinili, downgradujte.

Než budete pokračovat, budu předpokládat základní úroveň znalostí Arduino programování Programování Arduino pro začátečníky: Projektová příručka k řízení semaforuSestavení řadiče semaforu Arduino vám pomůže rozvinout základní dovednosti kódování! Začínáme. Přečtěte si více a že máte nastavení NodeMCU ve správci desky a jste schopni správně nahrát nějaký demo kód. Knihovny obsažené v našem stahování byste také měli přidat do svého Arduino / knihovny složku.

Pokud již máte Knihovna PubSubClient nebo MQTT, zálohujte jej a odstraňte - ten, který jsem do stahování zahrnul, je jediný, kde jsem mohl spolehlivě přijímat zprávy na NodeMCU, a zkusil jsem mnoho!

RF sniffing (volitelné)

Tento krok není nutný, pokud chcete ovládat pouze zásuvky DIP-switch nebo konektory pro volbu voliče - ty jsou podporovány po vybalení a bude nutná minimální změna kódu (to je ale zajímavé udělat nejdřív, takže pochopíte, co se děje za scény).

Pokud máte jiné RF dálkové ovladače, které byste chtěli zkusit přidat, musíte nejprve „čichat“ vysílané RF kódy. Za tímto účelem nahrajte ReceiveDemo_Advanced skica z Nabídka -> Příklady -> RCSwitch a změňte následující řádek z 0

mySwitch.enableReceive (0); // Přijímač při přerušení 0 => to je pin # 2

na 2.

mySwitch.enableReceive (2); // Přijímač na GPIO 2 / D4.

Zapojte modul přijímače následujícím způsobem. Při pohledu na přední stranu přijímací desky (je to delší z těchto dvou, vysílač je čtvercový) - strana s komponenty na:

  • Zcela vpravo je GND. Připojte se k GND na desce NodeMCU.
  • Zcela vlevo je VCC. Připojte se k VIN na desce NodeMCU.
  • Signál je uprostřed dvou kolíků. Připojte jeden k D4 na NodeMCU (jsou spolu spojeny, takže na tom nezáleží).
433 zapojení-1

Nyní nahrajte upravené ReceiveDemo_Advanceda až bude hotovo, otevřete sériový monitor a začněte stisknout tlačítka na dálkovém ovladači. Po stisknutí tlačítka zkopírujte desetinné číslo (včetně bitové délky), délku pulzu a protokol.

obrazovka čichání

Poté, co jsem to udělal, jsem zjistil, že se používá obrazovka projektoru

  • SCREEN UP: Přijato 8694273 / 24bit; Délka pulsu: 355 nebo 356; Protokol: 1
  • SCREEN DOWN: Přijato 8694276 / 24bit;Délka pulsu: 355 nebo 356; Protokol: 1

Pokračujte na tolik tlačítek, kolik potřebujete.

Testování vysílače

Dále se pokusíme poslat kódy pomocí vysílače. Připojte modul vysílače (čtvercový) následujícím způsobem. Buďte opatrní: označení těchto kolíků je nebezpečné.

Kolík VCC je ve skutečnosti uprostřed, ne na levé straně. Zničil jsem jeden modul v procesu vymýšlení. Ta věc, která říká, že „ATAD“ je ve skutečnosti „DATA“, hláskovala dozadu. Data opět přejdou do D4, VCC do VIN a GND do GND (vyjměte přijímací modul, již jej již nepotřebujete).

433 zapojení-2

Načíst Příklady -> RCSwitch -> TypeB_WithRotaryOrSlidingSwitchesa znovu změňte datový pin:

mySwitch.enableTransmit (10);

na

mySwitch.enableTransmit (2);

V knihovně je zahrnuto několik příkladů a to, co pro vás bude fungovat, bude záviset na přesném typu přepínače, který máte. Typ A (dip přepínače) a B (číselníky nebo posuvníky) jsou nejčastější - viz obrázky na stránce RCSwitch. U typu B je zapnutí a vypnutí zásuvky stejně jednoduché jako:

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

kde 1 je ID kanálu (horní číselník) a 4 je ID soketu (spodní číselník). Ty byly napsány římskými číslicemi na mých zásuvkách. Je tedy možné oslovit maximálně 16 jednotlivých soketů, i když více soketů může používat stejnou adresu, pokud máte více zařízení k zapnutí najednou.

Obrazovka mého projektoru však byla trochu jiná - použila jinou délku pulzu. Abychom je mohli ovládat, fungovalo následující. Poznámka: Můžete také definovat jiný protokol, pokud to váš dálkový ovladač potřebuje, ALE Ujistěte se, že definujete protokol PŘED délkou impulzu. Při změně protokolu je délka pulsu přepsána.

// Všimněte si, že moje obrazovka skutečně vyžaduje stisknutí dvou tlačítek (ne dlouhého, ale dvou fyzických) stiskne), takže trochu zpožďuji a poté posílám stejný signál znovu neplatný screenUp () { mySwitch.setPulseLength (358); mySwitch.send (8694273,24); // (desetinné číslo, počet bitů) zpoždění (2000); mySwitch.send (8694273,24); } void screenDown () {mySwitch.setPulseLength (358); mySwitch.send (8694276,24); zpoždění (2000); mySwitch.send (8694276,24); }

Než přejdete k dalšímu kroku, vyzkoušejte nejprve všechny kódy, které fungují.

Ovládání přes MQTT

Otevřete skicu, kterou jste stáhli z Githubu mqtt_rcswitch.ino, a začněte úpravou síťového SSID a hesla pro váš domov. Poté změňte název kanálu, pokud si přejete, a nastavte server MQTT. Pokud ještě nemáte nainstalovaný server MQTT na vaší instalaci OpenHAB, přečtěte si část 2 naší příručky pro začátečníky OpenHAB Příručka OpenHAB pro začátečníky Část 2: ZWave, MQTT, pravidla a mapováníOpenHAB, software pro domácí automatizaci s otevřeným zdrojovým kódem, výrazně převyšuje možnosti ostatních systémů domácí automatizace na trhu - nastavení však není snadné. Ve skutečnosti to může být naprosto frustrující. Přečtěte si více . Mějte na paměti, že můj kód je určen pro zásuvky typu B (otočný přepínač), i když jej můžete snadno upravit i pro přepínače DIP.

Nejdůležitější součástí kódu je zpráva přijata() funkce, která reaguje na příchozí MQTT příkazy. V této funkci nejprve kontrolujeme hlavní klíčové slovo - vybral jsem „přepínač“ a „obrazovka“. V případě „přepínače“ pak analyzujeme kanál a ID konektoru; potom zkontrolujte příkaz užitečného obsahu.

void messageReceived (téma String, užitečné zatížení řetězce, char * bytes, unsigned int length) {if (topic.indexOf ("switch")> = 0) {// ovládání přepínače, analyzovat kanál a ID kanálu int kanál = getValue (téma, '/', 3) .toInt (); int plug = getValue (téma, '/', 4) .toInt (); if (payload == "on") {mySwitch.switchOn (kanál, plug); } else {mySwitch.switchOff (kanál, zástrčka); }} else if (topic.indexOf ("screen")> = 0) {// ovládání obrazovky if (payload == "up") {screenUp (); } else if (payload == "down") {screenDown (); }} / * přidejte další, pokud chcete poslouchat další příkazy (nebo jednoduše upravte výše uvedený příkaz, pokud nechcete obrazovku) * / }

Ve výchozím nastavení fungují následující příkazy MQTT:

obývací pokoj / ovládání / spínač / X / Y (kde X je kanál a Y je ID zástrčky; s tělem zprávy zapnuto nebo vypnuto)
obývací pokoj / ovládání / obrazovka (s tělem zprávy nahoru nebo dolů)

Před přidáním do OpenHAB otestujte svá zařízení pomocí příkazového řádku nebo klienta GUI MQTT.

Přidání do OpenHAB

Jako poslední krok musíme v OpenHAB vytvořit pouze některé položky pro tyto přepínače. Prozatím jsem definoval následující položky, ale měli byste být schopni zjistit, jak přidat další:

/ * RF433mHz zařízení * / Přepnout CinemaScreen "Screen" (Cinema) {mqtt = "> [makléř: obývací pokoj / ovládání / obrazovka: příkaz: ON: dolů],> [makléř: obývací pokoj / ovládání / obrazovka: příkaz: OFF: nahoru]"} Switch Switch41 "Switch41" (Cinema) {mqtt = "> [makléř: obývací pokoj / ovládání / spínač / 4/1: příkaz: ON: on],> [makléř: obývací pokoj / ovládání / spínač / 4/1: příkaz: OFF: vypnuto]"} Switch Switch42 "Switch42" (Cinema) {mqtt = "> [makléř: obývací pokoj / ovládání / spínač / 4/2: příkaz: ON: on],> [makléř: obývací pokoj / ovládání / spínač / 4/2: příkaz: OFF: vypnuto]"}

Nyní byste měli být schopni ovládat vaše RF zařízení z OpenHAB! Jedna věc, kterou mě příjemně překvapilo, byl dosah - jediný uzel dokázal pokrýt většinu mého domu. Můžete samozřejmě přidat další uzel, poslouchající stejný kanál, který jednoduše opakuje stejné příkazy, pokud potřebujete další pokrytí.

Jediným omezením, které je třeba mít na paměti, je to, že samotné zásuvky nemohou nahlásit svůj stav, takže pokud ano používat původní dálkové ovládání, ovládání stavu soketu nemusí být přesně odráží uvnitř OpenHAB. Držte se pouze rozhraní OpenHAB a měli byste být v pořádku.

Dotazy nebo problémy? Zeptejte se v komentářích a udělám vše, co bude v mých silách. Pokud byste chtěli vylepšit můj kód, pošlete žádost o vyžádání.

James má bakalářský titul v oboru umělé inteligence a je držitelem certifikátu CompTIA A + a Network +. Je hlavním vývojářem MakeUseOf a tráví svůj volný čas hraním VR paintballu a deskových her. Staví počítače od dětství.