Lytko ini

Kèk tan de sa nou prezante w tèmostat entelijan. Atik sa a te orijinèlman gen entansyon kòm yon demonstrasyon nan firmwèr li yo ak sistèm kontwòl. Men, yo nan lòd yo eksplike lojik nan tèmostat la ak sa nou aplike, li nesesè yo dekri tout konsèp la kòm yon antye.

Lytko ini

Konsènan automatisation

Konvansyonèlman, tout automatisation ka divize an twa kategori:
Kategori 1 — Aparèy "entelijan" separe. Ou achte anpoul elektrik, teyèr, elatriye nan diferan manifaktirè. Avantaj: Chak aparèy ogmante kapasite yo ak ogmante konfò. Dezavantaj: Chak nouvo manifakti mande pou pwòp aplikasyon li. Pwotokòl aparèy ki soti nan diferan manifaktirè yo souvan pa konpatib youn ak lòt.

Kategori 2 — enstalasyon yon sèl-tablo PC oswa x86 konpatib. Sa a retire restriksyon sou pouvwa enfòmatik, epi MajorDoMo oswa nenpòt lòt distribisyon sèvè pou jere yon kay entelijan enstale sou machin sa a. Kidonk, aparèy ki soti nan pifò manifaktirè yo konekte nan yon espas enfòmasyon sèl. Moun sa yo. pwòp sèvè ou pou yon kay entelijan parèt. Pou: konpatibilite anba yon sèl sant, ki bay kapasite jesyon amelyore. Dezavantaj: si sèvè a echwe, tout sistèm nan retounen nan etap 1, i.e. vin fragmenté oswa vin initil.

Kategori 3 - opsyon ki pi difisil. Nan etap reparasyon an, tout kominikasyon yo mete ak tout sistèm yo kopi. Avantaj: tout bagay yo pote nan pèfeksyon ak Lè sa a, kay la vin vrèman entelijan. Dezavantaj: trè chè konpare ak kategori 1 ak 2, bezwen nan reflechi nan tout bagay davans epi pran an kont tout ti detay.

Pifò itilizatè yo chwazi opsyon youn epi ale nan opsyon de san pwoblèm. Lè sa a, moun ki pi pèsistan yo rive nan opsyon 3.

Men, gen yon opsyon ki ka rele yon sistèm distribiye: chak aparèy endividyèl yo pral tou de yon sèvè ak yon kliyan. Esansyèlman, sa a se yon tantativ pou pran ak konbine opsyon 1 ak opsyon 2. Pran tout avantaj yo epi elimine dezavantaj yo, trape an lò vle di.

Petèt yon moun pral di ke yon opsyon konsa te deja devlope. Men, desizyon sa yo byen konsantre; pou moun ki gen konesans nan pwogramasyon. Objektif nou se diminye baryè pou antre nan sistèm distribiye sa yo, tou de sou fòm aparèy final yo ak nan fòm entegre aparèy ki deja egziste nan sistèm nou an. Nan ka yon tèmostat, itilizatè a tou senpleman retire ansyen tèmostat li a, enstale yon sèl entelijan, epi konekte detèktè ki egziste deja l 'yo. San okenn etap adisyonèl.

Ann gade nan entegrasyon nan sistèm nou an lè l sèvi avèk yon egzanp.

Ann imajine ke nou gen 8 modil Sonoff sou rezo nou an. Pou kèk itilizatè, kontwòl atravè nwaj Sonoff la (kategori 1) pral ase. Gen kèk ki pral kòmanse itilize firmwèr twazyèm-pati epi yo pral san pwoblèm deplase nan kategori 2. Èstime nan firmwèr twazyèm-pati travay sou menm prensip la: transfere done nan yon sèvè MQTT. OpenHub, Majordomo oswa nenpòt lòt sèvi yon sèl objektif - pou ini diferan aparèy nan yon sèl espas enfòmasyon ki chita swa sou entènèt la oswa sou yon rezo lokal. Se poutèt sa, prezans nan yon sèvè obligatwa. Sa a se kote pwoblèm prensipal la rive - si sèvè a echwe, tout sistèm nan sispann travay otonòm. Pou anpeche sa a, sistèm vin pi konplèks, metòd kontwòl manyèl yo ajoute ke automatisation kopi nan evènman an nan yon echèk sèvè.

Nou te pran yon chemen diferan, kote chak aparèy se endepandan. Kidonk, sèvè a pa jwe yon wòl desizif, men sèlman elaji fonksyonalite a.

Ann retounen nan eksperyans panse a. Ann pran menm 8 modil Sonoff yo ankò epi enstale firmwèr Lytko nan yo. Tout firmwèr Lytko gen fonksyon an SSDP. SSDP se yon pwotokòl rezo ki baze sou suite pwotokòl entènèt pou piblisite ak dekouvèt sèvis rezo yo. Repons nan yon demann ka swa estanda oswa pwolonje. Anplis de fonksyon estanda, nou enkli nan repons sa a kreyasyon yon lis aparèy sou rezo a. Kidonk, aparèy yo tèt yo jwenn youn ak lòt, epi chak nan yo pral gen yon lis konsa. Egzanp fèy SSDP:

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

