de Amir Off

Cum să construiți cel mai robust și sigur sistem de automatizare a locuințelor

Cum sa construiti cel mai robust si sigur sistem de
Sursa imaginii: ID 50165322 © Bakhtiar Zein | Dreamstime.com

În acest articol, voi discuta despre modul în care am construit un sistem de automatizare inteligentă la domiciliu cu Angular și Node.js pe un Raspberry Pi fără să mă bazez pe servicii cloud externe.

Introducere

În ultimele zile, am petrecut câteva nopți proiectând și dezvoltând un sistem de automatizare a casei bazat pe JavaScript, folosind Angular și Node.js. Și, ca și în cazul oricărui alt proiect, planificarea a implicat unele cercetări aprofundate pe internet.

Sa dovedit că există o mulțime de pești în mare – o mulțime de soluții cu privire la modul de implementare a unui sistem de automatizare a casei. Unii oferă servicii plătite în „cloud”, iar alții explică cum să-ți construiești propriul folosind o tehnologie numită MQTT.

Niciuna dintre soluții nu a avut niciun sens pentru mine. Toate opțiunile erau fie scumpe, fie aveau implementări incomode sau chiar defecte de securitate.

Dar, înainte de a merge mai departe, să explicăm ce este MQTT. MQTT înseamnă MQ Telemetry Transport. Este un protocol de mesagerie de publicare / abonare, extrem de simplu și ușor. MQTT este conceput pentru dispozitive cu restricții și rețele cu lățime de bandă redusă, latență ridicată sau nesigure.

Principiile de proiectare sunt de a minimiza lățimea de bandă a rețelei și cerințele de resurse ale dispozitivului, încercând în același timp să asigure fiabilitatea și un anumit grad de asigurare a livrării. Aceste principii se dovedesc a crea protocolul ideal pentru lumea emergentă „de la mașină la mașină” (M2M) sau „Internetul obiectelor” al dispozitivelor conectate și pentru aplicații mobile în care lățimea de bandă și puterea bateriei sunt la un nivel superior.

1611973930 31 Cum sa construiti cel mai robust si sigur sistem de
MQTT Publish / Subscribe Architecture (Sursa imaginii: HiveMQ.com)

De ce nu m-am convins să folosesc MQTT sau cu oricare dintre soluțiile pe care le-am găsit pe internet? Două motive:

  1. În timp ce tehnologia MQTT pare foarte convenabilă pentru dispozitivele IoT, totuși am crezut că nu este necesară. Sistemul pe care îl voi arăta în următorul tutorial funcționează în același mediu în care trăiesc dispozitivele IoT. Toate beneficiile pe care le are MQTT pentru a fi „rapid” și pentru a avea „lățime de bandă redusă” devin irelevante. În plus, există toate problemele implicate în implementarea sa și toate costurile suplimentare cu pachetele npm suplimentare care sunt necesare pentru ca acesta să funcționeze într-un mediu JavaScript. În schimb, voi folosi doar biblioteci generice JavaScript și Node.js, nimic mai mult!
  2. Dar partea de securitate? Ei bine, nu sunt un mare fan al „cloud-ului” sau al cloud computing-ului în general. În unele cazuri poate fi foarte benefic, dar în majoritatea cazurilor este doar inutil. Gândiți-vă la asta: de ce ați avea un serviciu necesar pentru controlul aparatelor dvs. casnice care să fie găzduit în altă parte în „nor” și nu în propria rețea?
1611973931 184 Cum sa construiti cel mai robust si sigur sistem de
Comic de Geek și Poke

S-ar putea crede că „norul” oferă posibilitatea de a vă accesa aparatele electrocasnice de oriunde din lume prin internet.

Dar gândiți-vă la acest lucru: atunci când rețeaua dvs. de acasă nu are conexiune la internet, „norul” devine redundant. Mai important, puteți face ca sistemul dvs. de automatizare la domiciliu să fie accesibil de pe internet utilizând redirecționarea porturilor, chiar dacă este găzduit în rețeaua dvs. locală.

Atunci a „făcut clic” pentru mine și m-am gândit să găzduiesc întregul sistem pe un Raspberry Pi și să îl păstrez în rețeaua mea locală.

Cum sa construiti cel mai robust si sigur sistem de
A Raspberry Pi 3 Model B.

Tehnologia

  1. Software: Motivul pentru care am ales Angular și Node.js este că se bazează pe JavaScript și sunt deja familiarizat cu acesta. La urma urmei, am vrut să proiectez și să dezvolt o aplicație web progresivă care să comunice cu dispozitivele mele IoT prin HTTP – și JavaScript să ofere toate funcționalitățile de care aveam nevoie.
  2. Hardware: Sistemul funcționează cu microcontrolere precum Arduino Uno / Mega / Du / MKR1000, Adafruit HUZZAH CC3000 și orice alt microcontroler cu conexiune WiFi. Folosesc ESP8266 ca componentă de bază pentru sistemul meu de automatizare a casei. Este un microcip WiFi cu cost redus, cu capacitate de microcontroler. Are tot ce am nevoie și la un preț ieftin! În cele din urmă, trebuie să găzduim sistemul undeva în rețeaua noastră locală – deci ce este mai bun decât Raspberry Pi?

