Lytko ühendab

Mõni aeg tagasi tutvustasime teid nutikas termostaat. See artikkel oli algselt mõeldud selle püsivara ja juhtimissüsteemi tutvustamiseks. Kuid selleks, et selgitada termostaadi loogikat ja seda, mida me rakendasime, on vaja visandada kogu kontseptsioon tervikuna.

Lytko ühendab

Automatiseerimisest

Tavaliselt võib kogu automatiseerimise jagada kolme kategooriasse:
Kanada 1 — eraldi nutikad seadmed. Ostate erinevatelt tootjatelt elektripirne, teekannud jms. Plussid: iga seade laiendab võimalusi ja suurendab mugavust. Miinused: iga uus tootja nõuab oma rakendust. Erinevate tootjate seadmete protokollid ei ole sageli omavahel ühilduvad.

Kanada 2 — ühe plaadiga arvuti või x86-ga ühilduva arvuti paigaldamine. See eemaldab arvutusvõimsuse piirangud ja sellesse masinasse installitakse MajorDoMo või mõni muu targa kodu haldamiseks mõeldud serverijaotus. Seega on enamiku tootjate seadmed ühendatud ühtsesse inforuumi. Need. ilmub teie enda server targa kodu jaoks. Plussid: ühilduvus ühe keskuse all, mis pakub täiustatud haldusvõimalusi. Miinused: kui server ebaõnnestub, naaseb kogu süsteem 1. etappi, st. killustub või muutub kasutuks.

Kanada 3 - kõige raskem variant. Remondifaasis paigaldatakse kõik kommunikatsioonid ja kõik süsteemid dubleeritakse. Plussid: kõik viiakse täiuslikkuseni ja siis muutub maja tõeliselt nutikaks. Miinused: ülikallis võrreldes 1. ja 2. kategooriaga, vajadus kõik eelnevalt läbi mõelda ja iga pisiasjaga arvestada.

Enamik kasutajaid valib esimese valiku ja liigub seejärel sujuvalt teise valiku juurde. Ja siis jõuavad kõige püsivamad 3. variandini.

Kuid on ka võimalus, mida võib nimetada hajutatud süsteemiks: iga seade on nii server kui ka klient. Sisuliselt on see katse võtta ja kombineerida variant 1 ja variant 2. Võtke kõik nende plussid ja kõrvaldage miinused, et püüda kinni kuldsest keskmisest.

Võib-olla keegi ütleb, et selline võimalus on juba välja töötatud. Kuid sellised otsused on kitsalt suunatud; programmeerimises asjatundlikele inimestele. Meie eesmärk on alandada barjääri sellistesse hajussüsteemidesse sisenemisel nii lõppseadmete näol kui ka olemasolevate seadmete meie süsteemi integreerimise näol. Termostaadi puhul eemaldab kasutaja lihtsalt oma vana termostaadi, paigaldab nutika ja ühendab sellega oma olemasolevad andurid. Ilma täiendavate sammudeta.

Vaatame näite abil integreerimist meie süsteemi.

Kujutagem ette, et meie võrgus on 8 Sonoffi moodulit. Mõne kasutaja jaoks piisab juhtimisest Sonoffi pilve kaudu (1. kategooria). Mõned hakkavad kasutama kolmanda osapoole püsivara ja liiguvad sujuvalt kategooriasse 2. Suurem osa kolmanda osapoole püsivara töötab samal põhimõttel: andmete edastamine MQTT-serverisse. OpenHub, Majordomo või mis tahes muu täidavad ühte eesmärki - ühendada erinevad seadmed ühtseks inforuumiks, mis asub kas Internetis või kohalikus võrgus. Seetõttu on serveri olemasolu kohustuslik. Siit tekibki põhiprobleem – kui Server tõrkub, lakkab kogu süsteem iseseisvalt töötamast. Selle vältimiseks muutuvad süsteemid keerukamaks, lisanduvad käsitsijuhtimise meetodid, mis serveri rikke korral dubleerivad automatiseerimist.

Läksime teist teed, kus iga seade on isemajandav. Seega ei mängi Server otsustavat rolli, vaid ainult laiendab funktsionaalsust.

Tuleme tagasi mõtteeksperimendi juurde. Võtame uuesti samad 8 Sonoffi moodulit ja paigaldame neisse Lytko püsivara. Kõigil Lytko püsivaradel on funktsioon SSDP. SSDP on Interneti-protokollikomplektil põhinev võrguprotokoll võrguteenuste reklaamimiseks ja avastamiseks. Päringule vastamine võib olla kas standardne või pikendatud. Lisaks standardfunktsioonidele lisasime sellesse vastusesse võrgus olevate seadmete loendi loomise. Seega leiavad seadmed ise üksteist ja igaühel neist on selline loend. SSDP-lehe näide:

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

