Hirdetés
Az intelligens tápcsatlakozók a legegyszerűbb módja az otthon automatizálásának, de mintegy 40 dollárért Wi-Fi vagy ZWave alapú aljzatért valószínűleg kevesebbet vásárol.
Lehet, hogy van már néhány olcsó RF alapú aljzat - azok, amelyek saját egyedi távirányítóval vannak ellátva, és a csatornák és az ID választógombok hátulján vannak. Sajnos nincsenek okos otthoni csomópontok a piacon Az intelligens otthoni csomók csata: mi van odakint és mi jön? Olvass tovább azokkal dolgozik. Nem lenne nagyszerű, ha ezeket valamilyen módon összekapcsolhatja a DIY intelligens otthoni rendszerével? Nos, valójában elég könnyen - körülbelül 10 dollárral részben.
Egy kicsit több munkával integrálhat más, egyedi, RF alapú távoli hardvert is, például ez a költségvetés mozi képernyő.
Amire szükséged van:
- ESP8266 NodeMCU v12E dev kártya (a pontos modellnek nincs jelentősége, a v1 vagy a v3 szintén finomnak kell lennie). A NodeMCU kártyát azért használjuk, mert később szeretnénk az egyszerű Wi-Fi kapcsolatot. A link egy 2 darab csomagra vonatkozik, amely mindegyik 7 dollárba kerül.
- Csomag 433Mhz adó és vevő (körülbelül 3 dollár).
- RCSwitch és MQTT könyvtárak, és a kódunk - mind letölthető a Github-ról.
- MQTT szerver, helyi vagy távoli.
- Néhány rádiófrekvenciás vezérlésű aljzat 433 mHz-es sávban működik (ezt a távirányítón kell mondani). Vettem az enyémet a Maplin-től, 3 darab csomagként, kb. 20 fontért (25,89 dollárért).
Ha ez az első alkalom, hogy a NodeMCU fórumot programozza, akkor le kell töltenie az Arduino plugin-eket: kövesse a Arduino Killer bevezető útmutató Ismerje meg az Arduino gyilkosát: ESP8266Mi lenne, ha azt mondanám neked, hogy van egy Arduino-kompatibilis fejlesztődeszka beépített Wi-Fi-vel kevesebb, mint 10 dollárért? Nos, van. Olvass tovább a NodeMCU / ESP8266 chipre. Szüksége lesz rá CH430 illesztőprogramok. Megtalálhatod aláírt macOS CH430 illesztőprogramok ittvagy Windows itt.
Az Arduino v1.6.5 verzióját használtam, mert bármi magasabb is több problémát vet fel, mint megoldja. Leminősítés, ha még nem tette meg.
Mielőtt folytatnád, alapvető ismereteket fogok feltételezni róla Arduino programozás Arduino programozás kezdőknek: Útvilágítás-ellenőrző projekt bemutatójaAz Arduino lámpák vezérlőjének felépítése elősegíti az alapvető kódolási készségek fejlesztését! Kezdjük el. Olvass tovább , és hogy rendelkezik a NodeMCU beállításokkal a fórumkezelőben, és képes feltölteni néhány demo kódot. A letöltésünkhöz tartozó könyvtárakat hozzá kellett volna adnia a Arduino / könyvtárak mappába.
Ha van ilyen PubSubClient vagy MQTT könyvtár, készítsen biztonsági másolatot, és távolítsa el - a letöltésbe csak az egyik adtam megbízható üzeneteket a NodeMCU-n, és megpróbáltam nagyon!
RF szippantás (opcionális)
Erre a lépésre nincs szükség, ha csak a DIP-kapcsoló vagy a tárcsázó választó csatlakozóaljzatát kívánja vezérelni - ezek a dobozból támogatottak, és minimális kódmódosításra lesz szükség (ezt még mindig érdekes elvégezni, bárhogy megérti, mi folyik a jelenetek).
Ha vannak más rádiófrekvenciás távirányítók, amelyeket meg szeretne próbálni, akkor először „meg kell szimatolnia” az átvitelt az RF-kódokról. Ehhez töltse fel a ReceiveDemo_Advanced vázlat a Menü -> Példák -> RCSwitch mappába, és változtassa meg a következő sort 0-ról
mySwitch.enableReict (0); // A vevő megszakításkor 0 => vagyis a 2. tű
2-ig.
mySwitch.enableReict (2); // Vevő a GPIO 2 / D4-en.
Vezesse be a vevő modult az alábbiak szerint. A vevőegység elülső oldalára nézve (ez a kettő közül a hosszabb, az adó négyszög alakú) - az oldalon, ahol az alkatrészek vannak:
- A szélsőjobb a GND. Csatlakozzon a GND-hez a NodeMCU táblán.
- A bal bal oldalon van a VCC. Csatlakoztassa a VIN-hez a NodeMCU táblán.
- A középső két csap a jel. Bármelyiket csatlakoztassa a D4-hez a NodeMCU-n (össze vannak kötve, tehát nem számít, melyik).

Most töltse fel a módosított ReceiveDemo_Advanced, és amikor elkészült, nyissa fel a soros monitort, és kezdje el megnyomni a távirányítón lévő gombokat. Egy gombnyomással másolja ki a tizedesjegyet (beleértve a bithosszot), az impulzushosszt és a protokollt.

Ezt követően megállapítottam, hogy a projektor képernyője használ
- CSATLAKOZÁS: Fogadott 8694273 / 24bit; Impulzus hossza: 355 vagy 356; Jegyzőkönyv: 1
- LEJÁTSZÓ LE: Fogadott 8694276 / 24bit;Impulzus hossza: 355 vagy 356; Jegyzőkönyv: 1
Folytasson annyi gombot, amennyire szüksége van.
Az adó tesztelése
Ezután megpróbáljuk kódokat küldeni az adó segítségével. Vezesse be az adóegységet (a négyzet alakú) az alábbiak szerint. Legyen óvatos: ezeket a csapokat címkézés szörnyű.
A VCC csap valójában középen van, nem a bal oldalon. Elpusztítottam egy modult a kitalálás során. Az a dolog, amely azt mondja, hogy „ATAD”, valójában „ADAT”, visszafelé írt. Az adatok ismét a D4-re, a VCC-ről a VIN-re és a GND-re a GND-re kerülnek (távolítsa el a vevő modult, nincs rá többé szüksége).