Acesta nu va fi un tutorial de codificare în care mă scufund adânc în codificare, deoarece acest proiect este open-source și voi publica totul pe GitHub. Voi demonstra doar cum să implementați propriul sistem de automatizare a casei și voi parcurge fiecare pas. Dacă sunteți dezvoltator, vă rog furculiţă depozitul și implică-te în îmbunătățirea acestuia.

Pregatirea

Estimez că va dura aproximativ 40 de minute pentru a finaliza toată această configurare, plus orice timp petrecut online căutând soluții pentru erori de instalare.

Ce e necesar?

Este necesar un Raspberry Pi. În exemplul meu, folosesc un Raspberry Pi 3, dar ar trebui să funcționeze cu majoritatea versiunilor. Componentele necesare sunt:

  1. Placă Raspberry Pi
  2. Card MicroSD (se recomandă o clasă 10 cu 16 GB sau mai mare)
  3. Un cititor de card USB MicroSD sau un adaptor de card SD
  4. Monitor HDMI și tastatură USB (necesară temporar doar pentru prima pornire a Raspberry Pi)
  5. Cablu Ethernet (nu este necesar pentru Raspberry Pi 3 deoarece are WiFi integrat)

Instalarea Raspbian OS pe Raspberry Pi

Raspbian este un sistem de operare gratuit bazat pe Debian Linux și este optimizat pentru Raspberry Pi.

Vă recomand versiunea „LITE” fără cap. Nu are niciun mediu desktop sau nicio interfață grafică pentru utilizator și este accesibil de la distanță de pe un computer sau dispozitiv din aceeași rețea prin SSH. Păstrăm lucrurile simple, deoarece acesta este singurul mod în care vom accesa Raspberry Pi. Versiunea LITE are toate funcționalitățile pe care le căutăm.

  1. Descarca cel mai recent Imagine Raspbian de pe site-ul oficial Raspberry Pi.
  2. Introduceți imaginea sistemului de operare Raspbian pe cardul SD cu Gravor sau orice alt software de înregistrare a imaginii din sistemul de operare la alegere.

Configurarea Raspberry Pi

Pentru a pregăti Raspberry Pi de pornire, trebuie să:

  1. Introduceți cardul MicroSD în Raspberry Pi
  2. Conectați tastatura USB și cablul HDMI
  3. Conectați cablul Ethernet sau dacă aveți un Raspberry Pi 3 și doriți să utilizați WiFi ar trebui să configurați rețeaua în secțiunea următoare

Când Raspberry Pi a terminat pornirea, conectați-vă folosind numele de utilizator pi și parola raspberry

Activarea WiFi și conectarea la rețea

Sari peste acest pas dacă ați ales să vă conectați cu un cablu Ethernet.

  1. Deschideți fișierul de configurare „wpa-supplicant”
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

2. adăugați următoarele în partea de jos a fișierului în timp ce adăugați numele și parola wifi:

network={
   ssid="your_networks_name"   psk="your_networks_password"
}

3. presa Ctrl+X pentru a salva codul. Confirmați cu Y apoi Enter

4. Reporniți Raspberry Pi cu următoarea comandă:

$ sudo reboot

Activarea SSH și schimbarea numelui de utilizator și a parolei

Acum că Raspberry Pi este conectat la internet, se recomandă să schimbați parola implicită.

  1. Deschideți instrumentul de configurare Raspberry Pi și faceți clic pe a doua opțiune „Modificare parolă utilizator” și urmați instrucțiunile
$ sudo raspi-config
1611973931 866 Cum sa construiti cel mai robust si sigur sistem de

2. Selectați opțiunea 5 „Opțiuni de interfață”, apoi activați SSH

3. Reporniți Raspberry Pi. Când este terminat, aveți SSH activat și este gata să fie accesat de la distanță de pe computerul dvs. desktop

$ sudo reboot

Configurarea accesului de la distanță la Raspberry Pi

Acum, în sfârșit, partea când instalăm software-ul necesar pe Raspberry Pi. Această parte poate fi executată direct pe Pi prin terminal folosind un monitor HDMI și o tastatură USB. Pentru comoditate – și din moment ce activăm conexiunea SSH de la distanță – ne vom conecta dintr-un alt mediu desktop. Acesta este cel mai bun și mai simplu mod de a accesa și controla de la distanță Pi ori de câte ori sunt necesare modificări și configurații.

Deci, practic, acesta este modul în care puteți accesa de la distanță interfața liniei de comandă a unui Raspberry Pi de pe un alt computer sau orice dispozitiv din aceeași rețea utilizând SSH. Acest lucru se poate face în două moduri:

  1. Folosind Promptul de comandă sau PowerShell (folosesc Windows pe un computer desktop), înlocuiți cu numele dvs. de utilizator și adresa IP
$ ssh username@ipaddress