Nagu näitest näha, sisaldab loend seadme ID-sid, IP-aadressi võrgus, seadme tüüpi (meie puhul Sonoffil põhinev termostaat). Seda loendit värskendatakse iga kahe minuti järel (sellest perioodist piisab võrgus olevate seadmete arvu dünaamilistele muutustele reageerimiseks). Nii jälgime lisatud, muudetud ja keelatud seadmeid ilma kasutaja tegevuseta. See loend saadetakse brauserisse või mobiilirakendusse ja skript loob ise teatud arvu plokkidega lehe. Iga plokk vastab ühele seadmele/andurile/kontrollerile. Visuaalselt näeb nimekiri välja selline:

Lytko ühendab

Aga mis siis, kui teised raadioandurid on esp8266/esp32-ga ühendatud cc2530 (ZigBee) või nrf24 (MySensors) kaudu?

Projektide kohta

Turul on erinevaid hajutatud süsteeme. Meie süsteem võimaldab teil integreerida kõige populaarsematega.

Allpool on välja toodud projektid, mis ühel või teisel viisil üritavad olukorda erinevate tootjate omavaheliste kokkusobimatusega muuta. See on näiteks SLS-värav, Minuandurid või ZESP32. ZigBee2MQTT on seotud MQTT-serveriga, mistõttu see näite jaoks ei sobi.

Üks võimalus MySensorite juurutamiseks on ESP8266-l põhinev lüüs. Ülejäänud näited on ESP32-l. Ja neis saate rakendada meie tööpõhimõtet tuvastada ja luua seadmete loend.

Teeme veel ühe mõtteeksperimendi. Meil on ZESP32 lüüs või SLS Gateway või MySensors. Kuidas saab neid ühendada ühtsesse inforuumi? Lisame SSDP protokolli teegi nende lüüside standardfunktsioonide hulka. Sellele kontrollerile SSDP kaudu juurde pääsedes lisab see standardvastusesse sellega ühendatud seadmete loendi. Selle teabe põhjal loob brauser lehe. Üldiselt näeb see välja selline:

Lytko ühendab
Veebi liides

Lytko ühendab
PWA rakendus

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

Näide näitab, et seadmed lisatakse üksteisest sõltumatult. Ühendatud on 3 oma IP-aadressiga termostaati ja 5 erinevat unikaalse ID-ga andurit. Kui andur on ühendatud Wi-Fi-võrku, on sellel oma IP; kui see on ühendatud lüüsiga, siis on seadme IP-aadress lüüsi IP-aadress.

Seadmetega suhtlemiseks kasutame WebSocketit. See võimaldab teil minimeerida ressursikulusid võrreldes päringute hankimisega ja dünaamiliselt teabe hankimisega ühenduse loomisel või muutmisel.

Andmed võetakse serverist mööda minnes otse seadmest, kuhu plokk kuulub. Seega, kui mõni seade ebaõnnestub, jätkab süsteem tööd. Veebiliides lihtsalt ei kuva loendist puuduvat seadet. Kuid vajaduse korral saabub signaal kaotuse kohta kasutaja rakenduses teatise kujul.

Esimene katse seda lähenemisviisi rakendada oli PWA rakendus. See võimaldab salvestada kasutaja seadmesse plokibaasi ja küsida ainult vajalikke andmeid. Kuid struktuuri iseärasuste tõttu on see valik puudulik. Ja on ainult üks väljapääs - Androidi ja IOS-i jaoks mõeldud natiivne rakendus, mis on praegu aktiivses arenduses. Vaikimisi töötab rakendus ainult sisevõrgus. Vajadusel saate kõik üle anda välisele juhtimisele. Seega, kui kasutaja lahkub kohalikust võrgust, lülitub rakendus automaatselt pilve.

Väline kontroll – lehe täielik dubleerimine. Kui leht on aktiveeritud, saab kasutaja isikliku konto kaudu serverisse sisse logida ja seadmeid hallata. Seega laiendab server oma funktsionaalsust, võimaldades teil seadmeid väljaspool kodu hallata, mitte olla seotud pordi edastamise või spetsiaalse IP-ga.

Seega ei ole ülaltoodud valikul serveripõhise lähenemise puudusi ning sellel on ka mitmeid eeliseid paindlikkuse näol uute seadmete ühendamisel.

Termostaadi kohta

