Lytko kombinerer

For some time now, we have introduced you to a smart thermostat. The current article was initially intended as a demonstration of its firmware and control system. However, to explain the logic of the thermostat's operation and what we have implemented, it is necessary to outline the entire concept as a whole.

Lytko kombinerer

About automation

Conditionally, all automation can be divided into three categories:
Category 1 — individual “smart” devices. You purchase bulbs, kettles, etc., from different manufacturers. Pros: each device expands capabilities and increases comfort. Cons: each new manufacturer requires its own application. The protocols of devices from different manufacturers are often not compatible with each other.

Category 2 — installing a single-board PC or x86 compatible one. This removes limitations on computing power, and a MajorDoMo or any other server distribution for smart home management is installed on this machine. Thus, devices from most manufacturers connect within a unified information space. That is, a Smart Home Server is created. Pros: compatibility under a single center, which provides expanded control capabilities. Cons: in case of server failure, the entire system reverts to stage 1, i.e., it becomes fragmented or turns useless.

Category 3 — the most hardcore option. During the renovation stage, all communications are laid out and all systems are duplicated. Pros: everything is perfected, and then the home truly becomes smart. Cons: extremely high cost compared to categories 1 and 2, the necessity to plan everything ahead and take every little detail into account.

Most users choose option one and then gradually transition to option two. Eventually, the most persistent reach option three.

But there is an option that can be called a distributed system: each individual device will be both a server and a client. Essentially, this is an attempt to combine option 1 and option 2, to take all their advantages and eliminate the drawbacks, to find a golden mean.

Kanskje noen vil si at en slik lÞsning allerede er utviklet. Men slike lÞsninger er spesialiserte; for folk med programmeringskunnskap. VÄrt mÄl er Ä senke inngangsbarrieren for slike distribuerte systemer, bÄde nÄr det gjelder sluttbrukerenheter og nÄr det gjelder integrasjonen av eksisterende enheter i systemet vÄrt. NÄr det gjelder termostaten, fjerner brukeren ganske enkelt sin gamle termostat, installerer den smarte, og kobler de eksisterende sensorene til den. Uten ytterligere tiltak.

La oss se pÄ integrasjon i systemet vÄrt med et eksempel.

La oss anta at vi har 8 Sonoff-moduler i nettverket. Noen brukere vil vĂŠre fornĂžyd med styring via Sonoff-skyen (kategori 1). Andre vil bruke tredjeparts firmware og gradvis gĂ„ over til kategori 2. Hoveddelen av tredjepartsfirmware fungerer etter samme prinsipp: dataoverfĂžring til en MQTT-server. OpenHub, Majordomo eller enhver annen tjener ett mĂ„l – Ă„ samle forskjellige enheter i et enhetlig informasjonsrom, enten pĂ„ Internett eller i lokalt nettverk. FĂžlgelig er tilstedevĂŠrelsen av en server obligatorisk. Her oppstĂ„r det stĂžrste problemet – ved serverfeil slutter hele systemet Ă„ fungere autonomt. For Ă„ forhindre dette, kompliseres systemene, og manuelle kontrollmetoder som dupliserer automatikken legges til i tilfelle serverfeil.

Vi valgte imidlertid en annen tilnĂŠrming, der hver enhet er selvforsynt. Dermed spiller serveren ikke en avgjĂžrende rolle, men utvider bare funksjonaliteten.

La oss gÄ tilbake til tankeksperimentet. La oss igjen ta de samme 8 Sonoff-modulene og installere Lytko-firmware i dem. Alle Lytko-firmwarene har implementert funksjonen SSDP. SSDP er en nettverksprotokoll basert pÄ et sett med internettprotokoller, som brukes til Ä kunngjÞre og oppdage nettverkstjenester. Svaret pÄ forespÞrselen kan vÊre bÄde standard og utvidet. Vi har inkludert i dette svaret, i tillegg til standardfunksjoner, opprettelsen av en liste over enheter i nettverket. Dermed finner enhetene hverandre selv, og hver av dem vil ha en slik liste. Eksempel pÄ SSDP-liste:

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

Som det fremgĂ„r av eksemplet, inkluderer listen id-ene til enhetene, ip-adressen i nettverket, blokktypen (i vĂ„rt tilfelle – en termostat basert pĂ„ Sonoff). Denne listen oppdateres hver andre minutt (denne tidsrammen er tilstrekkelig for Ă„ reagere pĂ„ dynamiske endringer i antallet enheter i nettverket). Dermed kan vi spore tillegg, endringer og frakoblinger av enheter uten noen handling fra brukerens side. Denne listen sendes til nettleseren eller mobilappen, og skriptet lager selv siden med det angitte antallet blokkene. Hver blokk tilsvarer Ă©n enhet/sensor/aktuator. Visuelt ser listen slik ut:

Lytko kombinerer

Men hva hvis andre radiosensorer er koblet til esp8266/esp32 via cc2530 (ZigBee) eller nrf24 (MySensors)?

Om prosjekter

Det finnes ulike distribuerte systemer pÄ markedet. VÄrt system tillater integrasjon med de mest populÊre.

Nedenfor er prosjekter som, pÄ en eller annen mÄte, prÞver Ä endre situasjonen med inkompatibilitet mellom ulike produsenter. Dette inkluderer for eksempel SLS Gateway, MySensors eller ZESP32. ZigBee2MQTT er knyttet til MQTT-serveren, sÄ det passer ikke som eksempel.

En av implementeringsalternativene for MySensors er en gateway basert pÄ ESP8266. De andre eksemplene er basert pÄ ESP32. I dem kan vi integrere vÄr arbeidsmetode for oppdagelse og opprettelse av enhetslisten.

Vi vil utfÞre et tankeeksperiment til. Vi har en gateway ZESP32 eller SLS Gateway, eller MySensors. Hvordan kan vi kombinere dem i et enkelt informasjonssystem? Til de standardfunksjonene til disse gatewayene legger vi til SSDP-protokollbiblioteket. NÄr vi henvender oss til denne kontrolleren via SSDP, vil den i sitt standardrespons legge til listen over enheter som er koblet til den. Basert pÄ denne informasjonen vil nettleseren lage en side. I generell form vil dette se slik ut:

Lytko kombinerer
Nettgrensesnitt

Lytko kombinerer
PWA-applikasjon

"ssdpList": 
{
   "id": 94967291, // unik enhetsidentifikator
   "ip": "192.168.x.x", // ip-adresse i nettverket
   "type": "thermostat" // type enhet
},
{
   "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"
}

Fra eksempelet kan vi se at enhetene legges til uavhengig av hverandre. Tre termostater med egne IP-adresser og fem forskjellige sensorer med unike ID-er er koblet til. Hvis sensoren er tilkoblet et Wi-Fi-nettverk, vil den ha sin egen IP, og hvis den er tilkoblet en gateway, vil enhetens IP-adresse vĂŠre IP-adressen til gatewayen.

Vi bruker WebSocket for kommunikasjon med enhetene. Dette gjĂžr at vi kan minimere ressursbruken sammenlignet med GET-forespĂžrslene og motta informasjon dynamisk ved tilkobling eller endring.

Dataene hentes direkte fra den enheten som blokken tilhÞrer, uten Ä gÄ om serveren. Dermed fortsetter systemet Ä fungere selv om noen av enhetene feiler. PÄ webgrensesnittet vil bare den tapte enheten ikke bli vist i listen. Men en varsling om tapet vil komme til brukeren i appen om nÞdvendig.

Den fÞrste forsÞket pÄ Ä implementere en slik tilnÊrming var en PWA-app. Dette gjÞr at man kan lagre blokkdata pÄ brukerens enhet og bare be om nÞdvendige data. Men pÄ grunn av strukturens sÊrheter er denne varianten utilstrekkelig. LÞsningen er native apper for Android og iOS, som nÄ er under aktiv utvikling. Som standard vil appen bare fungere i det interne nettverket. Om nÞdvendig kan alt overfÞres til ekstern kontroll. Dermed, nÄr brukeren forlater det lokale nettverket, vil appen automatisk bytte til skyen.

Ekstern kontroll er en fullstendig duplisering av siden. NÄr siden aktiveres, kan brukeren logge inn pÄ serveren og styre enhetene gjennom sin brukerkonto. PÄ denne mÄten utvider serveren funksjonaliteten, slik at man kan kontrollere enhetene fra utsiden av huset, uten Ä vÊre avhengig av portforwarding eller dedikert IP.

Dermed er den ovenfor beskrevne varianten fri for servertilnĂŠrmingens ulemper og har en rekke fordeler i form av fleksibilitet ved tilkobling av nye enheter.

Om termostaten

La oss se pÄ kontrolleringssystemet ved hjelp av vÄrt termostat-eksempel.

Forutsatt:

  1. Regulering av temperaturen for hver termostat (vist som en egen blokk);
  2. Innstilling av timeplan for termostatens drift (morgen, dag, kveld, natt);
  3. Valg av Wi-Fi-nettverk og tilkobling av enheten til det;
  4. Oppdatering av enheten "over luft";
  5. Innstilling av MQTT;
  6. Innstilling av nettverket som enheten er koblet til.

