Lytko ühendab.

Mõni aeg tagasi tutvustasime teile nutikat termostaati. Käesolev artikkel pidi algselt olema näide selle tarkvarast ja juhtimissüsteemist. Ent, et selgitada termostaadi tööloogikat ja seda, mida oleme rakendanud, on vajalik kogu kontseptsiooni esmalt üle vaadata.

Lytko ühendab.

Automatiseerimisest

Üldiselt võib kogu automatiseerimise jagada kolme kategooriasse:
Kategooria 1 — eraldi “nutikad” seadmed. Te soetate erinevatelt tootjatelt lampe, veekeetjaid jne. Plussid: iga seade laiendab võimalusi ja suurendab mugavust. Miinused: iga uue tootja jaoks on vajalik oma rakendus. Erinevate tootjate seadmete protokollid on sageli omavahel ühilduvad.

Kategooria 2 — üheplaadi PC või x86 ühilduva seadme seadistamine. See vabastab arvutusvõimsuse piirangud ning sellele masinale saab paigaldada MajorDoMo või mõne muu serveri distributsiooniga nutikodu juhtimiseks. Nii liituvad enamik tootjate seadmeid ühtsesse inforuum. See tähendab, et tekib oma nutikodu server. Plussid: ühtse keskuse all ühildus, mis loob laienenud haldusvõimalused. Miinused: serveri rikke korral naaseb kogu süsteem 1. etappi, st muutub killustatuks või muutub kasutuks.

Kategooria 3 — kõige hardcore variand. Remondietapis paigaldatakse kõik kommunikatsioonid ja duplitakse kõik süsteemid. Plussid: kõik on viimistletud ideaaliks ja siis saab kodust tõeliselt nutikas. Miinused: äärmiselt kallis võrreldes kategooriatega 1 ja 2, vajadus kõike ette planeerida ja iga pisiasja arvesse võtta.

Enamik kasutajaid valib esialgu esimese variandi ja liikuvad seejärel sujuvalt teise variandi poole. Edasi jõuavad kõige vastupidavamad 3. variandini.

Kuid olemas on variant, mida võiks nimetada jaotatud süsteemiks: iga eraldi seade on nii server kui ka klient. Põhimõtteliselt on see katse võtta ja ühendada variant 1 ja variant 2. Võtta kõik nende plussid ja välistada miinused, tabada kuldne kesktee.

Võib-olla ütleb keegi, et selline variant on juba välja töötatud. Kuid sellised lahendused on kitsas suunitluses; inimeste jaoks, kes on programmeerimises hästi kursis. Meie eesmärk on vähendada sissepääsu piiri sellistesse jaotatud süsteemidesse nii lõppseadmete kui ka olemasolevate seadmete integreerimise kaudu meie süsteemi. Termostaadi puhul eemaldab kasutaja lihtsalt oma vana termostaadi, paigaldab nutika ning ühendab oma olemasolevad andurid selle külge. Ilma ühegi täiendava tegevuseta.

Vaadakem meie süsteemi integreerimist näitena.

Kujutame ette, et meie võrgus on 8 Sonoff moodulit. Mõne kasutaja jaoks piisab Sonoff pilve kaudu juhtimisest (kategooria 1). Teised hakkavad kasutama kolmandate osapoolte tarkvara ja liiguvad sujuvalt kategooriasse 2. Enamik kolmandate osapoolte tarkvaradest töötab samal põhimõttel: andmete edastamine MQTT-serverisse. OpenHub, Majordomo või mõni muu teenus teenib ühte eesmärki – ühendab eraldi seadmed ühte inforuumi, mis asub kas Internetis või lokaalses võrgus. Seega on Serveri olemasolu hädavajalik. Siit tuleneb peamine probleem – Serveri rikkega lakkab kogu süsteem iseseisvalt töötamast. Selle vältimiseks raskendatakse süsteeme, lisatakse käsitsi juhtimise võimalusi, mis dubleerivad automaatikat Serveri tõrke puhul.

Kuid meie valisime teistsuguse tee, kus iga seade on iseseisev. Seega ei mängi Server tõsisest rolli, vaid laiendab funktsionaalsust.

Naaseme vaimse eksperimendi juurde. Võtame uuesti samad 8 Sonoff moodulit ja paigaldame neisse Lytko tarkvara. Kõikides Lytko tarkvarades on rakendatud funktsioon SSDP. SSDP — võrguprotokoll, mis põhineb Interneti protokollide kogumil ning on mõeldud võrguteenuste kuulutamiseks ja avastamiseks. Vastus päringule võib olla nii standardne kui ka laiendatud. Oleme sellele vastusele lisanud mitte ainult standardfunktsioonid, vaid ka seadmete loendi loomise. Nii leiavad seadmed üksteist ise ja igal neist on selline loetelu. Näide SSDP loendist:

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