Vaatame juhtimissüsteemi, kasutades näitena meie termostaati.

Tingimusel:

  1. Iga termostaadi temperatuuriregulaator (kuvatakse eraldi plokina);
  2. Termostaadi töögraafiku seadistamine (hommikul, pärastlõunal, õhtul, öösel);
  3. Wi-Fi võrgu valimine ja seadme ühendamine sellega;
  4. Seadme värskendamine "üle õhu";
  5. MQTT seadistamine;
  6. Konfigureerige võrk, millega seade on ühendatud.

Lytko ühendab

Lisaks veebiliidese kaudu juhtimisele pakkusime klassikalist – ekraanil klõpsates. Pardal on Nextion NX3224T024 2.4-tolline monitor. Valik langes talle seadmega töötamise lihtsuse tõttu. Kuid me arendame oma monitori STM32 baasil. Selle funktsionaalsus pole halvem kui Nextionil, kuid see maksab vähem, mis mõjutab positiivselt seadme lõpphinda.

Lytko ühendab

Nagu iga endast lugupidav termostaadiekraan, suudab ka meie Nextion:

  • seadke kasutajale vajalik temperatuur (parempoolsete nuppude abil);
  • lülitage sisse ja välja ajastatud töörežiim (nupp H);
  • kuva relee töö (nool vasakul);
  • on lastekaitsega (füüsilised klõpsud on blokeeritud kuni luku eemaldamiseni);
  • kuvab WiFi signaali tugevust.

Lisaks saate monitori kasutades:

  • vali kasutaja paigaldatud anduri tüüp;
  • hallata lapseluku funktsiooni;
  • värskendage püsivara.

Lytko ühendab

Klõpsates WiFi ribal, saab kasutaja teavet ühendatud võrgu kohta. QR-koodi kasutatakse seadme sidumiseks HomeKiti püsivaras.

Lytko ühendab

Kuvariga töötamise demo:

Lytko ühendab

Oleme arenenud demo leht kolme ühendatud termostaadiga.

Võite küsida: "Mis on teie termostaadis erilist?" Nüüd on turul palju termostaate, millel on Wi-Fi-funktsioon, ajastatud töö ja puutetundlik juhtimine. Ja entusiastid on kirjutanud moodulid, et suhelda kõige populaarsemate nutikate kodusüsteemidega (Majordomo, HomeAssistant jne).

Meie termostaat ühildub selliste süsteemidega ja sellel on kõik ülalnimetatu. Eripäraks on aga see, et termostaati täiustatakse pidevalt tänu süsteemi paindlikkusele. Iga värskendusega funktsionaalsus laieneb. Süsteemihalduse standardmeetodile (vastavalt graafikule) lisame adaptiivse. Rakendus võimaldab teil saada kasutaja geograafilise asukoha. Tänu sellele muudab süsteem dünaamiliselt töörežiime sõltuvalt selle asukohast. Ja ilmamoodul võimaldab teil kohaneda ilmastikutingimustega.

Ja laiendatavus. Igaüks võib oma olemasoleva tavapärase termostaadi meie omaga asendada. Minimaalse pingutusega. Oleme välja valinud 5 turul kõige populaarsemat andurit ja lisanud neile toe. Kuid isegi kui anduril on eksklusiivsed omadused, saab kasutaja selle meie termostaadiga ühendada. Selleks peate kalibreerima termostaadi, et see töötaks konkreetse anduriga. Anname juhiseid.

Termostaadi või mõne muu seadme ühendamisel ilmub see korraga kõikjal: nii veebiliideses kui ka PWA rakenduses. Seadme lisamine toimub automaatselt: peate selle lihtsalt Wi-Fi-võrguga ühendama.

Meie süsteem ei vaja serverit ja kui see ebaõnnestub, ei muutu see kõrvitsaks. Isegi kui üks komponentidest ebaõnnestub, ei hakka süsteem hädaolukorras tööle. Kontrollerid, andurid, seadmed – iga element on nii Server kui klient, seega täiesti autonoomne.

Huvilistele meie sotsiaalvõrgustikud: Telegramm, Instagramis, Telegrammiuudised, VK, Facebook.

E-mail: [meiliga kaitstud]

PS Me ei julgusta teid serverist loobuma. Toetame ka MQTT-serverit ja meil on oma pilv. Meie eesmärk on viia süsteemi stabiilsus ja töökindlus täiesti uuele tasemele. Et Server poleks nõrk koht, vaid täiendaks funktsionaalsust ja muudaks süsteemi mugavamaks.

Allikas: www.habr.com

Lisa kommentaar