Lytko ferienet

In skoft lyn hawwe wy jo yntrodusearre smart thermostaat. Dit artikel wie oarspronklik bedoeld as in demonstraasje fan har firmware- en kontrôlesysteem. Mar om de logika fan 'e thermostaat te ferklearjen en wat wy hawwe útfierd, is it nedich om it heule konsept as gehiel te sketsen.

Lytko ferienet

Oer automatisearring

Konvinsjoneel kin alle automatisearring wurde ferdield yn trije kategoryen:
Kategory 1 - aparte "smart" apparaten. Jo keapje gloeilampen, teepotten, ensfh. fan ferskate fabrikanten. Pros: Elk apparaat wreidet mooglikheden út en fergruttet komfort. Cons: Elke nije fabrikant fereasket in eigen applikaasje. Protokollen fan apparaten fan ferskate fabrikanten binne faak net kompatibel mei elkoar.

Kategory 2 - ynstallaasje fan in single-board PC of x86 kompatibel. Dit ferwideret beheiningen op rekkenkrêft, en MajorDoMo of in oare serverdistribúsje foar it behearen fan in tûk hûs is ynstalleare op dizze masine. Sa binne apparaten fan de measte fabrikanten ferbûn yn ien ynformaasjeromte. Dy. dyn eigen Server foar in tûk thús ferskynt. Foardielen: kompatibiliteit ûnder ien sintrum, dat ferbettere behearmooglikheden leveret. Cons: as de tsjinner mislearret, giet it hiele systeem werom nei poadium 1, d.w.s. wurdt fragminten of wurdt nutteloos.

Kategory 3 - de meast hardcore opsje. By it reparaasjestadium wurde alle kommunikaasje lein en alle systemen wurde duplikearre. Foardielen: alles wurdt ta folsleinens brocht en dan wurdt it hûs echt tûk. Neidielen: ekstreem djoer yn ferliking mei kategoryen 1 en 2, de needsaak om alles fan tefoaren troch te tinken en elk lyts detail yn rekken te hâlden.

De measte brûkers kieze opsje ien en gean dan soepel troch nei opsje twa. En dan berikke de meast persistente opsje 3.

Mar d'r is in opsje dy't in ferdield systeem kin wurde neamd: elk yndividueel apparaat sil sawol in tsjinner as in kliïnt wêze. Yn essinsje is dit in besykjen om opsje 1 en opsje 2 te nimmen en te kombinearjen. Nim al har foardielen en eliminearje de neidielen, om de gouden middel te fangen.

Miskien sil immen sizze dat sa'n opsje al ûntwikkele is. Mar sokke besluten binne smel rjochte; foar minsken mei kennis fan programmearring. Us doel is om de barriêre foar yngong yn sokke ferspraat systemen te ferleegjen, sawol yn 'e foarm fan einapparaten as yn' e foarm fan it yntegrearjen fan besteande apparaten yn ús systeem. Yn it gefal fan in thermostaat ferwideret de brûker gewoan syn âlde thermostaat, ynstallearret in tûke, en ferbynt syn besteande sensors derop. Sûnder ekstra stappen.

Litte wy nei yntegraasje yn ús systeem sjen mei in foarbyld.

Litte wy ús foarstelle dat wy 8 Sonoff-modules hawwe op ús netwurk. Foar guon brûkers sil kontrôle fia de Sonoff-wolk (kategory 1) genôch wêze. Guon sille begjinne mei it brûken fan tredden firmware en sil soepel ferhúzje nei kategory 2. It grutste part fan tredden firmware wurket op itselde prinsipe: oerdracht fan gegevens nei in MQTT tsjinner. OpenHub, Majordomo of in oar tsjinje ien doel - om ferskate apparaten te ferienigjen yn ien ynformaasjeromte dy't op it ynternet of op in lokaal netwurk leit. Dêrom is de oanwêzigens fan in tsjinner ferplicht. Dit is wêr't it wichtichste probleem ûntstiet - as de tsjinner mislearret, stopet it heule systeem autonoom te wurkjen. Om dit te foarkommen, wurde systemen komplekser, manuele kontrôlemetoaden wurde tafoege dy't automatisearring duplisearje yn it gefal fan in tsjinner flater.

Wy namen in oar paad, wêrby't elk apparaat selsfoarsjennend is. Sa spilet de Server gjin beslissende rol, mar wreidet allinich de funksjonaliteit út.

Litte wy weromgean nei it gedachte-eksperimint. Lit ús nimme deselde 8 Sonoff modules wer en ynstallearje Lytko firmware yn harren. Alle Lytko-firmwares hawwe de funksje SSDP. SSDP is in netwurkprotokol basearre op it ynternetprotokolsuite foar reklame en ûntdekking fan netwurktsjinsten. It antwurd op in fersyk kin standert of útwreide wêze. Neist standertfunksjes hawwe wy yn dit antwurd it oanmeitsjen fan in list mei apparaten op it netwurk opnommen. Sa fine de apparaten sels elkoar, en elk fan harren sil sa'n list hawwe. Foarbyld fan SSDP sheet:

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

Sa't jo út it foarbyld sjen kinne, befettet de list apparaat-ID's, IP-adres op it netwurk, ienheidstype (yn ús gefal, in Sonoff-basearre thermostaat). Dizze list wurdt ien kear elke twa minuten bywurke (dizze perioade is genôch om te reagearjen op dynamyske feroaringen yn it oantal apparaten op it netwurk). Op dizze manier folgje wy apparaten tafoege, feroare en útskeakele sûnder brûker aksje. Dizze list wurdt stjoerd nei de browser of mobile applikaasje, en it skript sels genereart in side mei in opjûn oantal blokken. Elk blok komt oerien mei ien apparaat / sensor / controller. Visueel sjocht de list der sa út:

Lytko ferienet

Mar wat as oare radio sensoren binne ferbûn mei de esp8266 / esp32 fia cc2530 (ZigBee) of nrf24 (MySensors)?

Oer projekten

D'r binne ferskate ferspraat systemen op 'e merke. Us systeem lit jo yntegrearje mei de populêrste.

Hjirûnder binne projekten dy't op ien of oare manier besykje de situaasje te feroarjen mei de ynkompatibiliteit fan ferskate fabrikanten mei elkoar. Dit is bgl. SLS Gateway, MySensors of ZESP32. ZigBee2MQTT is bûn oan in MQTT-tsjinner, dus it is net geskikt foar it foarbyld.

Ien opsje foar it ymplementearjen fan MySensors is in gateway basearre op de ESP8266. De rest fan 'e foarbylden binne op ESP32. En yn har kinne jo ús bestjoeringsprinsipe ymplementearje foar it opspoaren en oanmeitsjen fan in list mei apparaten.

Litte wy noch in gedachte-eksperimint dwaan. Wy hawwe in ZESP32-gateway as SLS Gateway, of MySensors. Hoe kinne se wurde kombinearre yn ien ynformaasjeromte? Wy sille de SSDP-protokolbibleteek tafoegje oan de standertfunksjes fan dizze poarten. As jo ​​tagong krije ta dizze controller fia SSDP, sil it in list tafoegje mei apparaten dy't dêrmei ferbûn binne oan it standert antwurd. Op grûn fan dizze ynformaasje sil de browser in side generearje. Yn it algemien sil it der sa útsjen:

Lytko ferienet
Web ynterface

Lytko ferienet
PWA applikaasje

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

It foarbyld lit sjen dat apparaten wurde tafoege ûnôfhinklik fan elkoar. 3 thermostaten mei har eigen IP-adressen en 5 ferskillende sensors mei unike ID's binne ferbûn. As de sensor ferbûn is mei in Wi-Fi-netwurk, sil it in eigen IP hawwe; as it ferbûn is mei in gateway, dan sil it IP-adres fan it apparaat it IP-adres fan 'e gateway wêze.

Wy brûke WebSocket om te kommunisearjen mei apparaten. Hjirmei kinne jo boarnekosten minimalisearje yn ferliking om oanfragen te krijen en ynformaasje dynamysk te krijen by it ferbinen of feroarjen.

De gegevens wurde direkt nommen fan it apparaat dêr't it blok heart by, troch de tsjinner om te gean. Dus, as ien fan 'e apparaten mislearret, bliuwt it systeem wurkje. De webynterface toant gewoan it ûntbrekkende apparaat net út 'e list. Mar in sinjaal oer it ferlies, as it nedich is, sil komme yn 'e foarm fan in notifikaasje yn' e applikaasje fan 'e brûker.

De earste poging om dizze oanpak út te fieren wie in PWA-applikaasje. Hjirmei kinne jo in blokbasis opslaan op it apparaat fan 'e brûker en allinich de nedige gegevens oanfreegje. Mar troch de eigenaardichheden fan 'e struktuer is dizze opsje net kompleet. En d'r is mar ien útwei - in native applikaasje foar Android en IOS, dy't op it stuit ûnder aktive ûntwikkeling is. Standert sil de applikaasje allinich wurkje op it ynterne netwurk. As it nedich is, kinne jo alles oermeitsje nei eksterne kontrôle. Dus, as de brûker it lokale netwurk ferlit, skeakelt de applikaasje automatysk oer nei de wolk.

Eksterne kontrôle - folsleine duplikaasje fan 'e side. As de side is aktivearre, kin de brûker oanmelde by de tsjinner en apparaten beheare fia har persoanlike akkount. Sa wreidet de tsjinner syn funksjonaliteit út, wêrtroch jo apparaten kinne beheare wylst bûten it hûs, en net bûn wurde oan poarte trochstjoere of in tawijd IP.

Sa hat de boppesteande opsje net de neidielen fan 'e server-oanpak, en hat ek in oantal foardielen yn' e foarm fan fleksibiliteit by it ferbinen fan nije apparaten.

Oer de thermostaat

Litte wy nei it kontrôlesysteem sjen mei ús thermostaat as foarbyld.

Oanbean:

  1. Temperatuerkontrôle foar elke thermostaat (werjûn as in apart blok);
  2. Ynstelle fan it wurkskema fan de thermostaat (moarns, middei, jûn, nacht);
  3. Selektearje in Wi-Fi-netwurk en it ferbinen fan in apparaat dêrmei;
  4. It bywurkjen fan it apparaat "oer de loft";
  5. MQTT ynstelle;
  6. Konfigurearje it netwurk wêrmei it apparaat is ferbûn.

Lytko ferienet

Neist kontrôle fia de webynterface, levere wy de klassike - troch op it display te klikken. D'r is in Nextion NX3224T024 2.4-inch monitor oan board. De kar foel op him troch it gemak fan wurkjen mei it apparaat. Mar wy ûntwikkelje ús eigen monitor basearre op STM32. De funksjonaliteit is net slimmer as dy fan Nextion, mar it sil minder kostje, wat in positive ynfloed sil hawwe op 'e definitive priis fan it apparaat.

Lytko ferienet

Lykas elk sels respektearjend thermostaatskerm, kin ús Nextion:

  • set de temperatuer fereaske troch de brûker (mei de knoppen rjochts);
  • yn- en útsette de plande operaasje modus (knop H);
  • werjefte relay operaasje (pylk oan de linkerkant);
  • hat bern beskerming (fysike klikken wurde blokkearre oant it slot wurdt fuortsmiten);
  • toant WiFi sinjaal sterkte.

Derneist kinne jo de monitor brûke:

  • selektearje it type sensor ynstalleare troch de brûker;
  • beheare it bern slot funksje;
  • update de firmware.

Lytko ferienet

Troch op de WiFi-balke te klikken, sil de brûker ynformaasje fine oer it ferbûne netwurk. De QR-koade wurdt brûkt om it apparaat te koppelen yn 'e HomeKit-firmware.

Lytko ferienet

Demo fan wurkjen mei it display:

Lytko ferienet

Wy hawwe ûntwikkele demo side mei trije ferbûn thermostats.

Jo kinne freegje: "Wat is spesjaal oan jo thermostaat?" No op 'e merke binne d'r in protte thermostaten mei Wi-Fi-funksje, plande operaasje en touchkontrôle. En entûsjasters hawwe modules skreaun om te ynteraksje mei meast populêre smart home systemen (Majordomo, HomeAssistant, ensfh.).

Us thermostaat is kompatibel mei sokke systemen en hat al it boppesteande. Mar it ûnderskiedende skaaimerk is dat de thermostaat hieltyd ferbettere wurdt, troch de fleksibiliteit fan it systeem. Mei elke fernijing sil de funksjonaliteit útwreidzje. Oan 'e standertmetoade fan systeembehear (neffens in skema), sille wy in adaptive tafoegje. De applikaasje lit jo de geolokaasje fan 'e brûker krije. Mei tank oan dit, it systeem sil dynamysk feroarje bestjoeringssysteem modus ôfhinklik fan syn lokaasje. En de waarmodule lit jo oanpasse oan waarsomstannichheden.

En útwreidzjen. Elkenien kin har besteande konvinsjonele thermostaat ferfange troch ús. Mei minimale ynspanning. Wy hawwe 5 fan 'e populêrste sensoren op' e merke selektearre en stipe tafoege foar har. Mar sels as de sensor eksklusive skaaimerken hat, sil de brûker it kinne ferbine mei ús thermostaat. Om dit te dwaan, moatte jo de thermostaat kalibrearje om te wurkjen mei in spesifike sensor. Wy sille foarsjen ynstruksjes.

By it ferbinen fan in thermostaat of in oar apparaat, ferskynt it tagelyk oeral: sawol yn 'e webynterface as yn' e PWA-applikaasje. It tafoegjen fan in apparaat bart automatysk: jo moatte it gewoan ferbine mei it Wi-Fi-netwurk.

Us systeem hat gjin tsjinner nedich, en as it mislearret, feroaret it net yn in pompoen. Sels as ien fan 'e komponinten mislearret, begjint it systeem net te operearjen yn in needsenario. Controllers, sensoren, apparaten - elk elemint is sawol in tsjinner as in klant, dus folslein autonoom.

Foar belangstellenden, ús sosjale netwurken: Telegram, Instagram, Telegram Nijs, VK, facebook.

Post: [e-post beskerme]

PS Wy moedigje jo net oan om de tsjinner te ferlitten. Wy stypje ek in MQTT-tsjinner en hawwe ús eigen wolk. Us doel is om de stabiliteit en betrouberens fan it systeem nei in folslein nij nivo te bringen. Sadat de Server is gjin swak punt, mar oanfolling op de funksjonaliteit en makket it systeem handiger.

Boarne: www.habr.com

Add a comment