Nagu näha näites, sisaldab nimekiri seadmete ID-sid, IP-aadresse, ploki tüüpi (meie puhul - Sonoffi põhine termostaat). See nimekiri uuendatakse kord kahe minuti jooksul (see vahe on piisav, et reageerida võrgus oleva seadmete arvu dünaamilisele muutumisele). Nii jälgime seadmete lisamist, muutmist ja väljalülitamist ilma kasutaja sekkumiseta. Nimekiri saadetakse brauserisse või mobiilirakendusse, ja skript genereerib ise lehe määratud arvu plokkidega. Iga plokk vastab ühele seadmele/sensori/kontrrollerile. Visuaalselt näeb nimekiri välja selline:

Lytko ühendab.

Aga kui esp8266/esp32 on ühendatud teiste raadio-sensoritega läbi cc2530 (ZigBee) või nrf24 (MySensors)?

Projektid

Turul on erinevaid jaotatud süsteeme. Meie süsteem võimaldab integreeruda kõige populaarsematega.

Allpool on projektid, mis ühel või teisel viisil püüavad muuta erinevate tootjate omavahelist ühilduvust. Need on näiteks: SLS Gateway, MySensors või ZESP32. ZigBee2MQTT on seotud MQTT-serveriga, seega ei sobi see näitena.

Üks MySensors'i teostamise võimalustest on ESP8266 põhinev värav. Ülejäänud näited on ESP32-l põhinevad. Neisse saab rakendada meie seadmete avastamise ja loendi koostamise põhimõtteid.

Teeme veel ühe mõttekatsed. Omame ZESP32 või SLS Gateway või MySensors'i väravat. Kuidas neid saab ühendada ühtsesse teabele? Lisame nende väravate standardfunktsioonidele SSDP protokolli teegi. Kui sellele kontrollerile SSDP kaudu juurde pääseda, lisab see standardvastusele seadmete loendi, mis on sellele ühendatud. Selle teabe põhjal koostab brauser lehe. Üldiselt näeb see välja nii:

Lytko ühendab.
Veebiliides

Lytko ühendab.
PWA-rakendus

"ssdpList": 
{
   "id": 94967291, // seadme unikaalne identifikaator
   "ip": "192.168.x.x", // IP-aadress võrgus
   "type": "thermostat" // seadme tüüp
},
{
   "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"
}

Näitest on näha, et seadmed lisatakse iseseisvalt üksteisest. Ühendatud on 3 termostaati, millel on oma IP-aadressid, ja 5 erinevat sensori, millel on unikaalsed ID-d. Kui sensor on ühendatud Wi-Fi võrguga, omab ta oma IP-aadressi, ja kui see on ühendatud väravaga, siis seadme IP-aadress on värava IP-aadress.

Seadmetega suhtlemiseks kasutame WebSocket'i. See võimaldab võrreldes get-päringutega ressursikulu minimaalset ja saada teavet dünaamiliselt ühenduse loomisel või muudatuste korral.

Andmed saadakse otse seadmest, millele plokk kuulub, mööda serverit. Seega jätkab süsteem tööle, kui ükskõik milline seade ebaõnnestub. Veebi liideses ei kuvata ainult kadunud seadet. Kuid vajadusel tuleb kadumise signaal kasutaja rakendusse teatise kujul.

Esimene katse sellise lähenemise rakendamiseks oli PWA-rakendus. See võimaldab salvestada plokkide andmebaasi kasutaja seadmesse ja küsida ainult vajalikke andmeid. Kuid sellise struktuuri eripärade tõttu on see variant puudulik. Lahenduseks on natiivne rakendus Androidile ja iOS-ile, mis on praegu aktiivses arenduses. Vaikimisi töötab rakendus ainult sisetükis. Vajadusel saab kõik muuta väliseks juhtimiseks. Nii et kui kasutaja lahkub kohalikust võrgust, lülitub rakendus automaatselt pilve.

Väline juhtimine — täielik lehe koopia. Lehe aktiveerimisel saab kasutaja logida serverisse ja hallata seadmeid läbi isikliku konto. Nii laiendab Server funktsionaalsust, lubades seadmete juhtimist, olles kodust eemal, ja mitte olema seotud pordiedastuse või staatiliste IP-dega.

Seega on ülaltoodud lahendusel puuduvad serveril põhineva lähenemise puudused ning see pakub mitmeid eeliseid uute seadmete paindlikul ühendamisel.

