Casă inteligentă de la un smartphone vechi sau antimodeluri de automatizare a locuinței. EasyHome - control inteligent acasă de la iOS, Android, Windows Control inteligent acasă de la Android

Articole noi

● 9.1. IoT Manager - Control Smart Home printr-o aplicație mobilă

IoT Manager este o aplicație mobilă pentru telefoane și tablete care combină un afișaj pentru afișarea datelor de la senzori și o telecomandă pentru controlul actuatoarelor. Există versiuni pentru Android și iOS, care pot fi descărcate de pe GooglePlay și AppStore www.iotmanager.ru. Dar înainte de a descărca aplicația, să ne hotărâm asupra unui broker. În calitate de brokeri, alegem serviciul CloudMQTT.com (https://www.cloudmqtt.com/), unde vă puteți crea un cont gratuit (prin linkul Panoul de control). Pentru a vă înregistra, trebuie să introduceți adresa de e-mail (ca login) și parola (vezi Fig. 9.2).

Orez. 9.2. Înregistrare în serviciul CloudMQTT.com.

Mergem imediat la panoul de control și creăm un broker (faceți clic pe butonul +Creare). Introduceți numele, selectați centrul de date (Europa sau SUA), planul tarifar - gratuit Cute Cat și salvați (Fig. 9.3). Puteți crea mai mulți brokeri.

Orez. 9.3. Înregistrarea unui broker în serviciul CloudMQTT.com.

Acum faceți clic pe butonul Detalii (vezi Fig. 9.4).

Orez. 9.4. Accesați setările brokerului selectat.

Intrăm în setări (Fig. 9.5). Avem nevoie de următoarele:

Nume gazdă m13.cloudmqtt.com;
. portul 18274 (pentru schița IDE Arduino);
. Portul WebSockets 38274 (pentru aplicația mobilă).

Există, de asemenea, un manager de utilizatori în care puteți crea utilizatori pentru a accesa datele brokerului și le puteți atribui drepturi (Citire, Scriere). În câmpul Subiect, introduceți # (pentru toate subiectele) (vezi Fig. 9.6).

Orez. 9.5. Setările brokerului selectat.

Orez. 9.6. Crearea de utilizatori pentru a accesa brokerul.

Acum puteți descărca și instala aplicația mobilă IoTManager. Hai să lansăm. Trebuie făcute setări. Faceți clic pe Setări (Fig. 9.7) și în formularul care apare, introduceți detaliile brokerului dvs. (Fig. 9.8):

Nume gazdă MQTT - m13.cloudmqtt.com;
. Port MQTT Websocket - 38274;
. nume de utilizator MQTT - nodemcu1;
. Parola MQTT.

Orez. 9.7. Meniul principal al aplicației IoTManager.

Orez. 9.8. Fereastra de setări broker.

Acum mergem la pagina Dashboard și ar trebui să vedem conexiunea stabilită (Fig. 9.9). Inscripția Nicio dată nu ar trebui să vă încurce - datele nu au fost încă transferate la subiecte.

Orez. 9.9. Conectare reușită la broker.

Sunt toate ferestrele închise? Luminile sunt stinse? S-a strecurat cineva în apartament? Dacă casa ta este conectată la internet, o singură privire pe ecranul smartphone-ului tău este suficientă pentru a ști dacă totul este în ordine. Acest lucru devine posibil datorită sistemelor smart home. Și cel mai bun lucru este că îți poți controla casa de oriunde. Trebuie doar să apăsați butoanele de pe ecranul smartphone-ului pentru a reduce luminile din sufragerie, pentru a regla încălzirea sau pentru a porni televizorul.

Într-un sistem de încălzire, conexiunea la un dispozitiv mobil este asigurată de un termostat inteligent. Pentru ferestre, această sarcină este îndeplinită de un senzor care înregistrează deschiderea și închiderea cercevelelor. Iar televizorul, lampadarul sau aparatul de cafea sunt conectate la Rețea folosind prize inteligente.

Reechipare simplă a echipamentelor

Nu este necesară găurire, cablare sau pătrundere în perete. Multe dispozitive inteligente de acasă pot fi securizate cu bandă obișnuită cu două fețe. Acestea sunt alimentate de baterii sau baterii reîncărcabile, iar comenzile de control și datele senzorilor pot fi transmise prin semnal radio.

Selectați produse pentru casă inteligentă, conectați-vă la smartphone-ul dvs. prin Bluetooth sau utilizați rețeaua Wi-Fi de acasă. Cu toate acestea, atunci când vine vorba de controlul mai multor dispozitive și pe mai multe etaje, comunicarea se realizează adesea printr-un punct central de control suplimentar al casei inteligente.

Centrul de control, la rândul său, este conectat la router și oferă o conexiune la smartphone și la internet. În plus, vă permite să controlați toate dispozitivele astfel încât, de exemplu, atunci când rezidenții părăsesc locuința, toate aparatele electrice să fie oprite automat și sistemul de securitate să fie pornit.

Pentru a construi un astfel de sistem, nu aveți nevoie nici de cunoștințe tehnice remarcabile, nici de mult timp. Cel mai adesea, o oră sau două este suficientă pentru a instala și configura toate dispozitivele. CHIP vă va prezenta șase aplicații care vor fi deosebit de utile atunci când lansați funcții pentru casă inteligentă. În același timp, ne-am concentrat pe siguranță și economisirea energiei.

Aplicații Smart Home

Netatmo Bun venit: Cameră de rețea cu recunoaștere facială

Aplicația mobilă Netatmo Welcome vă va spune cine se află în prezent în casă. Dacă camera video nu poate identifica o persoană după față, începe înregistrarea video și vă anunță despre acest lucru. Când sunteți acasă, aplicația vă poate informa despre obiectele în mișcare prinse în lentilă sau sunetele de alarmă captate de microfoane (de exemplu, de la un detector de fum). Înregistrările video sunt salvate local pe cardul SD inclus sau pe serverul FTP. Înregistrarea, precum și accesul de la distanță la imaginile video sunt oferite gratuit, dar pentru o cameră video va trebui să plătiți o taxă unică de aproximativ 17.000 de ruble.

Platforme: Android, iOS

Yale ENTR: Deschiderea ușii din față prin smartphone

Când utilizați ENTR Smart Lock sau August Smart Lock, puteți lăsa cheia ușii din față acasă. La urma urmei, încuietoarea electronică a ușii se va deschide când glisați degetul de sus în jos în aplicație. Lacătul primește comanda de deschidere printr-o conexiune criptată Bluetooth Low Energy. Când nu sunteți acasă, puteți oferi acces limitat în timp în casă cunoscuților sau meșterilor numiți. Dacă cineva care locuiește cu tine dorește totuși să deschidă ușa cu o cheie obișnuită, acest lucru este posibil. Încuietoarea inteligentă ENTR (aproximativ 25.000 de ruble) este instalată în interiorul ușii și nu este vizibilă din exterior.

Platforme: Android, iOS

Gigaset Elements: Protejează-ți casa de oaspeții neinvitați

Cu setul de pornire Gigaset Elements, vă puteți face casa mai sigură pentru doar 12.000 RUB. Pachetul de pornire include un punct de control central, un senzor de mișcare și un senzor de efracție a ușii. Spre deosebire de alte sisteme de securitate, senzorul ușii detectează o încercare de intrare forțată (pe baza nivelului de zgomot). În acest caz, vei primi o notificare prin intermediul aplicației de pe smartphone-ul tău. Cu acesta, puteți, de asemenea, să activați modul acasă sau plecat și să setați la ce oră ar trebui activat sistemul de securitate. Senzorul de deschidere a ferestrei, camera și sirena sunt disponibile opțional.

Platforme: Android, iOS

Panasonic Home Network: protecție completă pentru toate ocaziile

Sistemul de securitate Panasonic Smart Home vă va alerta cu un apel telefonic chiar dacă sunteți offline. Folosind o conexiune la Internet, aplicația mobilă Panasonic Home Network System vă va anunța și despre un incident. Inițiatorul de alarmă poate fi unul dintre senzorii ușii (ferestrei), un senzor de spargere a sticlei sau un senzor de scurgeri de apă din Starter Kit Plus (aproximativ 20.000 de ruble). Prin instalarea unor module hardware suplimentare, aplicația vă permite, de asemenea, să monitorizați ceea ce se întâmplă în interiorul sau în afara casei dvs., să porniți sau să opriți aparatele electrocasnice, să controlați iluminatul, telefonul fix și multe altele.

Platforme: Android, iOS

eQ-3 Homematic IP: Controlul încălzirii prin smartphone

eQ-3 oferă o opțiune convenabilă pentru controlul temperaturii camerei prin intermediul smartphone-ului folosind Homematic IP. Când sunt configurate prin intermediul aplicației, termostatele radiatorului și senzorii ferestrelor sunt conectate la un centru de control central (care vă va costa aproximativ 5.000 de ruble) și alocate camerei. Termostatele din aceeași cameră sunt apoi sincronizate automat între ele. Iar dacă se deschide o fereastră în cameră, acestea reduc intensitatea încălzirii. De asemenea, puteți economisi energie folosind programele de încălzire, care pot fi setate cu ușurință printr-o aplicație mobilă pentru fiecare zi și pentru fiecare cameră - foarte convenabil.

Nu cu mult timp în urmă, a fost introdus un modul Z-Wave pentru Raspberry Pi - RaZBerry, care transformă un mini-computer într-un controler de casă inteligent cu drepturi depline. Gestionarea rețelei Z-Wave se realizează folosind o interfață web folosind API-ul HTTP/JavaScript. Folosind JavaScript, puteți crea un set de funcții pentru automatizare (aprinderea/stingerea luminilor, verificarea temperaturii, sondarea unui senzor de mișcare etc.), care pot fi apoi executate prin trimiterea unei cereri HTTP.

Produsul cu același nume al companiei OpenRemote vă permite să creați aplicații mobile pentru o casă inteligentă fără programare, în timp ce o aplicație poate folosi diferite tehnologii: Z-Wave, KNX, X10, ZigBee, control computer prin ssh etc.

OpenRemote este un server care execută orice comenzi și un designer de interfață în care creezi butoane, comutatoare, etichete etc. și atribui comenzi acestor elemente, în cazul nostru acestea sunt solicitări HTTP pentru a executa funcții JavaScript pe serverul Z-Wave.

În continuare, vă voi spune punct cu punct cum să creați o telecomandă inteligentă pentru casă pentru iPhone și Android! Și așa va arăta aplicația noastră când vom termina:

Sunt o mulțime de poze sub tăietură.

1. Crearea unei rețele Z-Wave folosind un controler Raspberry Pi + RaZberry

  • Instalarea software-ului RaZberry pe Raspberry Pi
  • Adăugarea dispozitivelor Z-Wave
  • Verificarea funcționării dispozitivului
2. Instalarea controlerului OpenRemote și a aplicației mobile

3. Crearea designului aplicației și a logicii de funcționare a acesteia

  • Dezvoltarea designului
  • Asocierea butoanelor cu comenzile
4. Rezumat

Crearea unei rețele Z-Wave folosind un controler Raspberry+RaZberry

RaZberry este o placă conectată la Raspberry Pi prin GPIO, permițându-vă să creați și să gestionați o rețea Z-Wave. Pentru o mai bună înțelegere, vă rugăm să citiți întrebările frecvente. Placa vine cu software care trebuie instalat.

Instalarea software-ului RaZberry pe Raspberry

Programul de instalare acceptă numai distribuții bazate pe Debian (Raspbian, Xbian etc.) Cu toate acestea, puteți instala manual software-ul pe OpenElec și alte sisteme de operare.
Rulați comanda pentru a instala software-ul Z-Way:
wget -q -O - http://razberry.z-wave.me/install | sudo bash
După instalare, trebuie să reporniți Raspberry Pi pentru a aplica modificările la portul serial.

Pentru a ajunge la panoul de control al casei inteligente, accesați http://IP_OF_YOUR_RASPBERRY:8083. Interfața programului este foarte simplă, nu va fi greu de înțeles, există documentație. Următoarele browsere au compatibilitate maximă cu interfața: Chrome, Safari, Firefox; alte browsere: IE, Opera pot să nu funcționeze corect.

Adăugarea dispozitivelor Z-Wave

Să stabilim lista echipamentelor utilizate:
- Releu Fibaro Single Switch 3kW 2 buc.
- Senzor deschidere ușă/fereastră și temperatură Senzor Fibaro pentru ușă/fereastră 1 buc.

Din meniul de jos selectați Modul expert. Folosind meniul de sus, accesați fila Rețea → Managementul rețeleiși apăsați Porniți (re)dispozitivul, aceasta va începe procesul de așteptare ca dispozitivul să fie conectat la rețea, acum apăsați butonul de service de pe dispozitiv de trei ori, astfel încât controlerul să îl vadă și să îl adauge.

Verificarea funcționării dispozitivului

Să ne asigurăm că dispozitivul funcționează. Accesați fila Configurarea dispozitivelor, faceți clic pe singurul dispozitiv adăugat din coloana din stânga și verificați Etapa interviului trebuie să fie Interviul a avut succesși nu ar trebui să existe puncte sau Ø între plusuri.

Dacă interviul nu este finalizat (există puncte și semne Ø), atunci îl puteți repeta, pentru a face acest lucru, faceți clic în partea de jos a ecranului Acțiuni suplimentare → Forțați repetarea interviului(Modul expert trebuie să fie activat pentru a vedea acest meniu).
După un interviu finalizat cu succes, pe aceeași filă Configurarea dispozitivelor puteți configura unii parametri ai dispozitivului (nu uitați să aplicați setările folosind Aplicați setările acestui dispozitivîn partea de jos a ecranului și, de asemenea, treziți dispozitivul dacă funcționează cu baterii):

Pentru a gestiona dispozitivul, accesați fila Gestionare dispozitiv → Comutatoare

Despre API-ul de automatizare furnizat

După ce ne-am asigurat că toate dispozitivele funcționează corect, să încercăm acum să le controlăm de la distanță. Există mai multe moduri:

1. Folosind HTTP/JSON API
2. Utilizarea API-ului JavaScript

API HTTP/JSON folosește o sintaxă simplă pentru a gestiona dispozitivele.
Puteți aprinde lumina din browser:
http://192.168.1.113:8083/ZWaveAPI/Run/devices.instances.SwitchBinary.Set(255)
Sau solicitați temperatura:
http://192.168.1.113:8083/ZWaveAPI/Run/devices.instances.commandClasses.data.val.value
API JavaScript vă permite să scrieți diverse scripturi de automatizare, de exemplu: aprindeți/opriți lumina, sondați senzorul, obțineți temperatura, stingeți lumina la 2 minute după aprindere. Aceste scripturi pot funcționa fie independent (de exemplu: noaptea lumina se aprinde doar cu 15%, pentru a nu orbi ochii), fie pot fi apelate de la distanță folosind API HTTP/JSON.

Script pentru aprinderea luminii:
SwitchOn = function(N,I) ( zway.devices[N].instances[I].SwitchBinary.Set(255); )
Apelarea scriptului comutatorului de lumină:
Din păcate, accesarea directă a dispozitivelor folosind API-ul HTTP/JSON de la OpenRemote este problematică din mai multe motive:

1. Caracterele trebuie să fie recodate în UTF-8 în OpenRemote Constructor
2. La sondarea senzorilor, OpenRemote se așteaptă „pornit” sau „dezactivat”, iar senzorii Z-Wave pot trimite 255 sau 0.
3. Pentru fiecare dispozitiv va trebui să scrieți propria cerere, iar folosind JS puteți utiliza o singură funcție pentru a activa diferite dispozitive, schimbând doar parametrul funcției din cerere - numărul dispozitivului.

Când utilizați API-ul JavaScript, toate aceste probleme dispar - mai multe funcții „ajutoare” vor ajuta la transformarea termenilor Z-Wave în concepte convenabile pentru OpenRemote.
Puteți citi mai multe despre sintaxa API-ului HTTP/JSON și API-ului JavaScript în cel recent.

Crearea de scripturi JS pentru control de la distanță

Scripturile JS sunt în /opt/z-way-server/automation/, să creăm un fișier în care vor fi stocate funcțiile noastre de automatizare openremote.js astfel încât să fie încărcat automat când Z-Way este pornit, la sfârșitul fișierului principal de automatizare main.js adăuga:
// ================================================== ==== ====== executeFile(automationRoot + "/" + "tags.js"); executeFile(automationRoot + "/" + "openremote.js"); startAutomation();
/opt/z-way-server/automation/openremote.js
// Pornirea dispozitivului SwitchOn = function(N,I) ( zway.devices[N].instances[I].SwitchBinary.Set(255); ) // Oprirea dispozitivului SwitchOff = function(N,I) ( zway.devices[ N].instances[I].SwitchBinary.Set(0); ) // Solicitare pentru starea senzorului (declanșat/eșuat) SensorStatus = function(N,I) ( return zway.devices[N].instances[ I]. SensorBinary.data.level.value; ) // Solicitare pentru starea dispozitivului (pornit/oprit) SwitchStatus = function(N,I) ( return zway.devices[N].instances[I].SwitchBinary.data.level) .value; ) // Interogare de temperatură rotunjită la cel mai apropiat număr întreg Temperature = function(N,I) ( return Math.round(zway.devices[N].instances[I].commandClasses.data.val.value); )

Parametrul N este numărul dispozitivului din rețea.
Parametrul I - într-un singur dispozitiv pot exista fizic mai multe dispozitive (canale), de exemplu 2 relee sau un senzor de temperatură, un senzor de mișcare, un senzor de lumină. Parametrul I este numărul canalului din interiorul dispozitivelor. Dacă dispozitivul conține un singur dispozitiv fizic, atunci acest parametru este 0.

După crearea fișierului, trebuie fie să reporniți Z-Way cu comanda:
/etc/init.d/Z-Way reporniți
sau încărcați manual scriptul trimițând o solicitare din browser:
http://192.168.1.113:8083/JS/Run/executeFile("automation/openremote.js")
Puteți verifica funcționalitatea funcțiilor din browser.
A aprinde lumina:
http://192.168.1.113:8083/JS/Run/SwitchOn(6,0)
Solicitare temperatura:
http://192.168.1.113:8083/JS/Run/Temperature(8,2)
Jurnalul serverului Z-Way este foarte util în depanare:
coada -f /var/log/z-way-server.log
Dacă totul funcționează, treceți la următorul punct!

Instalarea unui controler OpenRemote

Controlerul OpenRemote este un server care primește comenzi de la o aplicație mobilă sau web și apoi le transmite unui alt controler sau server. În cazul nostru, acesta este un server Z-Way.

Site-ul web OpenRemote are instrucțiuni de instalare foarte detaliate, pe care vă sugerez să le utilizați:
Instrucțiuni oficiale de instalare pentru OpenRemote în engleză

Permiteți-mi doar să observ că OpenRemote este scris în Java și avem nevoie de o versiune a mașinii virtuale cu suport hardware în virgulă mobilă:
JAVA pentru procesoare ARM cu suport în virgulă mobilă

Instalați aplicația mobilă pentru telefonul dvs.:
Aplicația mobilă OpenRemote

Înainte de a începe să dezvoltați o aplicație, pentru o mai bună înțelegere, uitați-vă la cum va funcționa:

Crearea designului aplicației și a logicii funcționării acesteia

Toți pașii anteriori au fost doar pregătirea pentru principalul lucru - crearea unei aplicații mobile!
Deschideți Cloud Designer http://designer.openremote.org. Nu va fi greu să-ți dai seama!

Dezvoltarea designului

Să trecem imediat la dezvoltarea designului.

1. Accesați fila UI Designerși creați un nou panou, numindu-l, de exemplu, iPhone4.

2. Trageți butoanele și imaginile din panoul din dreapta pe ecranul iPhone.

3. În proprietățile imaginii (panoul din dreapta), încărcați fotografiile și utilizați câmpurile Stânga, Dreapta, Lățime, Înălțime pentru a le aranja pe ecran după cum aveți nevoie. Am încărcat imagini cu un pătrat și un bec și am adăugat și o inscripție.

Crearea comenzilor de control și a senzorilor

Acum trebuie să atribuiți comenzi butoanelor, iar imaginea becului ar trebui să se schimbe în funcție de starea luminii (pornit/oprit).

1. Accesați fila și creați un nou dispozitiv, denumindu-l, de exemplu, Raspberry.

2. Selectați dispozitivul Raspberry nou creat și creați o nouă comandă pentru acesta Nou → Comandă nouă. Selectarea unui protocol HTTP, introduce URL Comenzile și metoda JS sunt instalate POST.
Această comandă pornește dispozitivul #6. În mod similar, creăm comenzi pentru a porni alte dispozitive și comenzi pentru a le opri.
http://192.168.1.113:8083/JS/Run/SwitchOn(6,0)

3. Acum trebuie să creați o comandă pentru a interoga starea luminii. Această comandă va fi apelată la fiecare 2 secunde, așa că dacă stingi manual lumina, aceasta va deveni imediat vizibilă în aplicația noastră. Ca de obicei Nou → Comandă nouă, dar în plus trebuie să indicați cât de des ar trebui efectuat sondajul Sondaj, instalare 2s, lit s necesar.

4. Să creăm un Senzor care va procesa valorile primite de la această comandă și le va transmite imaginii sau legendei. Nou → Senzor nou, selectați comanda pe care o va executa senzorul, setați tipul personalizat, adăugați două stări peȘi oprit, le asociem cu valorile returnate Z-Wave.

Asocierea butoanelor cu comenzile

1. Ultima etapă de dezvoltare a aplicației, asocierea butoanelor cu comenzi. Reveniți la Designerul de aplicații UI Designer, selectați butonul și în proprietățile acestuia setați comanda pe care ar trebui să o execute.

2. Asociați o imagine cu un senzor astfel încât atunci când starea dispozitivului se schimbă, imaginea din aplicație se schimbă și ea. Selectați o imagine și setați senzorul în proprietățile sale.

3. În proprietățile imaginii, selectați ce imagine va fi afișată dacă senzorul a fost trimis peși dacă senzorul a trimis oprit.

Sincronizare cu aplicația mobilă

1. Aplicația noastră este gata, rămâne doar să o încărcați pe telefon. Accesați adresa controlerului OpenRemote

Bună ziua, dragi cititori! O altă poveste despre modul în care un manager de nivel mediu, care suflă praful din piese de feronerie învechite pe un raft, face ceva care îi face pe profesioniștii de orice tip să-și rănească ochii. Dar funcționează, amice!

Recunosc, de data asta am vrut să fac totul bine. Am luat Raspbery Pi de pe raft. Placinta este aceeași pe care am folosit-o deja la robotul meu de tuns iarba: link la postare și link la altă postare. Am luat țânțari, totul ar fi trebuit să funcționeze pe mqtt, dar nu poți fugi de tine. Sub tăietură este o mare de greble, biciclete, lipire proastă, un iad complet pentru un perfecționist.


Totul a început cu dorința de a-mi completa proiectul Noorik, pe care l-am pus pe poartă. Pe scurt, aceasta este o soluție DIY pentru un deschizător de poartă GSM.
Pentru a deschide poarta, este suficient să închideți anumite contacte de pe placă.

Am înlocuit arduino cu un esp8266 și am făcut o interfață web cu un buton deschis. Acest lucru s-a dovedit a fi interesant, dar apoi am vrut o interfață unică pentru deschiderea porților culisante, ușilor de garaj secționale și porților.

Când am început să scriu toate listele mele de dorințe, s-a dovedit că aveam nevoie de același lucru:

  1. sistem de control al cazanelor
  2. sistem de securitate
  3. interfață mobilă cu camere CCTV
  4. date privind temperatura în casă și în exterior

Backend

Zmeura a funcționat bine, dar data viitoare când a fost pornită, pur și simplu a încetat să mai pornească. LED-ul de alimentare se aprinde mai întâi, apoi se stinge lin în 3-5 secunde, elementul (polifuzibil T075) din apropierea prizei devine foarte fierbinte. Și acum mâinile îmi mâncărim să folosesc mqtt, blackger, invita curtezane și alte delicii.

Nu contează, din fericire, un alt pacient și-a așteptat soarta. Portocaliu pi zero la studio. Indiferent cât de mult am suferit cu acest miracol al gândirii chinezești, suflarea vieții într-o plăcintă atât de mică s-a dovedit a fi peste puterile mele. Am descărcat firmware-ul de pe site-urile oficiale și de stânga, am cumpărat firmware-ul din propriile mâini și l-am schimbat cu criptomonedă. Cred că tocmai am primit o probă defectă.

Mi-am dat seama că soarta însăși mă împinge în brațele construcției de biciclete și, de ce să-mi ascund bucuria, m-am aruncat cu capul în cap în această activitate.

În primul rând, am decis să folosesc un smartphone bine uzat ca unitate principală (broker, server). Știi, aceste lucruri vechi nu dispar pur și simplu. Eu, soția mea, fiica mea l-am folosit, apoi mi-am controlat robotul meu de suflat de zăpadă de pe acest smartphone, am încercat să îl înec în râu (nu am ajuns niciodată la râul Moscova, dar în Pakhra mea natală această țeavă a foșnit). Și iată-l - o nouă viață pentru Samsung Galaxy S3.

Am instalat Palapa Web Server și server Ftp pe smartphone-ul meu. Ideea este simplă: baza de date MySQL are doar trei tabele: valori, loguri, reguli.

  • Tabelul cu valori conține perechi cheie/valoare.
  • Tabelul de jurnale conține un istoric al modificărilor valorilor.
  • În tabelul cu reguli, există reguli pentru modificarea unor celule în funcție de valoarea din altele.
Toată această facilitate este deservită de un script PHP, care, la o cerere http, scrie sau scoate date din baza de date și, de asemenea, servește reguli conform unui program.
Nici măcar nu înțeleg ce nivel de programare ar trebui să fie pentru ca o persoană să vrea să vadă asta, dar sunt gata să vă arăt codul - scrieți-mi într-un PM.

În față

Nu aruncați cu pietre în mine, recunosc și eu. Am folosit Bootstrap. Da, sunt un păcătos.
Gândul inițial a fost să închei toate acestea prin Phonegap și să obții o aplicație cu drepturi depline. Voi spune mai multe că tocmai asta am făcut, dar până la urmă versiunea online s-a dovedit a fi mai eficientă. Tocmai am făcut o comandă rapidă pe telefon pentru mine și soția mea pe desktop pentru a deschide pagina dorită folosind IP-ul intern.

Fiecare element reacționează la un eveniment de clic + starea este verificată prin solicitări ajax către server și schimbată dacă este necesar. Este foarte convenabil deoarece puteți vedea toate modificările care au intrat în vigoare conform regulii sau au fost făcute de un alt utilizator.
De fapt, codul la cerere nu este o problemă.

ESP-8266


Am încercat diferite module și un ESP-8266 pur. Drept urmare, modulul LOLIN V3 s-a dovedit a fi cea mai convenabilă opțiune.

Alimentare cu surse de alimentare comutatoare.

Modulele porții necesitau un releu și mă temeam că releele de contact se vor declanșa. Ca rezultat, atât cele cu stare solidă, cât și cele de contact funcționează. Problema este că un număr mare de module, chiar și fără marcare, sunt declanșate scăzut.

Când modulul este pornit, are loc o deschidere de scurtă durată, care duce la deschiderea involuntară la pornirea alimentării. Se rezolvă trăgându-l la zero și declarând starea înainte de declararea tipului de ieșire.

DigitalWrite(rele, 1); digitalWrite(rele2, 1); pinMode(rele, OUTPUT); pinMode(rele2, OUTPUT);
Ca rezultat, modulul de garaj asamblat arată astfel. Senzorul PIR pentru detectarea mișcării este roade cu grijă în pielea originală.

În camera mea de cazane, centrala este foarte simplă și nu se vorbește de vreo automatizare complexă.

În acest caz, fiecare circuit este deservit de o pompă separată.

Releele au fost conectate în serie cu mașinile pentru a controla pompele și cazanul.

Împinge cu grijă totul în scut.

Firmware

Am decis să folosesc Arduino IDE pentru firmware ca să nu mă încurc cu nodemcu și lua. Există o cantitate imensă de informații pentru începători pe Internet și în special pe GT.
Lucrul interesant, mi se pare, este funcția de conectare la wifi. Cert este că am 4 rețele wifi în casa mea și se pot adăuga mai multe. Pentru a nu specifica strict numele rețelei, scanăm mai întâi rețelele disponibile.

setupWiFi() cod

void setupWiFi() ( WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); while(WiFi.status() != WL_CONNECTED) ( int n = WiFi.scanNetworks(); Serial.println("scanare) terminat"); if (n == 0) Serial.println ("nu au fost găsite rețele"); else ( Serial.print(n); Serial.println ("rețele găsite"); pentru (int i = 0; i< n; ++i) { Serial.println(""); Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(")"); Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*"); j=0; ssid=WiFi.SSID(i); Serial.print("Connecting"); ssid.toCharArray(charBuf, 50); WiFi.begin(charBuf,WIFI_PASS); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); j++; if(j>20)( break; ) ) if((WiFi.status() == WL_CONNECTED))( break; ) ) ) ) Serial.println("Conectat"); Serial.println(WiFi.localIP()); )


Când modul automat al cazanului este pornit, temperatura exterioară și temperatura lichidului de răcire sunt verificate conform unui program.
  • La temperaturi sub 14*C, podeaua caldă de la primul etaj este pornită.
  • La temperaturi sub 4*C, toate circuitele sunt pornite.
Temperatura lichidului de răcire este selectată conform tabelului în funcție de secțiunea transversală a conductelor și de temperatura exterioară. Când temperatura necesară a camerei este atinsă, centrala se oprește. O anumită histerezis este aplicată tuturor pentru a netezi valorile de tranziție.

Sistemul de securitate funcționează și mai simplu. Există o regulă în tabel că atunci când sistemul de securitate este pornit, dacă este detectată mișcare la unul dintre senzorii PIR, un SMS este trimis prin API-ul unuia dintre servicii.

Planuri

  • crearea unei versiuni online pe un server la distanță și sincronizarea modificărilor pentru control de la distanță.
  • Afișarea datelor de la balize GSM/GPS din mașină;
  • Deschiderea porții când mașinile noastre apar într-o anumită zonă;
  • Conectare la sistemul de telecomandă;
Votarea prin fotografie. Ce proiect ar trebui să fac în continuare? 22 ianuarie 2014 la ora 10:47

Casa inteligentă. Implementare specifică

  • Java

Bună ziua, dragă comunitate!
În modul în care îmi fac casa inteligentă. A trecut destul de mult timp de atunci și am făcut progrese destul de serioase atât în ​​​​hardware, cât și în software. Cred că acest articol următor poate fi numit în siguranță „Smart Home v3” :)

Pe scurt, sunt de mult interesat de posibilitatea de a construi o casă inteligentă în propria casă. În zilele noastre, aceasta este o tendință de modă, dar anterior era un adevărat subiect pentru tocilarii înrădăcinați.

Vă spun ce echipament am acum:

  • Mai multe variatoare ZWave
  • Senzori ZWave (volum, prezență, temperatură, scurgeri, deschidere uși/ferestre, dongle pentru PC)
  • Supape ZWave
  • Comutatoare Noolite (module de putere + comutatoare transmițător, dongle RX și TX (PC) pentru PC)
  • Vin dimmerele Noolite
  • Tablete Android (servesc ca terminale de sistem)
  • Există un dongle cu 1 fir pe raft :)
Toate aceste tehnologii sunt descrise suficient de detaliat pe Habré (inclusiv în articolele mele), dar aș dori să mă opresc Noolite. Tehnologia este bine descrisă (de exemplu). Acum este rândul meu:)

Așa arată cât de frumos arată în cutii (îmi cer scuze anticipat pentru calitate, s-a făcut în timpul instalării pe un telefon mobil fără probleme cu fundalul, un orizont plin etc.):

Iată cum arată dongle-ul pentru transmiterea comenzilor către unitățile de alimentare:

Da Da! Tocmai pentru a primi comenzi! Aceasta este partea care lipsește din Noolite, care îmi lipsea personal pentru a putea folosi aceste dispozitive acasă. Din anumite motive, nu există informații despre asta nicăieri, cu excepția site-ului oficial.
De ce este atât de important? Dacă ați mai citit despre Noolite, știți că modulele de putere (ceea ce pornește/oprește sarcina) au doar un receptor de semnal, dar nu au transmițător. Acest lucru a limitat semnificativ (pentru mine personal) utilizarea unor astfel de echipamente într-o casă inteligentă. Producătorul a rezolvat problema cu o cârjă cu o soluție originală - au lansat un receptor separat pentru semnalele de la emițătoare înșiși (comutatoare radio). Singura problemă cu acest dispozitiv este raza foarte mică de recepție. Poate că comutatorul radio însuși își impune limitările aici, pentru că... are o antenă destul de slabă și de obicei erau instalate în locurile fostelor întrerupătoare (pentru a ascunde găurile în pereți :)) - poate un fel de interferență.

De fapt, iată unul dintre momentele procesului de instalare, înlocuind vechiul comutator:

După cum puteți vedea, firele vechi de alimentare sunt scurtcircuitate în blocul de borne, iar comutatorul radio în sine este plasat deasupra.

Din anumite motive, unitatea de alimentare nu a intrat în lentila telefonului :) Rezultatul conexiunii sale:

Când sarcina este oprită, unitatea de alimentare luminează plăcut cu un LED verde. Noaptea se dovedește a fi un fel de lumină de serviciu.

Totul este atașat și dezlegat foarte simplu și rapid, instrucțiunile sunt foarte detaliate și de înțeles. Singurul lucru care nu mi-a plăcut a fost software-ul care a venit în cutie. Era scris clar pe genunchi, fără bibelouri și uneori scuipă erori. Dar nu am nevoie de el - l-am folosit o singură dată, pentru a mă asigura că dispozitivele achiziționate funcționează corect, după care a fost tăiat fără milă.

Acum putem vorbi despre partea inteligentă a casei. Glandele sunt bune și interesante, dar trebuie să existe și o parte practică. Îți voi spune un exemplu din dimineața mea.

Dacă astăzi nu este weekend sau vacanță, atunci la 6.00 lumina de noapte instalată pe partea mea a patului începe să se aprindă - un ceas cu alarmă ușor.
În jurul orei 6.45, terminalul smart home (o tabletă Android atârnată lângă pat) primește o comandă de la serverul principal de a porni alarma (da, am înțeles că ai putea doar să pornești ceasul deșteptător de pe tabletă :)) - se redă sunetul plăcut al pădurii de dimineață, la care mă tot trezesc.
În același timp, se aprind luminile din hol, bucătărie, baie și toaletă.
Când mă târăsc în sfârșit pe coridor, senzorii de prezență îmi detectează carcasa somnoroasă și mă întâmpină vocea sintetizată a unei femei Google. În același timp, casa inteligentă deschide robinetele de alimentare cu apă (am fobie de a-mi inunda vecinii).
După orice procedură de toaletă, mă târăsc în duș. Senzorul de ocupare din baie detectează că sunt deja aici și terminalul local mă întreabă dacă vreau să aflu ultimele știri. Aici sunt liber să răspund da sau nu (se acceptă răspunsuri modificate) - recunoașterea vocii din aceeași rețele neuronale Google + Wit.AI funcționează.
(Apropo, în timp ce comunicarea vocală este în proces de dezvoltare - trebuie să vorbiți clar și tare, vorbirea nu este întotdeauna primită prima dată, iar recunoașterea și reacția sistemului durează ceva timp (în medie, de la 2 la 5 secunde). ))
Apoi ies din baie, aprind ceainic pentru mine și turn niște ceai (da, un defect :)). Dacă am întârziere și sistemul mă vede cu senzorii săi (prezența + senzorul de pe ușa din față nu a funcționat) - mă solicită cu mesaje vocale.
Plec, închid ușa - luminile de peste tot se sting automat.

Acesta este în mod concret exemplul meu. Aici pot fi câteva nuanțe - soția mea se trezește, eu sunt în vacanță etc. Dar, în general, scenariul mi se potrivește în 90% din timp.

Un pic despre software. Sistemul de casă inteligentă în sine este implementat din trei componente. Acesta este miezul sistemului, care, de fapt, controlează totul. Interfață web bazată pe Play Framework 1.2.7, pe care va fi implementat în viitor un control prietenos cu oamenii al sistemelor de casă inteligentă. Și o aplicație Android care servește ca terminal inteligent pentru acasă.
Software-ul este publicat pe Github, nu există încă o implementare specifică a celor descrise mai sus în el, pentru că există o mulțime de cod groaznic pe care îl pun în ordine, dar în general funcțiile sunt prezente.
Sistemul este scris în Java și în prezent nu are o interfață prietenoasă cu oamenii, cu excepția unei aparențe de REST. În prezent, sistemul nu este pregătit pentru utilizatorul obișnuit și este în alfa globală. Unele funcții pe care le folosesc nu sunt încă în depozit public, dar este o chestiune de timp.

Scopul principal al acestui subiect este de a atrage dezvoltatori pasionați de case inteligente. nu o ascund :)
De fapt, un link către depozitul modulului principal (restul sunt în același loc.

Acțiune