Kòm ou ka wè nan egzanp lan, lis la gen ladan id aparèy, adrès IP sou rezo a, kalite inite (nan ka nou an, yon tèmostat ki baze sou Sonoff). Lis sa a mete ajou yon fwa chak de minit (peryòd sa a ase pou reponn a chanjman dinamik nan kantite aparèy sou rezo a). Nan fason sa a, nou swiv aparèy ajoute, chanje, ak enfim san okenn aksyon itilizatè. Yo voye lis sa a nan navigatè a oswa aplikasyon mobil, epi script la li menm jenere yon paj ak yon kantite blòk yo bay. Chak blòk koresponn ak yon aparèy / Capteur / kontwolè. Vizyèlman lis la sanble sa a:

Lytko ini

Men, e si lòt detèktè radyo yo konekte ak esp8266/esp32 atravè cc2530 (ZigBee) oswa nrf24 (MySensors)?

Konsènan pwojè yo

Gen plizyè sistèm distribiye sou mache a. Sistèm nou an pèmèt ou entegre ak sa ki pi popilè yo.

Anba a se pwojè ki se yon fason oswa yon lòt ap eseye chanje sitiyasyon an ak enkonpatibilite nan manifaktirè diferan youn ak lòt. Sa a se, pou egzanp, SLS Gateway, MySensors oswa ZESP32. ZigBee2MQTT se mare nan yon sèvè MQTT, kidonk li pa apwopriye pou egzanp lan.

Yon opsyon pou aplike MySensors se yon pòtay ki baze sou ESP8266 la. Rès egzanp yo sou ESP32. Ak nan yo ou ka aplike prensip fonksyònman nou an nan detekte ak kreye yon lis aparèy.

Ann fè yon lòt eksperyans panse. Nou gen yon pòtay ZESP32 oswa SLS Gateway, oswa MySensors. Ki jan yo ka konbine nan yon sèl espas enfòmasyon? Nou pral ajoute bibliyotèk pwotokòl SSDP nan fonksyon estanda pòtay sa yo. Lè w gen aksè a kontwolè sa a atravè SSDP, li pral ajoute yon lis aparèy ki konekte ak li nan repons estanda a. Dapre enfòmasyon sa a, navigatè a pral jenere yon paj. An jeneral, li pral sanble sa a:

Lytko ini
Koòdone entènèt

Lytko ini
Aplikasyon 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"
}

Egzanp la montre ke aparèy yo ajoute poukont youn ak lòt. 3 tèmostat ak adrès IP pwòp yo ak 5 detèktè diferan ak ID inik yo konekte. Si Capteur a konekte ak yon rezo Wi-Fi, li pral gen pwòp IP li; si li konekte ak yon pòtay, Lè sa a, adrès IP aparèy la pral adrès IP pòtay la.

Nou itilize WebSocket pou kominike ak aparèy yo. Sa a pèmèt ou minimize depans resous yo konpare ak jwenn demann ak jwenn enfòmasyon dinamik lè w konekte oswa chanje.

Done yo pran dirèkteman nan aparèy la ki blòk la fè pati, kontoune sèvè a. Kidonk, si nenpòt nan aparèy yo echwe, sistèm nan ap kontinye opere. Koòdone entènèt la jis pa montre aparèy ki manke a nan lis la. Men, yon siyal sou pèt la, si sa nesesè, ap vini nan fòm lan nan yon notifikasyon nan aplikasyon itilizatè a.

Premye tantativ pou aplike apwòch sa a se te yon aplikasyon PWA. Sa a pèmèt ou estoke yon baz blòk sou aparèy itilizatè a epi mande sèlman done ki nesesè yo. Men, akòz sengularite yo nan estrikti a, opsyon sa a se enkonplè. Epi gen yon sèl fason soti - yon aplikasyon natif natal pou android ak IOS, ki se kounye a anba devlopman aktif. Pa default, aplikasyon an ap travay sèlman sou rezo entèn la. Si sa nesesè, ou ka transfere tout bagay nan kontwòl ekstèn. Se konsa, lè itilizatè a kite rezo lokal la, aplikasyon an otomatikman chanje nan nwaj la.

Kontwòl ekstèn - konplè kopi paj la. Lè paj la aktive, itilizatè a ka konekte nan sèvè a epi jere aparèy atravè kont pèsonèl yo. Kidonk, sèvè a elaji fonksyonalite li yo, ki pèmèt ou jere aparèy pandan y ap deyò kay la, epi yo pa dwe mare nan pò transmisyon oswa yon IP dedye.

Kidonk, opsyon ki pi wo a pa gen dezavantaj yo nan apwòch la sèvè, epi tou li gen yon kantite avantaj nan fòm lan nan fleksibilite nan konekte nouvo aparèy.

Konsènan tèmostat la

