Cuprins:

Sistem puternic de automatizare la domiciliu autonom - Pi, Sonoff, ESP8266 și Node-Red: 9 pași (cu imagini)
Sistem puternic de automatizare la domiciliu autonom - Pi, Sonoff, ESP8266 și Node-Red: 9 pași (cu imagini)

Video: Sistem puternic de automatizare la domiciliu autonom - Pi, Sonoff, ESP8266 și Node-Red: 9 pași (cu imagini)

Video: Sistem puternic de automatizare la domiciliu autonom - Pi, Sonoff, ESP8266 și Node-Red: 9 pași (cu imagini)
Video: The Choice is Ours (2016) Official Full Version 2024, Noiembrie
Anonim
Sistem puternic de automatizare la domiciliu autonom - Pi, Sonoff, ESP8266 și Node-Red
Sistem puternic de automatizare la domiciliu autonom - Pi, Sonoff, ESP8266 și Node-Red

Acest ghid ar trebui să vă conducă la prima bază unde puteți porni / opri un bec sau un aparat prin orice dispozitiv care se poate conecta la rețeaua dvs. locală și cu o interfață web personalizabilă excelentă. Domeniul de aplicare pentru extinderea / adăugarea funcțiilor este vast, inclusiv trimiterea de e-mailuri, mesaje twitter, senzori de citire (de exemplu, temperatura). Puteți seta cu ușurință reguli de ex. - dacă temperatura este sub 15C la 23:00, porniți pătura electrică timp de 30 de minute. Sistemul folosește protocolul MQTT cu TCP, care este considerabil mai fiabil decât UDP - care este surprinzător folosit de unele dispozitive comerciale de automatizare a casei. Odată ce s-a terminat munca grea de configurare a sistemului, descrisă aici, distracția poate începe. Node Red oferă o interfață de utilizator fantastică, intuitivă, rapidă și ușor de configurat și oferă o capacitate uimitoare.

Rezultatul este un sistem puternic de automatizare a locuinței, care este pe deplin sub controlul propriu și se află în întregime într-o rețea locală. Multe dintre sistemele afișate pe Instructables funcționează cu servere bazate pe cloud și, prin urmare, prezintă un risc de securitate și pot necesita abonament. Acestea sunt mai ușor de configurat, dar prezintă un risc de securitate mai mare și un cost potențial mai ridicat. Ar trebui să adaug că se poate configura un VPN (rețea privată virtuală) pe Pi pentru a permite conexiunea securizată la rețeaua / sistemul de acasă dacă accesul din exterior ar fi util (Google Pi OpenVPN pentru instrucțiuni).

Acest sistem necesită reprogramarea dispozitivelor Sonoff cu un sistem open source excelent numit Sonoff-Tasmoda. Acest lucru se poate face folosind o configurare specială Arduino și un convertor USB în serie. Dispozitivele Sonoff utilizează cipul Wi-Fi ESP8266, astfel încât să vă puteți crea propriile dispozitive utilizând module ESP8266 sau să le potriviți în alte elemente pentru a oferi conectivitate wireless.

Cea mai mare sarcină este configurarea unui Raspberry Pi ca hub. Acesta rulează brokerul MQTT (sau serverul) care gestionează comunicarea cu dispozitivele conectate. Pi rulează, de asemenea, un sistem numit Node-Red, care poate intercepta mesaje și date și comenzi de ieșire - cum ar fi când să porniți pătura electrică. Node-Red oferă, de asemenea, o interfață pentru a servi pagina web pe care vă puteți conecta prin smartphone / tabletă / PC / laptop, pentru a vedea ce se întâmplă și pentru a permite comutarea manuală a luminilor și așa mai departe.

Scopul meu cu acest instructable este de a oferi fiecărui pas suficient de detaliat încât un novice să poată funcționa sistemul.

Pașii sunt:

  • Încărcați un Pi cu Rasbian Stretch
  • Actualizați și adăugați caracteristici la Node-Red
  • Instalați brokerul Mosquitto MQTT
  • Configurați mediul Arduino pentru încărcarea firmware-ului Sonoff-Tasmota
  • Reprogramați un comutator Sonoff
  • Configurați interfața Node-Red
  • Testați totul funcționează.

Hardware de care veți avea nevoie:

  • Raspberry Pi și sursa de alimentare (și tastatura și monitorul pentru configurarea inițială) (modelul B utilizat aici)
  • Comutatorul Sonoff
  • Convertor serial USB
  • Opțional - placă de dezvoltare ESP, cum ar fi NodeMCU.

Experiența mea cu Raspberry Pi este că instalarea a ceva pare să implice mult mai multă durere decât s-ar putea imagina vreodată posibilă, cu lucruri care nu funcționează sau care se blochează pe un pas banal în care explicația ar fi putut fi mai bună. Forumurile nu primesc întotdeauna sfaturi care funcționează! Am găsit mai multe rute care pur și simplu nu funcționau dintr-un motiv sau altul. Aceasta a costat 3 zile! Apoi am șters totul și am început din nou și am terminat în mai puțin de o (lungă) zi. Totuși, aceasta a folosit-o pe Raspian Jessie mai în vârstă. După aceasta, am găsit o modalitate de a folosi versiunea curentă și recent lansată (Stretch) și am făcut totul din nou. Acest ghid permite copierea și lipirea instrucțiunilor în Pi. Deci ar trebui să fi terminat în câteva ore. Oricum, sper că acest lucru vă va face mai rapid pe curba de învățare și cu mult mai puțină durere. Crede-mă că merită pentru rezultatul final.