daca tu nu stiu adresa IP, tastați „hostname -I" în linia de comandă Raspberry Pi.

Cum sa construiti cel mai robust si sigur sistem de

2. A doua metodă este utilizarea unui program client ca MASTIC sau oricare alte software SSH client funcțional. Iată un lucru ușor ghid pentru utilizarea PuTTY.

Instalarea software-ului necesar pe Raspberry Pi

Înainte de a instala ceva, se recomandă să actualizați sistemul de operare și pachetele Raspberry Pi. Dacă faceți acest lucru în mod regulat, îl veți menține la zi.

  1. Actualizați lista pachetelor de sistem folosind următoarea comandă:
$ sudo apt-get update

2. Actualizați toate pachetele instalate la cea mai recentă versiune a acestora:

$ sudo apt-get dist-upgrade

3. Descărcați și instalați cea mai recentă versiune a Node.js:

// To download$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
// To install$ sudo apt-get install -y nodejs
// Check if the installation was successful:$ node -v

4. Instalați Angular CLI la nivel global:

$ npm install -g @angular/cli

5. Instalați sistemul de control al versiunii Git:

$ sudo apt-get install git

Instalarea bazei de date (MongoDB)

Avem nevoie de o bază de date pentru stocarea utilizatorilor înregistrați și acreditările acestora. Iată pașii necesari:

  1. Instalați MongoDB
$ sudo apt-get install mongodb

2. Porniți procesul MongoDB

$ sudo service mongodb start

3. Porniți mongo Shell

$ mongo

3. Creați o bază de date numită „smarthaus”

$ use smarthaus

În MongoDB, baza de date implicită este testată. Dacă nu ați creat nicio bază de date, atunci colecțiile vor fi stocate în baza de date de testare.

Instalarea Smart Haus

1. Verificați directorul de lucru curent utilizând această comandă:

$ pwd
/* It will probably print "/home/pi"   where "pi" is the current user directory */

Este recomandat pentru a clona depozitul proiectului în directorul utilizatorului pi, dar puteți naviga în altă parte, dacă sunteți sigur.

2. Clonați depozitul din:

$ git clone https://github.com/ameer157/smarthaus.git

Asigurați-vă că navigați în director folosind:

$ cd smarthaus

Înainte de a instala orice pachet npm folosind „npm install” vă rugăm să consultați ghid npm pentru remedierea permisiunilor pentru a afla cum să remediați orice „EACCES ”Erori cu care s-ar putea confrunta în timpul instalării. Aceasta este foarte important deoarece va preveni orice erori de permisiune npm și vă permite să instalați pachete la nivel global fără a utiliza sudo. Utilizarea sudo cu npm nu este recomandată și ar trebui evitată.

3. Instalați toate pachetele necesare pentru proiect:

$ npm install
1611973932 991 Cum sa construiti cel mai robust si sigur sistem de

Pornirea serverului Node.js

Înainte de a porni serverul, trebuie să construim proiectul folosind instrumentul Angular CLI. Și, în cele din urmă, configurăm Raspberry Pi astfel încât să ruleze serverul de fiecare dată când pornește.

  1. Construiți proiectul folosind:
$ ng build --prod

2. Editați fișierul rc.local fișier folosind nano:

$ sudo nano /etc/rc.local

3. Adăugați următoarele pe linia anterioară exit 0 apoi ieșiți și salvați fișierul:

su pi -c 'cd /home/pi/smarthaus/backend && sudo node server.js > log.txt &'
1611973932 380 Cum sa construiti cel mai robust si sigur sistem de

Serverul Node.js este acum gata! Va rula la fiecare pornire a sistemului și va salva jurnalele în același director într-un fișier „log.txt”.

Să-l rulăm acum și să vedem dacă funcționează folosind această comandă:

$ sudo node server

Sistemul este acum accesibil de pe orice dispozitiv din rețeaua dvs. prin adresa IP a Raspberry Pi.

Vă rog, mergeți mai departe și furculiţă acest proiect și să vă implicați în dezvoltarea părților lipsă?

Sfarsit

Am obținut un sistem de automatizare a casei care funcționează în siguranță pe un Raspberry Pi din rețeaua noastră locală, fără a utiliza „cloud” sau serverul altcuiva.

1611973932 395 Cum sa construiti cel mai robust si sigur sistem de
1611973933 970 Cum sa construiti cel mai robust si sigur sistem de
Sincronizarea stării dispozitivului în timp real
1611973933 291 Cum sa construiti cel mai robust si sigur sistem de
1611973933 360 Cum sa construiti cel mai robust si sigur sistem de
Adăugarea unui dispozitiv nou de sincronizare a datelor la cerere

Raspberry Pi-ul meu stând lângă mine Fingbox și router în sufragerie?

1611973933 796 Cum sa construiti cel mai robust si sigur sistem de
Rick și Morty oferă suport tehnic ??

Sper că ți-a plăcut să citești,
Vă rog urma și acțiune pentru mai multe lucruri de tehnologie ??

1611973934 575 Cum sa construiti cel mai robust si sigur sistem de