Lytko kombinerer

I tillegg til styring via webgrensesnittet har vi ogsĂ„ lagt til den klassiske metoden – berĂžringer pĂ„ skjermen. Den har en Nextion NX3224T024 2,4 tommers skjerm om bord. Valget falt pĂ„ den pĂ„ grunn av enkelheten i Ă„ bruke enheten. Men vi utvikler ogsĂ„ en egen skjerm basert pĂ„ STM32. Funksjonaliteten vil ikke vĂŠre noe mindre enn Nextion, men den vil koste mindre, noe som vil ha en positiv innvirkning pĂ„ den endelige prisen pĂ„ enheten.

Lytko kombinerer

Som enhver respektabel termostat-skjerm, kan vÄr Nextion:

  • stille inn Ăžnsket temperatur for brukeren (med knappene til hĂžyre);
  • skru av og pĂ„ driftsmodusen etter timeplan (knapp H);
  • vise aktiviteten til relĂ©et (pil til venstre);
  • ha barnesikring (fysiske trykk er blokkert inntil lĂ„sen er fjernet);
  • vise nivĂ„et pĂ„ WiFi-signalet.

I tillegg kan skjermen:

  • velge typen sensor som er installert hos brukeren;
  • kontrollere barnesikringsfunksjonen;
  • oppdatere programvaren.

Lytko kombinerer

Ved Ä klikke pÄ WiFi-baren fÄr brukeren informasjon om det tilkoblede nettverket. QR-koden brukes for Ä pare enheten i HomeKit-firmware.

Lytko kombinerer

Demo av skjermen i bruk:

Lytko kombinerer

Vi har utviklet en demostrationsside med tre tilkoblede termostater.

Du spĂžr: “Hva er spesielt med din termostat?” Det finnes mange termostater pĂ„ markedet med Wi-Fi-funksjon, tidsplanfunksjon og berĂžringsstyring. Og entusiaster har skrevet moduler for interaksjon med de fleste populĂŠre smarthus-systemer (Majordomo, HomeAssistant, osv.).

VÄr termostat er kompatibel med slike systemer og har alle de nevnte funksjonene. Men den unike egenskapen er at termostaten kontinuerlig forbedres, takket vÊre systemets fleksibilitet. Med hver oppdatering vil funksjonaliteten bli utvidet. I tillegg til den standard mÄten Ä styre systemet pÄ (etter timeplan), vil vi legge til en adaptiv metode. Appen gjÞr det mulig Ä hente brukerens geolokasjon. Takket vÊre dette vil systemet dynamisk endre driftsmoduser avhengig av brukerens plassering. Og vÊrmodulen vil tilpasse seg vÊrforholdene.

Og utvidbarheit. Alle som Þnskjer kan bytte ut den vanlege termostaten sin med vÄr. Med minimal innsats. Vi har valgt 5 av de mest populÊre sensorane som er tilgjengelege pÄ markedet, og lagt til stÞtte for dei. Men sjÞlv om sensorane har eksklusive spesifikasjonar, kan brukaren koble dei til vÄr termostat. For dette vil det vere nÞdvendig Ä kalibrere termostaten for Ä arbeide med den spesifikke sensoren. Vi vil gi instruksjonar.

NÄr du koplar til termostaten eller ei anna enhet, viser den seg automatisk overalt: bÄde i nettgrensesnittet og i PWA-appen. Legging av enheten skjer automatisk: det er berre Ä koble den til Wi-Fi-nettverket.

Systemet vĂ„rt treng ikkje ein server, og i tilfelle av eit feilbrytande scenario blir det ikkje til ein gresskar. SjĂžlv om ein av komponentane sviktar, gĂ„r ikkje systemet over til ein nĂždmodus. Kontrollar, sensorar, enheter — kvar enkelt del er bĂ„de server og klient, sĂ„ det er heilt autonomt.

For dei interesserte — vĂ„re sosiale medier: Telegram, Instagram, Telegram Nyheter, VK, Facebook.

E-post: shop@lytko.com

P. S. Vi oppfordrar ikkje til Ä gi opp serveren. Vi har ogsÄ stÞtte for MQTT-server og har vÄrt eige sky. MÄlet vÄrt er Ä heve stabiliteten og pÄlitelegheita til systemet til eit kvalitativt nytt nivÄ. Slik at serveren ikkje er det svake punktet, men supplerer funksjonaliteten og gjer systemet meir brukervennleg.

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster