Lytko spojuje

Před časem jsme vám představili chytrý termostat. Tento článek byl původně zamýšlen jako demonstrace jeho firmwaru a řídicího systému. Abychom ale vysvětlili logiku termostatu a to, co jsme implementovali, je nutné nastínit celý koncept jako celek.

Lytko spojuje

O automatizaci

Obvykle lze veškerou automatizaci rozdělit do tří kategorií:
Kategorie 1 — samostatná „chytrá“ zařízení. Nakupujete žárovky, čajové konvice atd. od různých výrobců. Klady: Každé zařízení rozšiřuje možnosti a zvyšuje pohodlí. Nevýhody: Každý nový výrobce vyžaduje vlastní aplikaci. Protokoly zařízení od různých výrobců často nejsou vzájemně kompatibilní.

Kategorie 2 — instalace jednodeskového PC nebo kompatibilního s x86. To odstraňuje omezení výpočetního výkonu a na tomto počítači je nainstalován MajorDoMo nebo jakákoli jiná serverová distribuce pro správu chytré domácnosti. Zařízení většiny výrobců jsou tak propojena v jediném informačním prostoru. Tito. objeví se váš vlastní Server pro chytrou domácnost. Výhody: kompatibilita v rámci jediného centra, což poskytuje rozšířené možnosti správy. Nevýhody: pokud selže server, celý systém se vrátí do fáze 1, tzn. se roztříští nebo se stane zbytečným.

Kategorie 3 - nejtvrdší možnost. Ve fázi opravy jsou položeny všechny komunikace a všechny systémy jsou duplikovány. Klady: vše je dovedeno k dokonalosti a dům se pak stává skutečně chytrým. Nevýhody: extrémně drahé oproti kategoriím 1 a 2, nutnost si vše předem promyslet a zohlednit každý malý detail.

Většina uživatelů si vybere možnost jedna a poté plynule přejde k možnosti dvě. A pak ti nejvytrvalejší dosáhnou možnosti 3.

Existuje však možnost, kterou lze nazvat distribuovaným systémem: každé jednotlivé zařízení bude serverem i klientem. V podstatě se jedná o pokus vzít a zkombinovat možnost 1 a možnost 2. Vezměte všechny jejich klady a eliminujte zápory, abyste chytili zlatou střední cestu.

Možná někdo řekne, že taková možnost již byla vyvinuta. Ale taková rozhodnutí jsou úzce zaměřena; pro lidi znalé programování. Naším cílem je snížit bariéru vstupu do takto distribuovaných systémů, a to jak v podobě koncových zařízení, tak v podobě integrace stávajících zařízení do našeho systému. V případě termostatu uživatel jednoduše vyjme svůj starý termostat, nainstaluje chytrý a připojí k němu svá stávající čidla. Bez dalších kroků.

Podívejme se na integraci do našeho systému na příkladu.

Představme si, že máme v síti 8 modulů Sonoff. Některým uživatelům bude stačit ovládání přes cloud Sonoff (kategorie 1). Někteří začnou používat firmware třetích stran a plynule přejdou do kategorie 2. Většina firmwaru třetích stran funguje na stejném principu: přenos dat na server MQTT. OpenHub, Majordomo nebo jakýkoli jiný slouží jedinému účelu – sjednotit nesourodá zařízení do jediného informačního prostoru umístěného buď na internetu, nebo v lokální síti. Proto je přítomnost serveru povinná. Zde nastává hlavní problém – pokud selže Server, celý systém přestane fungovat autonomně. Aby se tomu zabránilo, systémy se stávají složitějšími, přidávají se metody ručního ovládání, které v případě selhání serveru zdvojují automatizaci.

Šli jsme jinou cestou, kdy je každé zařízení soběstačné. Server tedy nehraje rozhodující roli, ale pouze rozšiřuje funkčnost.

Vraťme se k myšlenkovému experimentu. Vezmeme znovu stejných 8 modulů Sonoff a nainstalujeme do nich firmware Lytko. Všechny Lytko firmware mají tuto funkci SSDP. SSDP je síťový protokol založený na sadě internetových protokolů pro reklamu a zjišťování síťových služeb. Odpověď na požadavek může být standardní nebo rozšířená. Kromě standardních funkcí jsme do této odpovědi zahrnuli vytvoření seznamu zařízení v síti. Zařízení se tedy sama najdou a každé z nich bude mít takový seznam. Příklad listu SSDP:

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

Jak můžete vidět z příkladu, seznam obsahuje ID zařízení, IP adresu v síti, typ jednotky (v našem případě termostat na bázi Sonoff). Tento seznam je aktualizován jednou za dvě minuty (tato doba je dostatečná pro reakci na dynamické změny v počtu zařízení v síti). Tímto způsobem sledujeme zařízení přidaná, změněná a deaktivovaná bez jakékoli akce uživatele. Tento seznam se odešle do prohlížeče nebo mobilní aplikace a skript sám vygeneruje stránku s daným počtem bloků. Každý blok odpovídá jednomu zařízení/senzoru/kontroléru. Vizuálně seznam vypadá takto:

Lytko spojuje

Ale co když jsou k esp8266/esp32 připojeny další rádiové senzory přes cc2530 (ZigBee) nebo nrf24 (MySensors)?

O projektech

Na trhu jsou různé distribuované systémy. Náš systém vám umožňuje integraci s těmi nejoblíbenějšími.

Níže jsou uvedeny projekty, které se tak či onak snaží změnit situaci s nekompatibilitou různých výrobců mezi sebou. Jedná se např. Brána SLS, MySensors nebo ZESP32. ZigBee2MQTT je svázán se serverem MQTT, takže pro příklad není vhodný.

Jednou z možností implementace MySensors je brána založená na ESP8266. Zbytek příkladů je na ESP32. A v nich můžete implementovat náš princip fungování detekce a vytváření seznamu zařízení.

Udělejme další myšlenkový experiment. Máme bránu ZESP32 nebo bránu SLS nebo MySensors. Jak je lze kombinovat v jednom informačním prostoru? Ke standardním funkcím těchto bran přidáme knihovnu protokolu SSDP. Při přístupu k tomuto ovladači přes SSDP přidá do standardní odpovědi seznam zařízení, která jsou k němu připojena. Na základě těchto informací prohlížeč vygeneruje stránku. Obecně to bude vypadat takto:

Lytko spojuje
webové rozhraní

Lytko spojuje
aplikace 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"
}

Příklad ukazuje, že zařízení se přidávají nezávisle na sobě. Jsou připojeny 3 termostaty s vlastními IP adresami a 5 různých senzorů s unikátními ID. Pokud je senzor připojen k síti Wi-Fi, bude mít svou vlastní IP; pokud je připojen k bráně, pak IP adresa zařízení bude IP adresou brány.

Ke komunikaci se zařízeními používáme WebSocket. To vám umožňuje minimalizovat náklady na zdroje ve srovnání s přijímáním požadavků a získávat informace dynamicky při připojování nebo změně.

Data jsou sbírána přímo ze zařízení, ke kterému blok patří, obchází server. Pokud tedy některé ze zařízení selže, systém pokračuje v provozu. Webové rozhraní pouze nezobrazí chybějící zařízení ze seznamu. Signál o ztrátě však v případě potřeby přijde ve formě upozornění v aplikaci uživatele.

Prvním pokusem o implementaci tohoto přístupu byla aplikace PWA. To umožňuje uložit blokovou základnu na zařízení uživatele a požadovat pouze nezbytná data. Ale kvůli zvláštnostem struktury je tato možnost neúplná. A existuje jen jedna cesta ven – nativní aplikace pro Android a IOS, která je v současné době v aktivním vývoji. Ve výchozím nastavení bude aplikace fungovat pouze v interní síti. V případě potřeby můžete vše převést na externí ovládání. Když tedy uživatel opustí místní síť, aplikace se automaticky přepne do cloudu.

Externí kontrola - úplné zdvojení stránky. Po aktivaci stránky se uživatel může přihlásit na server a spravovat zařízení prostřednictvím svého osobního účtu. Server tak rozšiřuje svou funkcionalitu a umožňuje vám spravovat zařízení mimo domov a nebýt vázán na přesměrování portů nebo vyhrazenou IP.

Výše uvedená možnost tedy nemá nevýhody serverového přístupu a má také řadu výhod v podobě flexibility při připojování nových zařízení.

O termostatu

Podívejme se jako příklad na řídicí systém pomocí našeho termostatu.

Pokud:

  1. Ovládání teploty pro každý termostat (zobrazeno jako samostatný blok);
  2. Nastavení pracovního plánu termostatu (ráno, odpoledne, večer, noc);
  3. Výběr sítě Wi-Fi a připojení zařízení k ní;
  4. Aktualizace zařízení „vzduchem“;
  5. Nastavení MQTT;
  6. Nakonfigurujte síť, ke které je zařízení připojeno.

Lytko spojuje

Kromě ovládání přes webové rozhraní jsme zajistili to klasické – kliknutím na displej. Na desce je 3224palcový monitor Nextion NX024T2.4. Volba padla na něj kvůli snadné práci s přístrojem. Ale vyvíjíme vlastní monitor založený na STM32. Jeho funkčnost není o nic horší než u Nextionu, ale bude levnější, což bude mít pozitivní dopad na konečnou cenu zařízení.

Lytko spojuje

Jako každá termostatická obrazovka, naše Nextion může:

  • nastavit teplotu požadovanou uživatelem (pomocí tlačítek vpravo);
  • zapnout a vypnout režim plánovaného provozu (tlačítko H);
  • činnost relé displeje (šipka vlevo);
  • má dětskou ochranu (fyzické cvaknutí jsou blokovány, dokud není zámek odstraněn);
  • zobrazuje sílu signálu WiFi.

Kromě toho můžete pomocí monitoru:

  • vyberte typ snímače nainstalovaného uživatelem;
  • spravovat funkci dětského zámku;
  • aktualizovat firmware.

Lytko spojuje

Kliknutím na lištu WiFi uživatel zjistí informace o připojené síti. QR kód slouží ke spárování zařízení ve firmwaru HomeKit.

Lytko spojuje

Ukázka práce s displejem:

Lytko spojuje

Vyvinuli jsme se ukázková stránka se třemi připojenými termostaty.

Můžete se zeptat: „Co je zvláštního na vašem termostatu?“ Nyní je na trhu mnoho termostatů s funkcí Wi-Fi, plánovaným provozem a dotykovým ovládáním. A nadšenci napsali moduly pro interakci s nejoblíbenějšími systémy pro chytrou domácnost (Majordomo, HomeAssistant atd.).

Náš termostat je kompatibilní s takovými systémy a má vše výše uvedené. Ale charakteristickým rysem je, že termostat je neustále vylepšován díky flexibilitě systému. S každou aktualizací se funkce rozšíří. Ke standardnímu způsobu správy systému (podle harmonogramu) přidáme adaptivní. Aplikace umožňuje získat geolokaci uživatele. Díky tomu bude systém dynamicky měnit provozní režimy v závislosti na svém umístění. A modul počasí vám umožní přizpůsobit se povětrnostním podmínkám.

A rozšiřitelnost. Každý může vyměnit svůj stávající konvenční termostat za náš. S minimálním úsilím. Vybrali jsme 5 nejoblíbenějších senzorů na trhu a přidali pro ně podporu. Ale i když má senzor exkluzivní vlastnosti, uživatel jej bude moci připojit k našemu termostatu. Chcete-li to provést, budete muset zkalibrovat termostat pro práci s konkrétním senzorem. Poskytneme pokyny.

Při připojení termostatu nebo jakéhokoli jiného zařízení se současně objeví všude: jak ve webovém rozhraní, tak v aplikaci PWA. Přidání zařízení probíhá automaticky: stačí jej připojit k síti Wi-Fi.

Náš systém nepotřebuje server, a pokud selže, nepromění se v dýni. I když jedna z komponent selže, systém nezačne fungovat v nouzovém scénáři. Ovladače, senzory, zařízení – každý prvek je zároveň serverem i klientem, tudíž zcela autonomní.

Pro zájemce naše sociální sítě: Telegram, instagram, Telegramové zprávy, VK, facebook.

E-mail: [chráněno e-mailem]

PS Nedoporučujeme vám, abyste opustili Server. Podporujeme také server MQTT a máme vlastní cloud. Naším cílem je posunout stabilitu a spolehlivost systému na zcela novou úroveň. Aby Server nebyl slabinou, ale doplňoval funkcionalitu a dělal systém pohodlnějším.

Zdroj: www.habr.com

Přidat komentář