Termostaadi kohta

Vaadake juhtimissüsteemi meie termostaadi näitel.

Käib:

  1. Iga termostaadi temperatuuri reguleerimine (kuvatakse eraldi plokina);
  2. Termostaadi tööaja seadistamine (hommik, päev, õhtu, öö);
  3. Wi-Fi võrgu valimine ja seadme ühendamine sellele;
  4. Seadme "õhuremondi" uuendamine;
  5. MQTT seadistamine;
  6. Võrgu seadistamine, millele seade on ühendatud.

Lytko ühendab.

Lisaks veebiliidese kaudu juhtimisele on olemas ka klassikaline - ekraani puutetundlike nuppudega. Seadmest leiab 2,4-tollise Nextion NX3224T024 monitori. Valik langes sellele mudelile selle lihtsa kasutatavuse tõttu. Arendamisel on ka enda monitor, mis põhineb STM32-l. Selle funktsioonid ei jää Nextionist sugugi alla, kuid see on odavam, mis kajastub seadme lõpphinnas.

Lytko ühendab.

Nagu iga tõsiseltvõetav termostaadi ekraan, oskab ka meie Nextion:

  • seada vajalikku kasutaja temperatuuri (paremal nuppudega);
  • lülitada sisse ja välja töörežiim vastavalt ajakavale (nupp N);
  • näidata relee tööd (vasak nool);
  • omada lastesõbralikku kaitset (füüsilised nupud lukustatakse, kuni lukku ei tõsteta);
  • näidata WiFi signaali taset.

Lisaks võib monitoriga teha järgmist:

  • valida kasutaja paigaldatud anduri tüüpi;
  • hallitsemist lapse kaitse funktsiooni;
  • uuendada tarkvara.

Lytko ühendab.

WiFi ribale klõpsates saab kasutaja teavet ühendatud võrgu kohta. QR-koodi kasutatakse seadme paarimiseks HomeKit'i tarkvaraga.

Lytko ühendab.

Ekraani demo:

Lytko ühendab.

Oleme välja töötanud demo-lehe kolme ühendatud termostaadiga.

Küsite: "Mis on teie termostaadi eripära?" Praegu on turul palju Wi-Fi funktsiooniga termostaate, ajakava alusel töötamist ja puutetundlikku juhtimist. Enthusiastid on välja töötanud mooduleid, et suhelda enamike populaarsete nutikodude süsteemidega (Majordomo, HomeAssistant jne).

Meie termostaadi ühilduvus on selliste süsteemidega ning see omab kõiki eelnevalt nimetatud omadusi. Kuid selle eripära seisneb selles, et termostaat täiustatakse pidevalt, tänu süsteemi paindlikkusele. Iga uuendusega laienevad funktsioonid. Tavalise süsteemihalduse (ajakavade järgi) kõrval lisame adaptiivse. Rakendus võimaldab saada kasutaja geolokatsiooni. Selle tõttu muudab süsteem dünaamiliselt töörežiime vastavalt tema asukohale. Ja ilmamoodul aitab kohanduda ilmastikuoludega.

Ja avardatavuse. Igaühel on võimalus asendada enda installitud tavaline termostaat meie omaga. Minimaalsete pingutustega. Oleme valinud 5 kõige populaarsemat andurit, mis turul saadaval, ja lisanud nende toe. Kuid isegi juhul, kui anduril on eksklusiivsed omadused, saab kasutaja selle ühendada meie termostaadiga. Selleks on vajalik termostaadi kalibreerimine konkreetse anduri tööks. Juhised anname.

Termostaadi või mõne muu seadme ühendamisel ilmub see kohe kõikjal: nii veebiliideses kui ka PWA rakenduses. Seadme lisamine toimub automaatselt: piisab, kui ühendada see Wi-Fi võrku.

Meie süsteem ei vaja Serverit, ning selle rikki minnes ei muutu see kõrvitsaks. Isegi ühe komponendi rikki korral ei alusta süsteem hädaolukorra stsenaariumi. Kontrollerid, andurid, seadmed — iga element on nii Server kui ka klient, seega täiesti autonoomne.

Huvi korral — meie sotsiaalmeedia: Telegram, Instagram, Telegrami uudised, VK, Facebook.

E-post: shop@lytko.com

P. S. me ei kutsu üles loobuma Serverist. Meil on ka MQTT-serveri tugi ja oma pilv. Meie eesmärk on tõsta süsteemi stabiilsust ja usaldusväärsust uuele tasemele. Et Server ei oleks nõrk koht, vaid täiendaks funktsionaalsust ja muudaks süsteemi mugavamaks.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster