Lytko spája

Pred časom sme vám predstavili inteligentný termostat. Tento článok bol pôvodne určený ako demonštrácia jeho firmvéru a riadiaceho systému. Aby sme však vysvetlili logiku termostatu a to, čo sme implementovali, je potrebné načrtnúť celý koncept ako celok.

Lytko spája

O automatizácii

Bežne možno všetku automatizáciu rozdeliť do troch kategórií:
Kategória 1 — samostatné „inteligentné“ zariadenia. Kupujete žiarovky, čajníky atď. od rôznych výrobcov. Výhody: Každé zariadenie rozširuje možnosti a zvyšuje komfort. Nevýhody: Každý nový výrobca vyžaduje vlastnú aplikáciu. Protokoly zariadení od rôznych výrobcov často nie sú navzájom kompatibilné.

Kategória 2 — inštalácia jednodoskového PC alebo kompatibilného s x86. Tým sa odstránia obmedzenia výpočtového výkonu a na tomto počítači je nainštalovaný MajorDoMo alebo akákoľvek iná serverová distribúcia na správu inteligentnej domácnosti. Zariadenia väčšiny výrobcov sú tak prepojené v jedinom informačnom priestore. Tie. zobrazí sa váš vlastný Server pre inteligentnú domácnosť. Výhody: kompatibilita v rámci jedného centra, ktoré poskytuje rozšírené možnosti správy. Nevýhody: ak zlyhá server, celý systém sa vráti do fázy 1, t.j. sa roztriešti alebo sa stane zbytočným.

Kategória 3 - najtvrdšia možnosť. Vo fáze opravy sú všetky komunikácie položené a všetky systémy sú duplikované. Plusy: všetko je dovedené k dokonalosti a potom sa dom stáva skutočne inteligentným. Nevýhody: extrémne drahé v porovnaní s kategóriou 1 a 2, nutnosť si všetko dopredu premyslieť a zohľadniť každý malý detail.

Väčšina používateľov si vyberie možnosť jedna a potom plynulo prejde na možnosť dva. A potom tí najvytrvalejší dosiahnu možnosť 3.

Existuje však možnosť, ktorú možno nazvať distribuovaným systémom: každé jednotlivé zariadenie bude serverom aj klientom. V podstate ide o pokus vziať a skombinovať možnosť 1 a možnosť 2. Zoberte všetky ich klady a eliminujte zápory, aby ste dosiahli zlatú strednú cestu.

Možno niekto povie, že takáto možnosť už bola vyvinutá. Takéto rozhodnutia sú však úzko zamerané; pre ľudí so znalosťou programovania. Naším cieľom je znižovať bariéru vstupu do takto distribuovaných systémov, a to ako vo forme koncových zariadení, tak aj vo forme integrácie existujúcich zariadení do nášho systému. V prípade termostatu používateľ jednoducho odstráni svoj starý termostat, nainštaluje inteligentný a pripojí k nemu svoje existujúce senzory. Bez akýchkoľvek dodatočných krokov.

Pozrime sa na integráciu do nášho systému na príklade.

Predstavme si, že máme v sieti 8 modulov Sonoff. Niektorým používateľom postačí ovládanie cez cloud Sonoff (kategória 1). Niektorí začnú používať firmvér tretích strán a plynule prejdú do kategórie 2. Väčšina firmvéru tretích strán funguje na rovnakom princípe: prenos dát na server MQTT. OpenHub, Majordomo alebo akékoľvek iné slúžia jedinému účelu – zjednotiť rôznorodé zariadenia do jedného informačného priestoru umiestneného buď na internete alebo v lokálnej sieti. Preto je prítomnosť servera povinná. Tu vzniká hlavný problém – ak zlyhá Server, celý systém prestane fungovať autonómne. Aby sa tomu zabránilo, systémy sa stávajú zložitejšími, pridávajú sa metódy manuálneho ovládania, ktoré v prípade zlyhania servera zdvojujú automatizáciu.

Išli sme inou cestou, kde je každé zariadenie sebestačné. Server teda nehrá rozhodujúcu úlohu, ale iba rozširuje funkcionalitu.

Vráťme sa k myšlienkovému experimentu. Vezmime si opäť tých istých 8 modulov Sonoff a nainštalujeme do nich firmvér Lytko. Všetky firmvéry Lytko majú túto funkciu SSDP. SSDP je sieťový protokol založený na sade internetových protokolov na reklamu a zisťovanie sieťových služieb. Odpoveď na požiadavku môže byť štandardná alebo rozšírená. Okrem štandardných funkcií sme do tejto odpovede zahrnuli aj vytvorenie zoznamu zariadení v sieti. Samotné zariadenia sa teda navzájom nájdu a každé z nich bude mať takýto zoznam. Príklad listu SSDP:

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

Ako vidíte z príkladu, zoznam obsahuje ID zariadení, IP adresu v sieti, typ jednotky (v našom prípade termostat založený na Sonoff). Tento zoznam sa aktualizuje každé dve minúty (toto obdobie je dostatočné na to, aby reagovalo na dynamické zmeny v počte zariadení v sieti). Týmto spôsobom sledujeme pridané, zmenené a deaktivované zariadenia bez akejkoľvek akcie používateľa. Tento zoznam sa odošle do prehliadača alebo mobilnej aplikácie a skript sám vygeneruje stránku s daným počtom blokov. Každý blok zodpovedá jednému zariadeniu/senzoru/ovládaču. Vizuálne zoznam vyzerá takto:

Lytko spája

Ale čo ak sú k esp8266/esp32 pripojené ďalšie rádiové senzory cez cc2530 (ZigBee) alebo nrf24 (MySensors)?

O projektoch

Na trhu sú rôzne distribuované systémy. Náš systém vám umožňuje integráciu s tými najpopulárnejšími.

Nižšie sú uvedené projekty, ktoré sa tak či onak snažia zmeniť situáciu s nekompatibilitou rôznych výrobcov medzi sebou. Toto je napr. Brána SLS, MySensors alebo ZESP32. ZigBee2MQTT je viazaný na server MQTT, takže nie je vhodný pre tento príklad.

Jednou z možností implementácie MySensors je brána založená na ESP8266. Ostatné príklady sú na ESP32. A v nich môžete implementovať náš princíp fungovania detekcie a vytvárania zoznamu zariadení.

Urobme ďalší myšlienkový experiment. Máme bránu ZESP32 alebo bránu SLS alebo MySensors. Ako ich možno kombinovať v jednom informačnom priestore? K štandardným funkciám týchto brán pridáme knižnicu protokolu SSDP. Pri prístupe k tomuto ovládaču cez SSDP pridá do štandardnej odpovede zoznam zariadení, ktoré sú k nemu pripojené. Na základe týchto informácií prehliadač vygeneruje stránku. Vo všeobecnosti to bude vyzerať takto:

Lytko spája
webové rozhranie

Lytko spája
Aplikácia PWA

"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"
}

Príklad ukazuje, že zariadenia sa pridávajú nezávisle od seba. Sú pripojené 3 termostaty s vlastnými IP adresami a 5 rôznych senzorov s jedinečnými ID. Ak je senzor pripojený k sieti Wi-Fi, bude mať svoju vlastnú IP; ak je pripojený k bráne, potom IP adresa zariadenia bude IP adresou brány.

Na komunikáciu so zariadeniami používame WebSocket. To vám umožňuje minimalizovať náklady na zdroje v porovnaní so získavaním požiadaviek a získavať informácie dynamicky pri pripájaní alebo zmene.

Údaje sa získavajú priamo zo zariadenia, ktorému blok patrí, pričom sa obchádza server. Ak teda niektoré zo zariadení zlyhá, systém pokračuje v prevádzke. Webové rozhranie len nezobrazuje chýbajúce zariadenie zo zoznamu. Signál o strate však v prípade potreby príde vo forme upozornenia v aplikácii používateľa.

Prvým pokusom o implementáciu tohto prístupu bola aplikácia PWA. To vám umožní uložiť blokovú základňu na zariadení používateľa a vyžiadať si len potrebné údaje. Ale vzhľadom na zvláštnosti štruktúry je táto možnosť neúplná. A existuje len jedna cesta von - natívna aplikácia pre Android a IOS, ktorá je momentálne v aktívnom vývoji. V predvolenom nastavení bude aplikácia fungovať iba vo vnútornej sieti. V prípade potreby môžete všetko preniesť na externú kontrolu. Keď teda používateľ opustí lokálnu sieť, aplikácia sa automaticky prepne do cloudu.

Externá kontrola – úplná duplikácia stránky. Keď je stránka aktivovaná, používateľ sa môže prihlásiť na server a spravovať zariadenia prostredníctvom svojho osobného účtu. Server tak rozširuje svoju funkčnosť a umožňuje vám spravovať zariadenia, keď ste mimo domova, a nie byť viazaný na presmerovanie portov alebo vyhradenú IP.

Vyššie uvedená možnosť teda nemá nevýhody serverového prístupu a má aj množstvo výhod v podobe flexibility pri pripájaní nových zariadení.

O termostate

Pozrime sa ako príklad na riadiaci systém pomocou nášho termostatu.

Poskytnuté:

  1. Regulácia teploty pre každý termostat (zobrazuje sa ako samostatný blok);
  2. Nastavenie pracovného plánu termostatu (ráno, poobede, večer, noc);
  3. Výber siete Wi-Fi a pripojenie zariadenia k nej;
  4. Aktualizácia zariadenia „vzduchom“;
  5. Nastavenie MQTT;
  6. Nakonfigurujte sieť, ku ktorej je zariadenie pripojené.

Lytko spája

Okrem ovládania cez webové rozhranie sme poskytli klasické – klikaním na displej. Na doske je 3224-palcový monitor Nextion NX024T2.4. Voľba padla na neho kvôli jednoduchosti práce so zariadením. Vyvíjame však vlastný monitor založený na STM32. Jeho funkčnosť nie je o nič horšia ako u Nextionu, ale bude stáť menej, čo bude mať pozitívny vplyv na konečnú cenu zariadenia.

Lytko spája

Ako každá obrazovka termostatu, aj naša Nextion dokáže:

  • nastaviť teplotu požadovanú používateľom (pomocou tlačidiel vpravo);
  • zapnutie a vypnutie režimu plánovanej prevádzky (tlačidlo H);
  • činnosť relé displeja (šípka vľavo);
  • má detskú ochranu (fyzické kliknutia sú zablokované, kým sa zámok neodstráni);
  • zobrazuje silu signálu WiFi.

Okrem toho pomocou monitora môžete:

  • vyberte typ snímača nainštalovaného používateľom;
  • spravovať funkciu detskej zámky;
  • aktualizovať firmvér.

Lytko spája

Kliknutím na lištu WiFi používateľ zistí informácie o pripojenej sieti. QR kód sa používa na spárovanie zariadenia vo firmvéri HomeKit.

Lytko spája

Ukážka práce s displejom:

Lytko spája

Vyvinuli sme sa ukážková stránka s tromi pripojenými termostatmi.

Môžete sa opýtať: „Čo je zvláštne na vašom termostate?“ Teraz je na trhu veľa termostatov s funkciou Wi-Fi, plánovanou prevádzkou a dotykovým ovládaním. A nadšenci napísali moduly na interakciu s najpopulárnejšími inteligentnými domácimi systémami (Majordomo, HomeAssistant atď.).

Náš termostat je kompatibilný s takýmito systémami a má všetko vyššie uvedené. Charakteristickým rysom je však to, že termostat sa neustále zlepšuje vďaka flexibilite systému. S každou aktualizáciou sa funkčnosť rozšíri. K štandardnému spôsobu riadenia systému (podľa harmonogramu) pridáme adaptívny. Aplikácia umožňuje získať geolokáciu používateľa. Vďaka tomu bude systém dynamicky meniť prevádzkové režimy v závislosti od svojej polohy. A meteorologický modul vám umožní prispôsobiť sa poveternostným podmienkam.

A rozšíriteľnosť. Každý môže vymeniť svoj existujúci bežný termostat za náš. S minimálnym úsilím. Vybrali sme 5 najobľúbenejších senzorov na trhu a pridali sme pre ne podporu. Ale aj keď má senzor exkluzívne vlastnosti, používateľ ho bude môcť pripojiť k nášmu termostatu. Aby ste to dosiahli, budete musieť kalibrovať termostat, aby pracoval s konkrétnym snímačom. Poskytneme pokyny.

Pri pripojení termostatu alebo akéhokoľvek iného zariadenia sa súčasne objaví všade: vo webovom rozhraní aj v aplikácii PWA. Zariadenie sa pridáva automaticky: stačí ho pripojiť k sieti Wi-Fi.

Náš systém nepotrebuje server a ak zlyhá, nezmení sa na tekvicu. Aj keď jeden z komponentov zlyhá, systém nezačne fungovať v núdzovom scenári. Ovládače, senzory, zariadenia – každý prvok je zároveň serverom aj klientom, preto je úplne autonómny.

Pre záujemcov naše sociálne siete: telegram, Instagram, Telegramové správy, VK, facebook.

E-mail: [chránené e-mailom]

PS Nenabádame vás, aby ste opustili Server. Podporujeme aj server MQTT a máme vlastný cloud. Naším cieľom je posunúť stabilitu a spoľahlivosť systému na úplne novú úroveň. Aby Server nebol slabou stránkou, ale dopĺňal funkčnosť a spríjemňoval systém.

Zdroj: hab.com

Pridať komentár