Töltse fel a Példák -> RCSwitch -> TypeB_WithRotaryOrSlidingSwitchesés megint meg kell változtatni az adatcsapot:
mySwitch.enableTransmit (10);
nak nek
mySwitch.enableTransmit (2);
Ne feledje, hogy a könyvtár számos példát tartalmaz, és melyik működik az Ön számára, a használt kapcsoló pontos típusától függ. A leggyakoribb az A típusú (dip kapcsoló) és a B (tárcsák vagy csúszkák) - olvassa el az RCSwitch oldalon található képeket. B típusú esetén a foglalat be- és kikapcsolása olyan egyszerű, mint:
mySwitch.switchOn (1, 4); mySwitch.switchOff (1, 4);
ahol 1 az csatorna azonosítója (a felső tárcsa), és 4 az aljzat azonosítója (az alsó tárcsa). Ezeket rózsaszínű számokkal írták a foglalamon. Ezért legfeljebb 16 egyedi foglalat kezelhető, bár több foglalat is használhatja ugyanazt a címet, ha egyszerre több eszköz is bekapcsol.
A kivetítőm képernyője azonban kicsit más volt - eltérő impulzushosszt használt. Tehát ezek működtetéséhez a következők működtek. Megjegyzés: akkor is meghatározhat egy másik protokollt, ha a távvezérlőre szüksége van rá, de ellenőrizze, hogy az impulzus hossza előtt definiálja-e a protokollt. Az impulzus hossza felülíródik a protokoll megváltoztatásakor.
// Vegye figyelembe, hogy a képernyőn valójában KÉT gombnyomásra van szükség (nem hosszú, hanem két fizikai nyomásra) megnyomja), tehát egy kicsit késleltelek, majd ugyanazt a jelet ismét elküldöm érvénytelen screenUp () { mySwitch.setPulseLength (358); mySwitch.send (8694273,24); // (tizedes kód, bitszám) késés (2000); mySwitch.send (8694273,24); } void screenDown () {mySwitch.setPulseLength (358); mySwitch.send (8694276,24); késés (2000); mySwitch.send (8694276,24); }
Mielőtt továbblépne a következő lépésre, ellenőrizze az összes kód működését.
Vezérlés az MQTT-n keresztül
Nyissa meg a vázlatot, amelyet letöltött a Github nevű névről mqtt_rcswitch.ino, és kezdje meg a otthoni hálózati SSID és jelszó módosításával. Ezután változtassa meg a csatorna nevét, ha kívánja, és állítsa be az MQTT szervert. Ha még nem rendelkezik MQTT-kiszolgálóval az OpenHAB telepítésén, olvassa el az OpenHAB kezdő útmutatójának 2. részét OpenHAB kezdő útmutató, 2. rész: ZWave, MQTT, szabályok és diagramokAz OpenHAB, a nyílt forráskódú otthoni automatizálási szoftver messze meghaladja a piacon lévő más otthoni automatizálási rendszerek képességeit - de a telepítés nem könnyű. Valójában egyenesen frusztráló lehet. Olvass tovább . Vegye figyelembe, hogy a kódomat a B típusú (forgókapcsoló) aljzatokhoz tervezték, bár ezt a DIP kapcsolókhoz is könnyen módosíthatja.
A kód legfontosabb része a messageReceived () funkció, amely reagál a bejövő MQTT parancsokra. Ebben a funkcióban először ellenőrizzük a fő kulcsszót - választottam a „kapcsolót” és a „képernyőt”. A „kapcsoló” esetén ezután elemzzük meg a csatorna és a csatlakozó azonosítóját; majd ellenőrizze a hasznos teher testét a parancshoz.
érvénytelen üzenetKapott (karakterlánc téma, karakterlánc hasznos teher, char * bájt, aláíratlan int hossz) {if (topic.indexOf ("switch")> = 0) {// kapcsolóvezérlés, bontsa ki a csatornát és csatlakoztassa az id csatornát = getValue (Téma, '/', 3) .toInt (); int plug = getValue (téma, '/', 4) .toInt (); if (payload == "be") {mySwitch.switchOn (csatorna, csatlakozó); } else {mySwitch.switchOff (csatorna, csatlakozó); }} egyébként if (topic.indexOf ("screen")> = 0) {// képernyővezérlés if (payload == "up") {screenUp (); } egyébként if (payload == "le") {screenDown (); }} / * adjon hozzá még egy elemet, ha további parancsokat szeretne hallgatni (vagy csak módosítsa a fenti parancsot, ha nem akarja a képernyőt) * / }
Alapértelmezés szerint a következő MQTT parancsok működnek:
nappali / irányító / kapcsoló / X / Y (ahol X csatorna, Y Y csatlakozó azonosítója; üzenet törzsével be vagy ki)
nappali / irányító / képernyő (az üzenet törzsével felfelé vagy lefelé)
Használja a parancssort vagy a GUI MQTT klienst az eszközök teszteléséhez, mielőtt hozzáadná az OpenHAB-hoz.
Hozzáadás az OpenHAB-hoz
Utolsó lépésként el kell készíteni néhány elemet ezeknek a kapcsolóknak az OpenHAB-ban. Most a következő elemeket határoztam meg, de tudnod kell, hogy kitaláld, hogyan kell még többet hozzáadni:
/ * RF433mHz eszközök * / Kapcsolja be a CinemaScreen "Képernyőt" (Mozi) {mqtt = "> [bróker: nappali / irányító / képernyő: parancs: BE: le],> [bróker: nappali / irányító / képernyő: parancs: KI: fel]"} Switch kapcsoló41 "Switch41" (mozi) {mqtt = "> [bróker: nappali / irányító / kapcsoló / 4/1: parancs: BE: be],> [bróker: nappali / irányító / kapcsoló / 4/1: parancs: KI: ki]"} Switch kapcsoló42 "Switch42" (mozi) {mqtt = "> [bróker: nappali / irányító / kapcsoló / 4/2: parancs: BE: be],> [bróker: nappali / irányító / kapcsoló / 4/2: parancs: KI: ki]"}
Most már képes lesz vezérelni RF készülékeit az OpenHAB-ról! Egy dolog, amellyel kellemesen megleptem, a tartomány volt - egyetlen csomópont volt képes fedezni házam nagy részét. Természetesen hozzáadhat egy másik csomópontot is, miközben ugyanazt a csatornát hallgatja, amely egyszerűen megismétli ugyanazokat a parancsokat, ha további lefedettségre van szüksége.
Az egyetlen korlátozás, amelyet figyelembe kell venni, hogy az aljzatok maguk nem tudják jelenteni állapotát, tehát ha te használja az eredeti távvezérlőt, és ellenőrizheti, hogy a foglalat állapota nem pontosan tükröződik benne OpenHAB. Ragaszkodjon ahhoz, hogy csak az OpenHAB felületet használja, és jól kell lennie.
Kérdések vagy problémák? Kérdezd meg a megjegyzéseket, és mindent megteszek, hogy segítsek. Ha javítani szeretné a kódomat, nyugodtan küldjön behúzási kérelmet.
James rendelkezik mesterséges intelligencia BSc-vel, CompTIA A + és Network + tanúsítvánnyal rendelkezik. A MakeUseOf vezető fejlesztője, és szabadidejét VR paintballon és társasjátékokon játszik. Gyerekkora óta épít PC-ket.