Lytko se ujedinjuje

Prije nekog vremena smo vas upoznali pametni termostat. Ovaj članak je prvobitno zamišljen kao demonstracija njegovog firmvera i kontrolnog sistema. Ali da bismo objasnili logiku termostata i šta smo implementirali, potrebno je ocrtati cijeli koncept u cjelini.

Lytko se ujedinjuje

O automatizaciji

Uobičajeno, sva automatizacija se može podijeliti u tri kategorije:
Kategorija 1 — odvojeni „pametni“ uređaji. Nabavljate sijalice, čajnike i sl. od različitih proizvođača. Prednosti: Svaki uređaj proširuje mogućnosti i povećava udobnost. Protiv: Svaki novi proizvođač zahtijeva vlastitu aplikaciju. Protokoli uređaja različitih proizvođača često nisu međusobno kompatibilni.

Kategorija 2 — instalacija PC-ja sa jednom pločom ili x86 kompatibilnog. Ovo uklanja ograničenja na računarsku snagu, a MajorDoMo ili bilo koja druga serverska distribucija za upravljanje pametnim domom je instalirana na ovoj mašini. Tako su uređaji većine proizvođača povezani u jedan informacioni prostor. One. pojavljuje se vaš vlastiti Server za pametni dom. Prednosti: kompatibilnost u okviru jednog centra, koji pruža poboljšane mogućnosti upravljanja. Protiv: ako server pokvari, cijeli sistem se vraća u fazu 1, tj. postaje fragmentiran ili postaje beskorisan.

Kategorija 3 - najtvrdokornija opcija. U fazi popravke, sve komunikacije su položene i svi sistemi su duplirani. Prednosti: sve je dovedeno do savršenstva i tada kuća postaje zaista pametna. Nedostaci: izuzetno skupo u odnosu na kategoriju 1 i 2, potreba da se sve razmisli unaprijed i uzme u obzir svaki mali detalj.

Većina korisnika bira opciju jedan, a zatim glatko prelazi na drugu opciju. A onda oni najuporniji dođu do opcije 3.

Ali postoji opcija koja se može nazvati distribuiranim sistemom: svaki pojedinačni uređaj će biti i server i klijent. U suštini, ovo je pokušaj da se uzmu i kombinuju opcija 1 i opcija 2. Uzeti sve njihove prednosti i eliminisati nedostatke, kako bi uhvatili zlatnu sredinu.

Možda će neko reći da je takva opcija već razvijena. Ali takve odluke su usko fokusirane; za ljude koji su pametni u programiranju. Naš cilj je da spustimo barijeru za ulazak u ovakve distribuirane sisteme, kako u vidu krajnjih uređaja tako i u vidu integracije postojećih uređaja u naš sistem. U slučaju termostata, korisnik jednostavno uklanja svoj stari termostat, ugrađuje pametni i na njega povezuje svoje postojeće senzore. Bez ikakvih dodatnih koraka.

Pogledajmo integraciju u naš sistem koristeći primjer.

Zamislimo da imamo 8 Sonoff modula na našoj mreži. Nekim korisnicima će biti dovoljna kontrola preko Sonoff oblaka (kategorija 1). Neki će početi da koriste firmver treće strane i glatko će preći u kategoriju 2. Većina firmvera treće strane radi na istom principu: prenos podataka na MQTT server. OpenHub, Majordomo ili bilo koji drugi služe samo jednoj svrsi - da ujedine različite uređaje u jedinstveni informacijski prostor koji se nalazi ili na Internetu ili na lokalnoj mreži. Stoga je prisustvo servera obavezno. Tu nastaje glavni problem - ako server otkaže, cijeli sistem prestaje da radi autonomno. Da bi se to spriječilo, sistemi postaju složeniji, dodaju se metode ručne kontrole koje dupliraju automatizaciju u slučaju kvara servera.

Krenuli smo drugačijim putem, gdje je svaki uređaj sam sebi dovoljan. Dakle, server ne igra odlučujuću ulogu, već samo proširuje funkcionalnost.

Vratimo se misaonom eksperimentu. Uzmimo ponovo istih 8 Sonoff modula i instaliramo Lytko firmware u njih. Svi firmveri Lytko imaju tu funkciju SSDP. SSDP je mrežni protokol baziran na paketu internetskih protokola za oglašavanje i otkrivanje mrežnih usluga. Odgovor na zahtjev može biti standardni ili proširen. Pored standardnih funkcija, u ovaj odgovor smo uključili i kreiranje liste uređaja na mreži. Dakle, sami uređaji pronalaze jedni druge i svaki od njih će imati takvu listu. Primjer SSDP lista:

"ssdpList": 
	{
		"id": 94967291,  
		"ip": "192.168.x.x",
                "type": "thermostat"
	}, 
	{
		"id": 94967282,
		"ip": "192.168.x.x",
                "type": "thermostat"
	}