Ann gade nan sistèm kontwòl la lè l sèvi avèk tèmostat nou an kòm yon egzanp.

Bay:

  1. Kontwòl tanperati pou chak tèmostat (ekspere kòm yon blòk separe);
  2. Mete orè operasyon tèmostat la (maten, apremidi, aswè, lannwit);
  3. Chwazi yon rezo Wi-Fi epi konekte yon aparèy ak li;
  4. Mete ajou aparèy la "sou lè a";
  5. Mete kanpe MQTT;
  6. Konfigure rezo a kote aparèy la konekte.

Lytko ini

Anplis de kontwòl atravè koòdone entènèt la, nou bay yon sèl klasik - pa klike sou ekspozisyon an. Gen yon Nextion NX3224T024 monitè 2.4-pous sou tablo. Chwa a tonbe sou li akòz fasilite nan travay ak aparèy la. Men, nou ap devlope pwòp monitè nou an ki baze sou STM32. Fonksyonalite li yo pa pi mal pase Nextion, men li pral koute mwens, ki pral gen yon enpak pozitif sou pri final la nan aparèy la.

Lytko ini

Tankou nenpòt ekran tèmostat ki respekte tèt yo, Nextion nou an kapab:

  • mete tanperati itilizatè a mande (sèvi ak bouton ki sou bò dwat la);
  • limen ak koupe mòd operasyon pwograme a (bouton H);
  • ekspozisyon relè operasyon (flèch sou bò gòch la);
  • gen pwoteksyon timoun (klik fizik yo bloke jiskaske yo retire kadna a);
  • montre fòs siyal WiFi.

Anplis de sa, lè l sèvi avèk monitè a ou ka:

  • chwazi ki kalite Capteur enstale pa itilizatè a;
  • jere karakteristik fèmen timoun nan;
  • mete ajou firmwèr la.

Lytko ini

Lè w klike sou ba WiFi a, itilizatè a pral jwenn enfòmasyon sou rezo ki konekte a. Kòd QR la itilize pou pè aparèy la nan firmwèr HomeKit la.

Lytko ini

Demo travay ak ekspozisyon an:

Lytko ini

Nou devlope paj Demo ak twa tèmostat konekte.

Ou ka mande, "Ki sa ki espesyal sou tèmostat ou a?" Koulye a, sou mache a gen anpil tèmostat ak fonksyon Wi-Fi, operasyon pwograme, ak kontwòl manyen. Ak amater yo te ekri modil yo kominike avèk pi popilè sistèm lakay entelijan (Majordomo, HomeAssistant, elatriye).

Thermostat nou an konpatib ak sistèm sa yo e li gen tout sa ki anwo yo. Men, karakteristik diferan se ke tèmostat la toujou ap amelyore, gras a fleksibilite nan sistèm nan. Avèk chak aktyalizasyon fonksyonalite a ap elaji. Nan metòd estanda nan jesyon sistèm (dapre yon orè), nou pral ajoute yon sèl adaptasyon. Aplikasyon an pèmèt ou jwenn jeolokalizasyon itilizatè a. Mèsi a sa a, sistèm lan pral dinamik chanje mòd opere depann sou kote li yo. Ak modil move tan an pral pèmèt ou adapte yo ak kondisyon metewolojik yo.

Ak dilatabilite. Nenpòt moun ka ranplase tèmostat konvansyonèl ki egziste deja yo ak pa nou an. Avèk efò minim. Nou te chwazi 5 nan detèktè ki pi popilè sou mache a epi nou te ajoute sipò pou yo. Men, menm si Capteur a gen karakteristik eksklizif, itilizatè a pral kapab konekte li nan tèmostat nou an. Pou fè sa, w ap bezwen kalibre tèmostat la pou travay avèk yon Capteur espesifik. Nou pral bay enstriksyon yo.

Lè w konekte yon tèmostat oswa nenpòt lòt aparèy, li parèt ansanm toupatou: tou de nan koòdone entènèt la ak nan aplikasyon PWA. Ajoute yon aparèy fèt otomatikman: ou jis bezwen konekte li nan rezo Wi-Fi.

Sistèm nou an pa bezwen yon sèvè, epi si li echwe, li pa tounen yon joumou. Menm si youn nan eleman yo echwe, sistèm nan pa kòmanse opere nan yon senaryo ijans. Kontwolè, detèktè, aparèy - chak eleman se tou de yon sèvè ak yon kliyan, kidonk konplètman otonòm.

Pou moun ki enterese, rezo sosyal nou yo: Telegram, Instagram, Nouvèl Telegram, VK, Facebook.

Lapòs: [imèl pwoteje]

PS Nou pa ankouraje w abandone sèvè a. Nou sipòte tou yon sèvè MQTT epi nou gen pwòp nwaj nou an. Objektif nou se pote estabilite ak fyab nan sistèm nan nan yon nivo tout nouvo. Se konsa, sèvè a se pa yon pwen fèb, men konplete fonksyonalite a epi fè sistèm nan pi pratik.

Sous: www.habr.com

Add nouvo kòmantè