Pasul 1: Încărcați un Pi cu Rasbian Stretch

Acest lucru ar trebui să fie destul de simplu. Începeți cu un card SD de 8 GB sau 16 GB. Descărcați cea mai recentă versiune de la:

www.raspberrypi.org/downloads/

Firul principal de aici presupune că versiunea completă este încărcată. Cu toate acestea, puteți utiliza versiunea simplă pentru a economisi spațiu. Dacă utilizați Raspbian Stretch Lite, continuați acest pas și apoi treceți la Pasul 9 la final.

Dezarhivarea fișierului descărcat oferă un folder cu fișierul.img. 7Zip este recomandat pentru Windows (și The Unarchiver Mac). Imaginea trebuie gravată pe cardul SD - dar trebuie utilizat un program special, deoarece sistemul de fișiere nu este compatibil cu Windows. Software-ul recomandat se numește Etcher și poate fi descărcat de pe:

etcher.io/

Instrucțiunile pentru Etcher sunt pe site-ul lor web și cu greu ar putea fi mai simple. Selectați imaginea și unitatea și faceți clic pe Flash.

Acum, cu cardul nostru SD flash, putem pune Pi în funcțiune.

Dacă știți adresa IP pe care o utilizează Pi sau sunteți fericit să o găsiți conectându-vă la router, puteți evita nevoia de tastatură și monitorizare și puteți utiliza SSH imediat. Doar adăugați un fișier gol numit SSH pe cardul SD, introduceți, conectați-vă la Ethernet și porniți. În caz contrar, urmați ghidul de mai jos.

Conectați Pi la internet, ecran, mouse și tastatură și conectați-vă la alimentare. Primul lucru pe care îl vom face este să activăm SSH, astfel încât să putem realiza majoritatea setărilor din confort pe un computer. Desigur, se poate face direct, dar ajută foarte mult să poți urma acest ghid pe același dispozitiv ca cel care conduce Pi și să folosești copiere și lipire pentru majoritatea instrucțiunilor. De asemenea, în cazul meu, stația de lucru pentru computer este frumoasă și confortabilă, dar nu suficient de mare pentru un pi.

Există un ghid pentru o mare parte din munca unui videoclip YouTube. De aici am început. Puteți rula videoclipul alături de aceste instrucțiuni. Cu toate acestea, când am rulat din nou procesul în timp ce scria acest lucru, mi-a fost mai ușor să urmez instrucțiunile de aici. Există unele abateri semnificative. Există, de asemenea, câteva secțiuni în care am sfătuit să urmăriți videoclipul, mai degrabă decât să enumerați pașii aici. Cu toate acestea, aș recomanda să îl examinați pentru a înțelege MQTT, Node-Red și procesul larg de configurare. Videoclipul are o durată de 38 de minute, așa că fă-te confortabil. Videoclipul începe cu afișarea a ceea ce poate face Node Red, apoi acoperă instalarea și configurarea Pi, urmat de actualizarea Node Red și, în cele din urmă, de instalarea Mosquitto. Momentele cheie în cazul în care doriți să reveniți la o secțiune:

00:00 Introducere în video

03:00 Demonstrație Node Red

14:14 Importarea elementelor de bord în Node Red

21:05 Configurare inițială Pi, inclusiv SSH

23:35 Instalarea codului de suport Node Red

27:00 Introducere în MQTT

29:12 Instalare Mosquitto (MQTT) (Nota funcționează numai pentru Raspian Jessie)

33:00 Exemple de nod roșu

Voi lista comenzile cu caractere cursive aldine (mai degrabă decât să folosesc „”). Această formatare este ignorată atunci când le copiați și lipiți în Pi.

Introducerea în Node Red vă va oferi o idee despre ceea ce poate face sistemul și vă va oferi o imagine a locului în care vom ajunge.

Videoclipul YouTube este la:

Urmați procedura de instalare între 21:05 și 23:35. Rețineți că datele de conectare implicite sunt utilizator: pi și parolă: zmeură. Înainte de a reporni, găsiți adresa IP a pi. Fie faceți clic pe pictograma „săgeată sus + jos” din bara de sus a desktopului sau introduceți următoarea instrucțiune în fereastra terminal / terminal:

sudo ifconfig address

Apoi notați adresa IP după: inet addr:. Va avea forma 192.168.x.y

Rețineți această adresă și reporniți (introduceți: sudo shutdown –r acum)

Cheia în acest moment este că SSH a fost activat și se poate configura un link către Pi de pe un PC (Mac și Linux includ interfețe SSH). Un program bun pentru a face acest lucru este o descărcare gratuită numită PuTTY care poate fi folosită și ca interfață serială și poate face Telnet. Chit este disponibil de la:

www.chiark.greenend.org.uk/~sgtatham/putty…

Descărcați și instalați PuTTY.

Acum, cu repornirea Pi, porniți PuTTY și introduceți adresa IP menționată anterior. Vezi exemplul de mai jos:

Acum faceți clic pe Deschidere

După autentificare ca: introduceți pi

Apoi introduceți parola.

Acum urmați instrucțiunile de aici și, opțional, începeți videoclipul de la 23:35. În majoritatea cazurilor puteți copia și lipi. Evidențiați textul și utilizați ctrl + C pentru a copia. Apoi, faceți clic dreapta în MASTIC pentru a lipi. Uneori textul nu apare imediat, așa că așteptați câteva secunde. Dacă introduceți de două ori, utilizați backspace pentru a șterge a doua intrare. Apăsați Enter pentru a executa fiecare instrucțiune.

sudo raspi-update

Am primit o comandă care nu a fost găsită și am ignorat aceasta și următoarea instrucțiune de oprire / repornire:

sudo shutdown -r acum

sudo apt-get -y update

sudo apt-get -y upgrade

Aceasta durează ceva …

sudo apt-get autoremove

sudo apt-get -y update

sudo shutdown -r acum

În acest moment avem sistemul de operare Pi încărcat și actualizat, gata pentru următorul pas.

Pasul 2: Actualizați și adăugați caracteristici la Node-Red

Conexiunea PuTTY va fi pierdută la repornire la sfârșitul pasului anterior. Deci, închideți PuTTY și după ce ați așteptat pornirea Pi, conectați-vă din nou ca înainte.

Am trecut la o metodă mai simplă și mai fiabilă pentru a încărca Node-Red - urmând abordarea de la https://nodered.org/docs/hardware/raspberrypi. Acesta folosește un script și va instala sau actualiza Node-Red - deci abordarea este aceeași funcționând din versiunile complete sau simplificate ale Raspbian Stretch. Deci, introduceți:

bash <(curl -sL

Introduceți Y când vi se solicită (de două ori). Acest script încarcă, de asemenea, fișierele necesare pentru a activa pornirea automată a Node-Red.

Deci, în acest moment avem pi-ul nostru încărcat și actualizat și cu actualizările necesare pentru Node Red. Nu este rău să reporniți înainte de etapa următoare.

sudo shutdown -r acum

Pasul 3: Instalare Mosquitto MQTT

Dacă nu ați făcut deja acest lucru, merită să vizionați prezentarea video la MQTT pe videoclip de la ora 27:00.

Aici trebuie să luăm o cale diferită. Procedura prezentată în videoclip funcționează numai pentru versiunea mai veche Jessie a lui Raspian. Există o discuție pe site-ul mosquitto, dar nu se arată un rezultat clar și, prin urmare, va rămâne la un traseu mai simplu și mai sigur.

Deci conectați-vă utilizând PuTTY și introduceți următoarele:

sudo apt-get update

sudo apt-get install mosquitto mosquitto-clients

Da

sudo /etc/init.d/mosquitto stop

sudo /etc/init.d/mosquitto start

Ultimele două instrucțiuni se opresc și încep mosquitto și arată că brokerul nostru MQTT funcționează.

Pentru un test rapid, deschideți încă două sesiuni PuTTY și conectați-vă la fiecare.

Veți ști până acum că MQTT funcționează de pe dispozitiv și are nevoie de date pentru a se abona la un „subiect”. Brokerul va trimite orice date cu același „subiect”. Apoi, dispozitivul care dorește să trimită date / instrucțiuni îl publică brokerului folosind același „subiect”.

Deci, într-o sesiune PuTTY introduceți:

mosquitto_sub -d -t salut / lume

Aceasta este o instrucțiune de abonare la subiectul: salut / lume.

În cealaltă introduceți:

mosquitto_pub -d -t salut / lume -m "Bună ziua de la fereastra Terminal 2!"

Aceasta este o instrucțiune de publicare cu același subiect cu un mesaj. Textul: „Bună ziua de la fereastra 2 a terminalului!” ar trebui să apară acum în celălalt terminal.

Bravo să ajungi până aici. Acum avem Pi încărcat și actualizat cu actualizările necesare pentru Node-Red și cu brokerul de țânțari MQTT instalat și testat. De acum încolo viața devine mai ușoară un pic mai distractivă. Închideți cele două sesiuni PuTTY utilizate pentru testul MQTT.

Pasul 4: Configurarea interfeței roșie a nodului

Mai întâi trebuie să pornim Node Red. Introduceți instrucțiunea:

node-red-pi --max-old-space-size = 256

Așteptați să ruleze și vedeți textul „Fluxuri începute”.

Acum deschideți un browser, folosesc Chrome și introduceți adresa IP pi menționată anterior urmată de: 1880 adică ceva de genul 192.168.0.8:1880

Acum ar trebui să aveți pagina de programare Node Red vizualizată după cum urmează:

Acum puteți urmări exemplele Node Red începând cu ora 33:00 sau puteți trece direct la un pic de configurare suplimentară și încărcarea primului flux care va afișa linkul către MQTT și va fi gata să conducă comutatorul nostru.

Configurarea suplimentară necesară este adăugarea elementelor de bord care permit o interfață web.

Acestea sunt afișate în videoclip la 14:14.

Urmați instrucțiunile pentru a încărca nodul-roșu-tabloul de bord.

Acum putem să ne jucăm puțin și să arătăm MQTT funcționând și fiind condus de Node-Red. Acest lucru nu apare pe videoclip, dar este cheia acestui proiect. Puteți să urmați instrucțiunile mele și / sau să importați fluxurile din fișierul NRtest1.txt atașat.

Mai întâi adăugați un nod de intrare de intrare și un nod mqtt de ieșire și legați-le împreună.

Faceți dublu clic pe nodul de injectare (care inițial este etichetat cu marcaj de timp). În secțiunea Încărcare utilă folosiți două pentru a schimba în șir și introduceți: Bună ziua de la mine. Lăsați subiectul gol deoarece putem introduce acest lucru în nodul MQTT. Faceți clic pe Terminat

Acum faceți dublu clic pe nodul MQTT. Faceți clic pe pictograma creion din dreapta secțiunii Server. Aceasta deschide un dialog nou. Introduceți: localhost în secțiunea Server. Faceți clic pe Adăugare. Acum, înapoi în nodul Edit mqtt out, introduceți subiectul nostru în secțiunea Subiect: salut / lume. Setați QoS la 1. Faceți clic pe Terminat. Acum faceți clic pe Implementare. Ar trebui să vedeți un blob verde și „conectat” sub nodul mqtt.

Acum adăugați încă două noduri - input mqtt și output debug și conectați-le împreună. Acum faceți dublu clic pe nodul mqtt de intrare și introduceți hello / world în secțiunea subiect. Serverul ar trebui să afișeze deja localhost: 1883. Setați QoS la 1. Faceți clic pe Terminat. Apoi faceți clic pe Implementare și faceți clic pe fila de depanare din panoul din dreapta. Acum faceți clic pe pătratul gri din stânga nodului de injectare „Bună ziua de la mine”. Aceasta trimite sarcina utilă text brokerului MQTT cu subiectul salut / lume. Brokerul știe că nodul de intrare mqtt s-a abonat la același subiect și astfel transmite sarcina utilă. Nodul de intrare mqtt trimite apoi acest lucru la fila de depanare (RHS) și ar trebui să apară textul „Bună ziua de la mine”.

Acest lucru bifează o altă casetă, deoarece Node Red discută cu brokerul nostru MQTT. Rețineți că Node Red este doar un client pentru broker - precum dispozitivele Sonoff pe care le vom conecta mai târziu. Cu toate acestea, permite automatizarea sofisticată și oferă o interfață excelentă pentru utilizator.

Acum putem face câteva modificări mici și putem seta fluxurile pentru comutatorul nostru Sonoff.

Deci, ștergeți nodul de injectare de intrare (faceți clic pentru a evidenția și apăsați tasta Ștergere). Acum adăugați un comutator din secțiunea tabloului de bord și conectați-l la ieșirea mqtt. Comutator dublu clic. Faceți clic pe creionul din dreapta grupului. Intră în Nume: Lumina. Apoi faceți clic pe creionul din dreapta Tab și intrați în secțiunea Nume: Lounge. Faceți clic din nou pe Add / Update și Add / Update. Acum, înapoi în nodul comutatorului de editare, setați încărcările utile pornite și oprite. Utilizați twidlys pentru a selecta șirul și introduceți ON pentru sarcina utilă On și OFF pentru sarcina utilă OFF. Faceți clic pe Terminat

Acum mergeți la fiecare dintre nodurile mqtt și schimbați subiectul în cmnd / sonoff / POWER. Dacă copiați și lipiți, verificați dacă nu ați inclus un spațiu la final. Acesta este un subiect diferit și nu va funcționa cu Sonoff. Găsirea unui spațiu rătăcit poate dura aproximativ o oră - credeți-mă! De asemenea, am mers la tabloul de bord> Tema și am selectat: Întunecat. Faceți clic pe Implementare și selectați fila de depanare.

Acum deschideți o nouă sesiune de browser într-o fereastră nouă și dimensionați-o ca pe un telefon mobil peste sesiunea Node Red. Introduceți adresa: adresa IP Pi: 1880 / ui / # / 0, adică ceva de genul 192.168.0.8:1880/ui/#/0. Ar trebui să vedeți un ecran cu Lounge și Light și să comutați. Faceți clic pe comutator pornit și apoi oprit. Fereastra de depanare ar trebui să afișeze sarcinile utile ON și OFF. Acum, dacă doriți, conectați-vă și pe un telefon mobil. Rețineți că poziția comutatorului este sincronizată. Nu contează că Sonoff-ul nostru nu este încă conectat. Când este, abonându-se la Topic, va prelua mesajul / sarcina utilă și va acționa asupra acestuia.

Un ultim mic pas este de a face Node Red să pornească automat după pornirea Pi.

Node Red are un ghid la:

Cu toate acestea, fișierele necesare sunt deja încărcate, deci nu este necesară instalarea.

Pentru a activa apoi Node-RED să ruleze automat la fiecare boot și intră la blocări (deschide sesiunea PuTTY):

sudo systemctl activate nodered.service

Dacă vreodată trebuie să dezactivați acest lucru, introduceți:

sudo systemctl disable nodered.service

Acum opriți pi cu oprire sudo acum și scoateți alimentarea.

Acum, Pi-ul nostru este blocat și încărcat gata de acțiune. Avem computerul / telefonul mobil conectat la Node Red și vorbim cu serverul nostru MQTT. Acesta a fost un drum lung și merită o bătaie mare pe spate. Bine făcut. Am găsit următorul bit Arduino, mult mai ușor!

Pasul 5: Configurarea sistemului Arduino pentru reprogramarea dispozitivelor Sonoff

Toate informațiile pentru a face acest lucru sunt la Sonoff-Tasmota GitHub. Singura parte cu care am avut dificultăți a fost textul Topic - dar te-am determinat, cu viclenie, să introduceți acest lucru!

Accesați

Veți găsi instrucțiunile de configurare în fila Wiki în secțiunea Instrumente de încărcare:

În loc să parcurg fiecare pas, voi observa doar aspecte cheie pe care le-am simțit importante sau pe care le-am blocat.

Instrucțiunile sunt bune, dar necesită o atenție atentă la detalii. Am fost împiedicat de nevoia unui folder ESP8266 într-un folder care se afla într-un alt folder numit ESP8266 și, prin urmare, am pierdut două niveluri.

Am urmat recomandarea pentru o configurare Arduino complet separată. Am creat un nou folder numit ‘ArduinoSonoff’, care este separat de folderul meu Arduino existent. Configurarea este destul de avansată și, prin urmare, păstrarea separată este o idee foarte bună. Dacă aceasta este prima dvs. configurare Arduino, asigurați-vă că o instalați a doua oară într-un „Arduino” sau în alt folder pentru orice altă lucrare Arduino, inclusiv pentru lucrul pe ESP8266s.

Descărcați cel mai recent IDE Arduino de pe https://www.arduino.cc/en/Main/Software. Dezarhivați fișierul în noul dvs. folder.

Instrucțiunile includ descărcarea sistemului Sonoff-Tasmoda de pe https://github.com/arendst/Sonoff-Tasmota pagina principală prin: Clonare sau Descărcare> Descărcare ZIP. Dezarhivați fișierul în noul dvs. folder.

Urmați cu atenție instrucțiunile. Nu am făcut secțiunea Opțional: Pregătește-te pentru încărcarea OTA. Vom lăsa asta pentru o altă zi.

Acum porniți Arduino IDE (faceți dublu clic pe arduino.exe). Încărcați schița Sonoff-Tasmota prin Fișier> Sketchbook> sonoff. Nu este nevoie să faceți modificări. Toate setările sunt realizate printr-o conexiune serială după încărcarea firmware-ului. Acestea sunt stocate în EEPROM. Prin urmare, firmware-ul poate fi actualizat și toate setările reținute. Sunt lucruri destul de inteligente. Cu toate acestea, puteți evita necesitatea de a face câțiva pași aici accesând fișierul user-config.h și introducând SSID-ul WiFi și parola și MQTT_HOST (înlocuiți „domus1’– a doua referință, cu adresa IP Pi). Mai târziu, poate doriți să introduceți și un utilizator MQTT și o parolă. Înainte de descărcare, verificați setările plăcii din Instrumente. Acestea vor avea nevoie de câteva modificări pentru a corespunde cerințelor stabilite în Wiki. Acum faceți clic pe compilați (bifați pictograma). Ar trebui să compileze OK. Dacă nu, sau dacă setările de bord necesare nu sunt disponibile, reveniți înapoi și verificați fiecare pas al configurării.

Pasul 6: Reprogramarea unui comutator Sonoff

Acum suntem gata de descărcare. În această etapă se poate merge direct înainte și intermitent un comutator Sonoff sau se poate intermitea mai întâi un modul ESP8266. Am făcut-o pe aceasta din urmă, parțial pentru că switch-urile mele nu sosiseră încă (tocmai am sosit când scriu asta!), Dar și ca măsură de precauție, întrucât intermitentul comutatorului Sonoff este un pas într-un singur sens, deoarece firmware-ul original nu este disponibil public în măsura în care Sunt conștient. Am câteva plăci NodeMCU. Acestea sunt ușor de conectat, având convertorul USB la serie integrat. Cu toate acestea, metoda de resetare nodemcu nu funcționează cu acest sistem. Deci, lăsați Instrumente> Metodă de resetare setată la „ck”. Efectuați configurarea manuală normală a blițului ținând apăsat butonul Bliț (GPIO 0 la masă) în timp ce apăsați și eliberați Resetare (Resetare la masă). Nu sunt sigur dacă acest lucru are un timeout sau poate că nu am menținut GPIO 0 suficient de mult timp, dar am avut nevoie de mai multe încercări, inclusiv făcând acest lucru în timp ce ID-ul Arduino se compilează!

Dacă doriți să verificați răspunsurile - ieșirea releului este D6 pe plăcile NodeMCU. Pe ESP12, acesta este GPIO 12. Ieșirea LED este D7 (NodeMCU) sau GPIO 13 (ESP12).

Comutator Sonoff.

AVERTISMENT: Trebuie să spun „nu vă conectați la rețea în niciun caz în care carcasa este deschisă”. Rețineți că PCB-ul (cel puțin pe Sonoff Basic (comutator în linie) are doar distanțe de „izolare unică” între secțiunea de joasă tensiune și rețea. Deci, ar trebui să tratați orice parte a circuitului Sonoff ca tensiune de rețea. Tasmota GitHub arată conexiunea unui senzor de temperatură și umiditate la un Sonoff S20. Nu aș face acest lucru din cauza problemelor de izolare. sau sursa de alimentare cu pământ.

Comutatorul plug-in Sonoff S20 este un bun punct de plecare, deoarece nu are nevoie de cabluri de rețea. Acest lucru poate fi deschis prin îndepărtarea unui șurub (sub sigiliul de siguranță) și aprinderea carcasei deschise. Fotografia de mai jos arată unde sunt etichetele. Strângerea carcasei în aceste puncte ajută.

Convertor serial USB

Convertorul meu preferat este versiunea FTDI. Cu toate acestea, aceasta nu are capacitatea adecvată de a furniza nevoile Sonoff 3.3v. Specificația FTDI spune că maxim 50ma. Cea mai bună alternativă următoare este una care utilizează cipul CP2102. Cu toate acestea, aceasta are o limită de 100ma care încă nu este suficientă. În mod clar, mulți utilizează acest convertor direct, dar există și rapoarte despre eșecul încărcării. Aș limita timpul în care este conectat, deoarece se va încălzi sub sarcină. Faceți acest lucru pe propriul risc. Soluția ideală este să aveți și un regulator de 3.3v, de ex. un AMS1117 3.3. Am făcut un mic PCB pentru a permite acest lucru. Consultați Programator pentru dispozitivele Sonoff.

Secvența mea pentru programare este următoarea:

Deschideți IDE-ul Arduino.

Sub Instrumente verificați setările ca pe Wiki.

Efectuați modificările necesare la user_config.h. Am setat Wifi SSID și parola și adresa brokerului MQTT și detalii privind fusul orar / ora de vară.

Faceți clic pe „verificați” pentru a verifica dacă este compilat OK.

Conectați convertorul serial USB (pe cont propriu) la computer. Rețineți numărul portului.

Acum deconectați cablul serial USB de la PC și conectați-l la comutatorul Sonoff. Verificați dacă conexiunile la masă și 3v3 sunt potrivite (masa este conectată la planul de masă de pe placa Sonoff).

Țineți programatorul astfel încât contactele să fie sigure, în timp ce apăsați butonul.

Acum conectați cablul USB la computer, verificați dacă numărul portului este corect (în Instrumente), apoi faceți clic pe descărcare.

Continu să țin apăsat butonul pe tot parcursul programării, deoarece nu vreau să deranjez conexiunile.

Când ați terminat, ar trebui să vedeți un ecran ca mai jos:

Imagine
Imagine

Sonoff are nevoie de câteva informații pentru a se conecta la sistemul nostru: SSID și parolă WiFi din rețea locală și adresa IP Pi. Există mai multe modalități de a face acest lucru, dintre care una este modificarea fișierului config.ino așa cum s-a menționat anterior. Dacă aveți un smartphone, puteți (după reasamblarea comutatorului) apăsați butonul Sonoff de 4 ori destul de repede pentru al pune în modul web-server. LED-ul va clipi. A trebuit să încerc de mai multe ori ca acest lucru să funcționeze. Apoi, pe smartphone, căutați noua rețea Sonoff și conectați-vă. Va apărea o pagină web unde puteți seta datele necesare. Adresa IP Pi intră în numele gazdei. De asemenea, am schimbat al doilea SSID și parola cu ceva lung și practic inutilizabil.

Alternativ, poate fi configurat prin conexiunea serială imediat după încărcare. Deschideți monitorul serial Arduino (sub Instrumente).

Comenzi de intrat:

SSId-vă Wi-FiSSID

Parolați parola dvs. WiFi

MqttHost 192.168.x.y (adresa IP PI)

De asemenea, puteți introduce SSId1 și Password1 urmate de ceva lung și inutilizabil pentru a dezactiva efectiv acest lucru.

Acum puteți să selectați comutatorul Sonoff, să deschideți tabloul de bord Node-Red și Node-roșu și să faceți clic pe butonul Switch și să priviți fila de depanare care ar trebui să includă acum răspunsurile de la Sonoff. Deci, avem un alt pas major realizat - primul nostru comutator fiind condus de pe un PC / smartphone.

Până în prezent nu am menționat securitatea. Există posibilitatea de a utiliza comunicații criptate. Acest lucru este destul de complex de configurat și probabil mai adecvat acolo unde se folosește un broker bazat pe cloud. Există, de asemenea, opțiunea de a adăuga nume de utilizator și parole pentru toate dispozitivele conectate și interzicerea utilizatorilor anonimi. Acest lucru este destul de simplu de configurat. Și acum acum la Securitate.

Pasul 7: Securitate

MQTT permite nume de utilizator și parole pentru fiecare client. Acest lucru este ușor de configurat. Este probabil mai ușor să redenumiți mai întâi fiecare dispozitiv și apoi să le setați numele de utilizator și parolele. Acest lucru se poate face prin comenzi MQTT, iar Node-Red este probabil cel mai simplu mod de a le trimite. Mai întâi decideți asupra unei convenții de numire. O opțiune este de a baza numele pe locație și funcție. Apoi, veți dori să înregistrați numele de utilizator (parola) și parola împreună cu subiectul alternativ. Rețineți că există și o „opțiune de resetare” pentru a reseta setările Sonoff la descărcarea originală (consultați Utilizarea Wiki> Funcționalitatea butonului).

Porniți pi și, după câteva secunde, deschideți un browser pe Node-Red (adresa IP: 1880).

În Node-Red, configurați un nod de injectare și conectați-l la o ieșire mqtt și setați serverul mqtt la localhost. Lăsați subiectul, utilizatorul și parola necompletate, deoarece le vom seta în nodul de injectare. De asemenea, configurați un nod de intrare mqtt și conectați-l la un nod de depanare, astfel încât să putem vedea răspunsurile. Setați nota de intrare mqtt la localhost (ar trebui să fie deja setată) și introduceți + / + / + pentru subiect, astfel încât să capteze tot traficul.

Introduceți următoarea secvență de setări în nodul de injectare.

Mai întâi verificați conectivitatea cu

Subiect: cmnd / sonoff / Status

Mesaj: 6

faceți clic pe „Injectare o dată la pornire”. Implementați. Ar trebui să vedem depanarea care include 7 linii de date din stat / sonoff / STATUS6

Introduceți subiectul: cmnd / sonoff / Topic andMessage: loungelight. Implementați. Aceasta schimbă numele comutatorului de la sonoff la loungelight

Fila de depanare ar trebui să afișeze dispozitivul care repornește cu noul său nume / subiect

Subiect: cmnd / loungelight / MqttUser

Mesaj: loungelight

Faceți clic pe implementare. O depanare ar trebui văzută din stat / loungelight / RESULT cu {“MtqqUser”:”loungelight”}

Subiect: cmnd / loungelight / MqttPassword

Mesaj: loungelightPW (rețineți că este mai imaginativ decât acesta!)

Ștergeți fila de depanare și Deploy.

Un răspuns ar trebui văzut din stat / loungelight / RESULT cu {"MqttPassword": "loungelightPW"}

Acum introduceți NodeRed și NodeRedPW ca nume de utilizator și parolă în nodul mqtt out. Aceasta se face prin pictograma creion Server și fila de securitate din fereastra care se deschide. Acest lucru este copiat automat pe celelalte noduri MQTT.

Verifică din nou cu

Subiect: cmnd / loungelight / Status și mesaj: 6. Implementați.

Și că răspunsul este trimis.

Deci, în acest moment, am redenumit dispozitivul nostru Sonof, astfel încât acesta să asculte subiectele cmnd / loungelight / …… și se va conecta la secțiunea MQTT cu numele de utilizator loungelight și parola loungelightPW. De asemenea, am setat un nume de utilizator și o parolă pentru Node-Red.

În continuare trebuie să-i spunem serverului MQTT de țânțar să accepte numai clienții cu nume de utilizator și să enumere numele de utilizator și parolele care trebuie acceptate.

Procedura este:

  • Oprește țânțarul
  • Creați propriul fișier de configurare
  • Editați fișierul de configurare
  • Creați un fișier de parolă
  • Adăugați utilizatori / parole.

Deci, conectați-vă cu o nouă sesiune PuTTY și rulați următoarele comenzi:

sudo /etc/init.d/mosquitto stop

cd /etc/mosquitto/conf.d/

sudo nano mosquitto.conf Aceasta pornește editorul.

Adăugați linii:

allow_anonymous false

password_file /etc/mosquitto/conf.d/passwd

require_certificate false

Salvați și ieșiți (Ctrl + X), Y, introduceți.

sudo touch passwd Aceasta creează un fișier de parolă și următoarele instrucțiuni adaugă nume și parole.

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd loungelight loungelightPW

sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW

sudo /etc/init.d/mosquitto reporniți

Rețineți că, atunci când adăugați un dispozitiv nou, va trebui să introduceți utilizatorul și parola prin portul serial și să le adăugați la fișierul de parolă sau să schimbați temporar fișierul de configurare mosquitto și să comentați (adăugați # la începutul liniei) liniile "allow_anonymous false "și" password_file /etc/mosquitto/conf.d/passwd "și apoi resetați-le atunci când detaliile au fost trimise pe dispozitiv și adăugate la fișierul de parolă, așa cum se arată mai sus.

Am schimbat numele sonoff în loungelight și astfel actualizăm nodul de ieșire mqtt (conectat la comutator) pentru a utiliza subiectul cmnd / loungelight / POWER.

Faceți clic pe Implementare și verificați dacă nodurile mqtt arată „conectat”.

Apoi încercați butonul de comutare și căutați depanarea care arată comutatorul Sonoff răspunzând. Veți observa că dispozitivul arată schimbarea cu un subiect: stat / loungelight / POWER. Deci, acum schimbați nodul de intrare care a fost setat la cmnd / sonoff / POWER la stat / loungelight / POWER. Putem folosi această acoperire a unei lacune în funcționalitatea noastră. Sistemul așa cum a fost configurat inițial va fi sincronizat cu toți utilizatorii conectați, dar nu se va sincroniza cu modificările de comutare făcute prin apăsarea butonului de pe comutatorul Sonoff. Deci, conectați acum ieșirea nodului de intrare stat / loungelight / POWER mqtt la intrarea comutatorului (LHS). Acum faceți dublu clic pe comutator și debifați „dacă msg ajunge la intrare, treceți la ieșire”. Aceasta afișează câteva opțiuni noi - selectați „pictograma comutatorului arată starea intrării”. Implementați. Deci, acum avem o buclă bună de feedback. Poziția comutatorului de bord se va schimba întotdeauna când comutatorul Sonoff se schimbă, indiferent de locul în care a fost inițiată schimbarea.

Așadar, avem acum un sistem de automatizare a locuinței sigur și autonom, gata de extindere la orice doriți să facă. În secțiunea următoare voi acoperi unele dintre experimentările mele de până acum și provocările pe care intenționez să le abordez.

Pasul 8: Pașii inițiali pentru extindere

Am o altă placă de dezvoltare LED-uri pentru senzori Sonoff-Tasmota cu automatizare la domiciliu care poate fi instruită, care prezintă unele dintre capacitățile ulterioare ale firmware-ului Sonoff-Tasmota:

Măsurarea temperaturii și a umidității

Detectare intruși (intrare comutator)

Telecomandă IR (pentru televizoare etc.)

Șiruri LED - atât RGB, cât și NeoPixel (adresabile individual)

Senzori I2C

Pentru cele de mai sus, folosesc un ESP12F și un PCB personalizat. Un NodeMCU și o placă de analiză ar putea fi utilizate în mod egal. Acest lucru permite aceste funcții suplimentare fără a conecta un dispozitiv Sonoff și, prin urmare, este o abordare mult mai sigură. Cu temperatura de intrare am reușit să finalizez automatizarea păturii mele electrice.

Muzică și radio pe internet pot fi adăugate cu ușurință. Aceasta deschide opțiuni pentru ca anumite posturi sau albume să apară la anumite ore sau poate ca răspuns la detectarea unui vizitator (telefon). Această instruire asociată este la Player de muzică de înaltă calitate și Radio prin Internet cu Smartphone Control. Deoarece acest lucru este condus și de Node-RED, ar trebui să fie posibil să aveți mai multe sisteme de sunet și să utilizați comunicarea MQTT pentru a le conduce.

De asemenea, am explorat Node-Red, inclusiv trimiterea de e-mailuri și efectuarea de alerte vocale. Există, de asemenea, potențialul pentru sistem de a detecta când sunteți în / în afara - prin ping adresa telefonului mobil IP. Node-Red poate accesa, de asemenea, vremea și știrile - astfel încât să puteți adăuga informații, precum și automatiza.

Există câteva trucuri de învățat - dar acestea devin ușor a doua oară.

O altă cale este adăugarea unui afișaj la pi pentru a afișa tabloul de bord. Aceasta este „lucrare în curs” - sau cu alte cuvinte nu sunt prea fericit. Afișajul pe care l-am obținut este dificil de rotit în modul portret, iar browserul Chromium este dureros de lent. O alternativă ar fi să ridici o tabletă veche pe eBay și să o folosești. S-ar putea să încerc cu un Pi 2 și să văd dacă asta oferă o îmbunătățire suficientă (modelul B utilizat pentru această dezvoltare).

Sper că acest lucru te va începe și îți va face imaginația să bâzâie. Scopul potențial este imens. S-ar putea chiar modifica codul Sonoff pentru alți senzori, dacă este necesar.

În general, am fost uimit de ceea ce poate face acest sistem. Obiectivul meu inițial era să conduc doar un comutator de la un smartphone într-o manieră fiabilă printr-un sistem independent. Am avut viziuni despre nevoia de a gestiona servere și clienți și de a scrie html pentru o interfață cu utilizatorul. În cazul în care acest lucru a ajuns cu mult înaintea acestui lucru, cu o securitate mai mare, o fiabilitate excelentă, o interfață de utilizator fantastică, programare drag and drop și un potențial imens de extindere. Și toate acestea cu mult mai puțin efort.

Mike

Pasul 9: Addendum - Încărcare de la Raspbian Stretch Lite

Această opțiune evită bloatware-ul care vine cu versiunea completă Raspbian Stretch. Cele mai multe dintre acestea nu vor fi necesare atunci când se utilizează un Pi pentru automatizarea casei. Cu toate acestea, Node-Red trebuie să fie instalat.

Procedați ca la Pasul 1, dar folosind Raspbian Stretch Lite, mai degrabă decât Raspbian Stretch.

În loc de Pasul 2, faceți următoarele:

sudo apt -y install npm

npm -v ar trebui să revină: 1.4.21 sau o versiune ulterioară

sudo npm install -g n

sudo n 8.9.0

Acum putem folosi managerul de pachete nod pentru a instala Node-Red:

sudo npm install node-red --global --unsafe-perm

Acest lucru va da câteva mesaje de eroare din cauza unei adrese incorecte. Cu toate acestea, sistemul face o „compilare sursă” pentru a corecta această problemă. Dacă repetați instrucțiunile de mai sus (nu este necesar) erorile nu apar.

Acum avem Node-Red și pachetele sale de suport instalate și putem trece la Pasul 3, încărcând mosquitto.

Concurs wireless
Concurs wireless
Concurs wireless
Concurs wireless

Locul doi în concursul wireless

Recomandat: