Lytko ujedinjuje

Prije nekog vremena smo vas upoznali pametni termostat. Ovaj je članak izvorno zamišljen kao demonstracija firmvera i sustava upravljanja. Ali da bismo objasnili logiku termostata i ono što smo implementirali, potrebno je prikazati cijeli koncept u cjelini.

Lytko ujedinjuje

O automatizaciji

Konvencionalno se sva automatizacija može podijeliti u tri kategorije:
Kategorija 1 — odvojeni "pametni" uređaji. Kupujete žarulje, čajnike itd. od različitih proizvođača. Prednosti: Svaki uređaj proširuje mogućnosti i povećava udobnost. Protiv: Svaki novi proizvođač zahtijeva svoju aplikaciju. Protokoli uređaja različitih proizvođača često nisu međusobno kompatibilni.

Kategorija 2 — instalacija PC-a s jednom pločom ili x86 kompatibilnog. Time se uklanjaju ograničenja računalne snage, a MajorDoMo ili bilo koja druga distribucija poslužitelja za upravljanje pametnim domom instalira se na ovaj stroj. Tako su uređaji većine proizvođača povezani u jedinstven informacijski prostor. Oni. pojavljuje se vaš vlastiti poslužitelj za pametnu kuću. Prednosti: kompatibilnost pod jednim centrom, koji pruža poboljšane mogućnosti upravljanja. Protiv: ako poslužitelj zakaže, cijeli sustav se vraća u fazu 1, tj. postaje fragmentiran ili postaje beskoristan.

Kategorija 3 - najtvrđa opcija. U fazi popravka postavljaju se sve komunikacije i dupliciraju se svi sustavi. Prednosti: sve je dovedeno do savršenstva i tada kuća postaje uistinu pametna. Nedostaci: izuzetno skupo u usporedbi s kategorijama 1 i 2, potreba da se sve unaprijed razmisli i uzme u obzir svaki detalj.

Većina korisnika odabere opciju jedan, a zatim glatko prijeđe na opciju dva. A onda oni najuporniji dođu do opcije 3.

Ali postoji opcija koja se može nazvati distribuiranim sustavom: svaki pojedinačni uređaj bit će i poslužitelj i klijent. U biti, ovo je pokušaj da se uzme i kombinira opcija 1 i opcija 2. Uzmite sve njihove prednosti i eliminirajte nedostatke, kako biste uhvatili zlatnu sredinu.

Možda će netko reći da je takva opcija već razvijena. Ali takve su odluke usko usmjerene; za ljude koji znaju programirati. Cilj nam je smanjiti barijeru ulaska u takve distribuirane sustave, kako u vidu krajnjih uređaja tako i u vidu integracije postojećih uređaja u naš sustav. U slučaju termostata, korisnik jednostavno skine svoj stari termostat, ugradi pametni i na njega spoji svoje postojeće senzore. Bez ikakvih dodatnih koraka.

Pogledajmo integraciju u naš sustav na primjeru.

Zamislimo da imamo 8 Sonoff modula na našoj mreži. Za neke korisnike bit će dovoljna kontrola putem Sonoff oblaka (kategorija 1). Neki će početi koristiti firmware treće strane i glatko će prijeći u kategoriju 2. Većina firmware-a treće strane radi na istom principu: prijenos podataka na MQTT poslužitelj. OpenHub, Majordomo ili bilo koji drugi služe jednoj svrsi - ujediniti različite uređaje u jedinstven informacijski prostor koji se nalazi ili na internetu ili na lokalnoj mreži. Stoga je prisutnost poslužitelja obavezna. Tu nastaje glavni problem - ako Server zakaže, cijeli sustav prestaje raditi autonomno. Kako bi se to spriječilo, sustavi postaju složeniji, dodaju se metode ručne kontrole koje dupliciraju automatizaciju u slučaju kvara poslužitelja.

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

Vratimo se misaonom eksperimentu. Uzmimo opet istih 8 Sonoff modula i u njih instaliramo Lytko firmware. Svi firmwareovi tvrtke Lytko imaju tu funkciju SSDP. SSDP je mrežni protokol temeljen na paketu internetskih protokola za oglašavanje i otkrivanje mrežnih usluga. Odgovor na zahtjev može biti standardni ili prošireni. Osim standardnih funkcija, u ovaj odgovor uključili smo i izradu popisa uređaja na mreži. Tako se uređaji sami pronalaze, a svaki od njih će imati takav popis. Primjer SSDP lista:

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

Kao što se može vidjeti iz primjera, popis uključuje ID-ove uređaja, IP adresu na mreži i vrstu jedinice (u našem slučaju, termostat baziran na Sonoffu). Ovaj popis se ažurira svake dvije minute (ovo je razdoblje dovoljno 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. Taj se popis šalje pregledniku ili mobilnoj aplikaciji, a skripta sama generira stranicu sa zadanim brojem blokova. Svaki blok odgovara jednom uređaju/senzoru/kontroleru. Vizualno lista izgleda ovako:

Lytko ujedinjuje

Ali što ako su drugi radio senzori spojeni na esp8266/esp32 putem cc2530 (ZigBee) ili nrf24 (MySensors)?

O projektima

Na tržištu postoje različiti distribuirani sustavi. Naš sustav vam omogućuje integraciju s najpopularnijima.

Ispod su projekti koji na ovaj ili onaj način pokušavaju promijeniti situaciju s nekompatibilnošću različitih proizvođača jedni s drugima. Ovo je npr. SLS pristupnik, Moji senzori ili ZESP32. ZigBee2MQTT vezan je za MQTT poslužitelj, pa nije prikladan za primjer.

Jedna opcija za implementaciju MySensors je pristupnik temeljen na ESP8266. Ostali primjeri su na ESP32. I u njima možete implementirati naše načelo rada otkrivanja i izrade popisa uređaja.

Napravimo još jedan misaoni eksperiment. Imamo ZESP32 gateway ili SLS Gateway ili MySensors. Kako se oni mogu spojiti u jedinstveni informacijski prostor? Dodat ćemo biblioteku SSDP protokola standardnim funkcijama ovih pristupnika. Prilikom pristupa ovom kontroleru putem SSDP-a, on će standardnom odgovoru dodati popis uređaja koji su na njega povezani. Na temelju tih podataka preglednik će generirati stranicu. Općenito će izgledati ovako:

Lytko ujedinjuje
Web sučelje

Lytko 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 neovisno jedan o drugom. Povezana su 3 termostata s vlastitim IP adresama i 5 različitih senzora s jedinstvenim ID-ovima. Ako je senzor spojen na Wi-Fi mrežu, imat će vlastiti IP; ako je spojen na pristupnik, tada će IP adresa uređaja biti IP adresa pristupnika.

Koristimo WebSocket za komunikaciju s uređajima. To vam omogućuje smanjenje troškova resursa u usporedbi s dobivanjem zahtjeva i dinamičkim dobivanjem informacija prilikom povezivanja ili promjene.

Podaci se preuzimaju izravno s uređaja kojem blok pripada, zaobilazeći poslužitelj. Dakle, ako bilo koji od uređaja zakaže, sustav nastavlja s radom. Web sučelje jednostavno ne prikazuje uređaj koji nedostaje s popisa. Ali signal o gubitku, ako je potrebno, doći će u obliku obavijesti u korisničkoj aplikaciji.

Prvi pokušaj implementacije ovog pristupa bila je PWA aplikacija. To vam omogućuje pohranjivanje baze blokova na korisnikov uređaj i traženje samo potrebnih podataka. Ali zbog osobitosti strukture, ova opcija je nepotpuna. I postoji samo jedan izlaz - izvorna aplikacija za Android i IOS, koja je trenutno u aktivnom razvoju. Prema zadanim postavkama, 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 u oblak.

Vanjska kontrola - kompletno dupliciranje stranice. Kada je stranica aktivirana, korisnik se može prijaviti na poslužitelj i upravljati uređajima putem svog osobnog računa. Na taj način poslužitelj proširuje svoju funkcionalnost, omogućujući vam da upravljate uređajima dok ste izvan kuće, a da niste vezani za prosljeđivanje porta ili namjenski IP.

Dakle, gornja opcija nema nedostataka poslužiteljskog pristupa, a ima i niz prednosti u vidu fleksibilnosti u povezivanju novih uređaja.

O termostatu

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

Osigurano:

  1. Kontrola temperature za svaki termostat (prikazuje se kao zaseban blok);
  2. Postavljanje rasporeda rada termostata (jutro, popodne, večer, noć);
  3. Odabir Wi-Fi mreže i povezivanje uređaja s njom;
  4. Ažuriranje uređaja "bežično";
  5. Postavljanje MQTT-a;
  6. Konfigurirajte mrežu na koju je uređaj spojen.

Lytko ujedinjuje

Osim upravljanja putem web sučelja, osigurali smo ono klasično - klikom na displej. Na ploči je Nextion NX3224T024 2.4-inčni monitor. Izbor je pao na njega zbog jednostavnosti rada s uređajem. Ali razvijamo vlastiti monitor temeljen na STM32. Njegova funkcionalnost nije lošija od one Nextiona, ali će koštati manje, što će pozitivno utjecati na konačnu cijenu uređaja.

Lytko ujedinjuje

Kao svaki zaslon termostata koji poštuje sebe, naš Nextion može:

  • postavite temperaturu koju korisnik zahtijeva (pomoću gumba s desne strane);
  • uključite i isključite programirani način rada (gumb H);
  • rad releja za prikaz (strelica lijevo);
  • ima zaštitu od djece (fizički klikovi su blokirani dok se brava ne ukloni);
  • prikazuje snagu WiFi signala.

Osim toga, pomoću monitora možete:

  • odaberite vrstu senzora instaliranog od strane korisnika;
  • upravljanje značajkom zaključavanja za djecu;
  • ažurirati firmware.

Lytko ujedinjuje

Klikom na WiFi traku korisnik će saznati podatke o spojenoj mreži. QR kod se koristi za uparivanje uređaja u HomeKit firmware-u.

Lytko ujedinjuje

Demo rada sa zaslonom:

Lytko ujedinjuje

Razvili smo se demo stranica sa tri spojena termostata.

Možete pitati: "Što je posebno u vezi s vašim termostatom?" Sada na tržištu postoje mnogi termostati s Wi-Fi funkcijom, programiranim radom i upravljanjem dodirom. A entuzijasti su napisali module za interakciju s najpopularnijim sustavima pametne kuće (Majordomo, HomeAssistant, itd.).

Naš je termostat kompatibilan s takvim sustavima i ima sve gore navedeno. Ali posebnost je da se termostat stalno poboljšava, zahvaljujući fleksibilnosti sustava. Sa svakim ažuriranjem funkcionalnost će se proširivati. Standardnom načinu upravljanja sustavom (prema rasporedu) dodat ćemo adaptivni. Aplikacija vam omogućuje dobivanje geolokacije korisnika. Zahvaljujući tome, sustav će dinamički mijenjati načine rada ovisno o svojoj lokaciji. A vremenski modul omogućit će vam prilagodbu vremenskim uvjetima.

I proširivost. Svatko 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 vam dati upute.

Prilikom povezivanja termostata ili bilo kojeg drugog uređaja, on se istovremeno pojavljuje posvuda: i na web sučelju iu PWA aplikaciji. Dodavanje uređaja događa se automatski: samo ga trebate spojiti na Wi-Fi mrežu.

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

Za zainteresirane naše društvene mreže: Telegram, Instagram, Telegram vijesti, VK, Facebook.

mail: [e-pošta zaštićena]

PS Ne potičemo vas da napustite poslužitelj. Također podržavamo MQTT poslužitelj i imamo vlastiti oblak. Naš cilj je dovesti stabilnost i pouzdanost sustava na potpuno novu razinu. Tako da Server nije slaba točka, već nadopunjuje funkcionalnost i čini sustav praktičnijim.

Izvor: www.habr.com

Dodajte komentar