Kao što možete vidjeti iz primjera, lista uključuje ID-ove uređaja, IP adresu na mreži, tip jedinice (u našem slučaju termostat baziran na Sonoffu). Ova lista se ažurira svake dvije minute (ovaj period je dovoljan da odgovori na dinamičke promjene u broju uređaja na mreži). Na ovaj način pratimo dodane, promijenjene i onemogućene uređaje bez ikakvih radnji korisnika. Ova lista se šalje u pretraživač ili mobilnu aplikaciju, a sama skripta generiše stranicu sa zadatim brojem blokova. Svaki blok odgovara jednom uređaju/senzoru/kontroleru. Vizuelno lista izgleda ovako:

Lytko se ujedinjuje

Ali šta ako su drugi radio senzori povezani na esp8266/esp32 preko cc2530 (ZigBee) ili nrf24 (MySensors)?

O projektima

Na tržištu postoje različiti distribuirani sistemi. Naš sistem vam omogućava integraciju sa najpopularnijim.

Ispod su projekti koji na ovaj ili onaj način pokušavaju promijeniti situaciju s međusobnom nekompatibilnošću različitih proizvođača. Ovo je npr. SLS Gateway, MySensors ili ZESP32. ZigBee2MQTT je vezan za MQTT server, tako da nije prikladan za primjer.

Jedna od opcija za implementaciju MySensora je gateway baziran na ESP8266. Ostali primjeri su na ESP32. I u njima možete implementirati naš princip rada otkrivanja i kreiranja liste uređaja.

Uradimo još jedan misaoni eksperiment. Imamo ZESP32 gateway ili SLS Gateway, ili MySensors. Kako se mogu kombinovati u jednom informacionom prostoru? Standardnim funkcijama ovih gateway-a ćemo dodati biblioteku SSDP protokola. Prilikom pristupa ovom kontroleru preko SSDP-a, on će standardnom odgovoru dodati listu uređaja koji su na njega povezani. Na osnovu ovih informacija, pretraživač će generisati stranicu. Općenito će to izgledati ovako:

Lytko se ujedinjuje
Web interfejs

Lytko se ujedinjuje
PWA aplikacija

"ssdpList": 
{
   "id": 94967291, // уникальный идентификатор устройства
   "ip": "192.168.x.x", // ip адрес в сети
   "type": "thermostat" // тип устройства
},
{
   "id": 94967292,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{
   "id": 94967293,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{  
   "id": 13587532, 
   "type": "switch"  
},
{  
   "id": 98412557, 
   "type": "smoke"
},
{  
   "id": 57995113, 
   "type": "contact_sensor"
},
{  
   "id": 74123668,
   "type": "temperature_humidity_pressure_sensor"
},
{
    "id": 74621883, 
    "type": "temperature_humidity_sensor"
}

Primjer pokazuje da se uređaji dodaju nezavisno jedan od drugog. Povezana su 3 termostata sa sopstvenim IP adresama i 5 različitih senzora sa jedinstvenim ID-ovima. Ako je senzor povezan na Wi-Fi mrežu, imat će svoju IP adresu; ako je povezan na gateway, tada će IP adresa uređaja biti IP adresa gatewaya.

Koristimo WebSocket za komunikaciju sa uređajima. Ovo vam omogućava da minimizirate troškove resursa u poređenju sa dobijanjem zahteva i dinamičkim dobijanjem informacija prilikom povezivanja ili promene.

Podaci se preuzimaju direktno sa uređaja kojem blok pripada, zaobilazeći server. Dakle, ako neki od uređaja pokvari, sistem nastavlja sa radom. Web interfejs jednostavno ne prikazuje uređaj koji nedostaje sa liste. Ali signal o gubitku, ako je potrebno, doći će u obliku obavijesti u aplikaciji korisnika.

Prvi pokušaj implementacije ovog pristupa bila je PWA aplikacija. Ovo vam omogućava da pohranite bazu blokova na korisnikov uređaj i zatražite samo potrebne podatke. Ali zbog posebnosti strukture, ova opcija je nepotpuna. I postoji samo jedan izlaz - izvorna aplikacija za Android i IOS, koja je trenutno u aktivnom razvoju. Podrazumevano, aplikacija će raditi samo na internoj mreži. Ako je potrebno, sve možete prenijeti na vanjsku kontrolu. Dakle, kada korisnik napusti lokalnu mrežu, aplikacija se automatski prebacuje na oblak.

Eksterna kontrola - potpuno umnožavanje stranice. Kada je stranica aktivirana, korisnik se može prijaviti na server i upravljati uređajima preko svog ličnog naloga. Tako server proširuje svoju funkcionalnost, omogućavajući vam da upravljate uređajima dok ste izvan kuće, a ne da budete vezan za prosljeđivanje portova ili namjensku IP adresu.

Dakle, gornja opcija nema nedostatke serverskog pristupa, a ima i niz prednosti u vidu fleksibilnosti u povezivanju novih uređaja.

O termostatu

Pogledajmo kontrolni sistem koristeći naš termostat kao primjer.

pod uvjetom:

  1. Kontrola temperature za svaki termostat (prikazuje se kao poseban blok);
  2. Podešavanje rasporeda rada termostata (jutro, popodne, veče, noć);
  3. Odabir Wi-Fi mreže i povezivanje uređaja na nju;
  4. Ažuriranje uređaja „preko zraka“;
  5. Postavljanje MQTT;
  6. Konfigurirajte mrežu na koju je uređaj povezan.

Lytko se ujedinjuje

Osim kontrole preko web sučelja, omogućili smo i klasični - klikom na displej. Na ploči se nalazi Nextion NX3224T024 2.4-inčni monitor. Izbor je pao na njega zbog lakoće rada sa uređajem. Ali mi razvijamo sopstveni monitor baziran na STM32. Njegova funkcionalnost nije ništa lošija od Nextiona, ali će koštati manje, što će se pozitivno odraziti na konačnu cijenu uređaja.

Lytko se ujedinjuje

Kao i svaki termostatski ekran koji poštuje sebe, naš Nextion može:

  • podesiti temperaturu koju želi korisnik (pomoću tipki na desnoj strani);
  • uključivanje i isključivanje planiranog režima rada (dugme H);
  • rad releja displeja (strelica lijevo);
  • ima zaštitu za djecu (fizički klikovi su blokirani dok se brava ne ukloni);
  • prikazuje jačinu WiFi signala.

Osim toga, pomoću monitora možete:

  • odaberite tip senzora koji je instalirao korisnik;
  • upravljajte funkcijom zaključavanja za djecu;
  • ažurirajte firmver.

Lytko se ujedinjuje

Klikom na WiFi traku korisnik će saznati informacije o povezanoj mreži. QR kod se koristi za uparivanje uređaja u HomeKit firmveru.

Lytko se ujedinjuje

Demo rada sa displejom:

Lytko se ujedinjuje

Mi smo se razvili demo stranica sa tri povezana termostata.

Možete pitati: "Šta je posebno u vezi s vašim termostatom?" Sada na tržištu postoji mnogo termostata s Wi-Fi funkcijom, planiranim radom i kontrolom dodirom. I entuzijasti su napisali module za interakciju sa najpopularnijim sistemima pametnih kuća (Majordomo, HomeAssistant, itd.).

Naš termostat je kompatibilan sa ovakvim sistemima i ima sve navedeno. Ali posebnost je da se termostat stalno poboljšava, zahvaljujući fleksibilnosti sistema. Sa svakim ažuriranjem funkcionalnost će se širiti. Standardnom načinu upravljanja sistemom (prema rasporedu) dodaćemo i adaptivni. Aplikacija vam omogućava da dobijete geolokaciju korisnika. Zahvaljujući tome, sistem će dinamički menjati režime rada u zavisnosti od svoje lokacije. A vremenski modul će vam omogućiti da se prilagodite vremenskim uslovima.

I proširivost. Svako može zamijeniti svoj postojeći konvencionalni termostat našim. Uz minimalan napor. Odabrali smo 5 najpopularnijih senzora na tržištu i dodali podršku za njih. Ali čak i ako senzor ima ekskluzivne karakteristike, korisnik će ga moći spojiti na naš termostat. Da biste to učinili, morat ćete kalibrirati termostat za rad s određenim senzorom. Mi ćemo dati upute.

Kada povežete termostat ili bilo koji drugi uređaj, on se istovremeno pojavljuje svuda: i na web sučelju i u PWA aplikaciji. Dodavanje uređaja se dešava automatski: samo ga trebate povezati na Wi-Fi mrežu.

Naš sistem ne treba server, a ako zakaže, ne pretvara se u bundevu. Čak i ako jedna od komponenti pokvari, sistem ne počinje da radi u slučaju nužde. Kontroleri, senzori, uređaji - svaki element je i server i klijent, dakle potpuno autonoman.

Za sve zainteresovane naše društvene mreže: telegram, Instagram, Telegram News, VK, Facebook.

Pošta: [email zaštićen]

PS Ne ohrabrujemo vas da napustite server. Takođe podržavamo MQTT server i imamo sopstveni oblak. Naš cilj je da dovedemo stabilnost i pouzdanost sistema na potpuno novi nivo. Tako da server nije slaba tačka, već dopunjuje funkcionalnost i čini sistem praktičnijim.

izvor: www.habr.com

Dodajte komentar