Литко нэгдэж байна

Хэсэг хугацааны өмнө бид таныг танилцуулсан ухаалаг термостат. Энэ нийтлэл нь анх түүний програм хангамж, хяналтын системийг харуулах зорилготой байсан. Гэхдээ термостатын логик болон бидний хэрэгжүүлсэн зүйлийг тайлбарлахын тулд бүхэл бүтэн ойлголтыг бүхэлд нь тоймлох шаардлагатай байна.

Литко нэгдэж байна

Автоматжуулалтын тухай

Уламжлал ёсоор бүх автоматжуулалтыг гурван төрөлд хувааж болно.
Категори 1 - тусдаа "ухаалаг" төхөөрөмжүүд. Та янз бүрийн үйлдвэрлэгчдээс чийдэн, цайны сав гэх мэтийг худалдаж авдаг. Давуу тал: Төхөөрөмж бүр боломжуудыг өргөжүүлж, тав тухыг нэмэгдүүлдэг. Сул талууд: Шинэ үйлдвэрлэгч бүр өөрийн програмыг шаарддаг. Өөр өөр үйлдвэрлэгчдийн төхөөрөмжүүдийн протоколууд нь ихэвчлэн бие биентэйгээ нийцдэггүй.

Категори 2 - нэг самбарт компьютер эсвэл x86-тай нийцтэй суулгах. Энэ нь тооцоолох хүчин чадлын хязгаарлалтыг арилгаж, MajorDoMo эсвэл ухаалаг гэрийг удирдах бусад серверийн түгээлтийг энэ машинд суулгасан болно. Тиймээс ихэнх үйлдвэрлэгчдийн төхөөрөмжүүд нэг мэдээллийн орон зайд холбогдсон байдаг. Тэдгээр. Ухаалаг гэрт зориулсан өөрийн сервер гарч ирнэ. Давуу тал: удирдлагын сайжруулсан чадавхийг хангадаг нэг төвийн нийцтэй байдал. Сул талууд: хэрэв сервер амжилтгүй болвол бүхэл систем 1-р үе шат руу буцна, өөрөөр хэлбэл. хуваагдаж, эсвэл хэрэггүй болно.

Категори 3 - хамгийн хатуу сонголт. Засварын үе шатанд бүх харилцаа холбоо тавигдаж, бүх систем давхардсан байна. Давуу тал: бүх зүйл төгс төгөлдөр болж, дараа нь байшин үнэхээр ухаалаг болно. Сул талууд: 1 ба 2-р ангилалтай харьцуулахад маш үнэтэй, бүх зүйлийг урьдчилан бодож, жижиг нарийн ширийн зүйлийг анхаарч үзэх шаардлагатай.

Ихэнх хэрэглэгчид нэг сонголтыг сонгоод дараа нь хоёр дахь сонголт руу шилжинэ. Тэгээд хамгийн тууштай нь 3-р хувилбарт хүрдэг.

Гэхдээ тархсан систем гэж нэрлэж болох сонголт байдаг: төхөөрөмж бүр сервер, үйлчлүүлэгч хоёулаа байх болно. Үндсэндээ энэ бол 1-р хувилбар ба 2-р хувилбарыг нэгтгэх оролдлого юм. Алтан дундаж утгыг олж авахын тулд бүх давуу талыг нь авч, сул талыг нь арилга.

Магадгүй хэн нэгэн ийм хувилбарыг аль хэдийн боловсруулсан гэж хэлэх байх. Гэхдээ ийм шийдвэрүүд нь явцуу төвлөрсөн байдаг; програмчлалын мэдлэгтэй хүмүүст зориулагдсан. Бидний зорилго бол эцсийн төхөөрөмж хэлбэрээр болон одоо байгаа төхөөрөмжүүдийг системдээ нэгтгэх хэлбэрээр ийм тархсан системд нэвтрэх саадыг багасгах явдал юм. Термостатын хувьд хэрэглэгч зүгээр л хуучин термостатаа салгаж, ухаалаг төхөөрөмж суурилуулж, одоо байгаа мэдрэгчээ түүнд холбоно. Ямар ч нэмэлт алхамгүйгээр.

Жишээ ашиглан системдээ нэгтгэхийг харцгаая.

Манай сүлжээнд 8 Sonoff модуль байгаа гэж төсөөлөөд үз дээ. Зарим хэрэглэгчдийн хувьд Sonoff клоуд (1-р ангилал) ашиглан удирдахад хангалттай. Зарим нь гуравдагч талын програм хангамжийг ашиглаж эхлэх бөгөөд 2-р ангилалд шилжих болно. Гуравдагч талын програм хангамжийн ихэнх хэсэг нь ижил зарчмаар ажилладаг: өгөгдлийг MQTT сервер рүү дамжуулах. OpenHub, Majordomo эсвэл өөр ямар нэгэн зорилго нь ялгаатай төхөөрөмжүүдийг интернет эсвэл дотоод сүлжээнд байрлах мэдээллийн нэг орон зайд нэгтгэх зорилготой. Тиймээс сервер байх ёстой. Эндээс л гол асуудал гарч ирдэг - хэрэв сервер амжилтгүй болвол систем бүхэлдээ бие даан ажиллахаа болино. Үүнээс урьдчилан сэргийлэхийн тулд системүүд илүү төвөгтэй болж, серверийн эвдрэл гарсан тохиолдолд автоматжуулалтын давхардсан гараар хяналтын аргуудыг нэмж оруулав.

Бид төхөөрөмж бүр өөрөө өөрийгөө хангах өөр замаар явсан. Тиймээс Сервер нь шийдвэрлэх үүрэг гүйцэтгэдэггүй, харин зөвхөн функцийг өргөжүүлдэг.

Бодлын туршилт руу буцаж орцгооё. Үүнтэй ижил 8 Sonoff модулийг дахин авч, Lytko програм хангамжийг суулгацгаая. Бүх Lytko програм хангамжууд нь функцтэй байдаг SSDP. SSDP нь сүлжээний үйлчилгээг сурталчлах, илрүүлэхэд зориулагдсан интернет протоколын багцад суурилсан сүлжээний протокол юм. Хүсэлтийн хариу нь стандарт эсвэл өргөтгөсөн байж болно. Стандарт функцүүдээс гадна бид энэ хариултанд сүлжээнд байгаа төхөөрөмжүүдийн жагсаалтыг гаргахыг оруулсан болно. Тиймээс төхөөрөмжүүд өөрсдөө бие биенээ олох бөгөөд тус бүр нь ийм жагсаалттай байх болно. SSDP хуудасны жишээ:

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

Жагсаалтад төхөөрөмжийн ids, сүлжээн дэх IP хаяг, нэгжийн төрөл (манай тохиолдолд Sonoff-д суурилсан термостат) зэргийг жишээнээс харж болно. Энэ жагсаалт нь хоёр минут тутамд нэг удаа шинэчлэгддэг (энэ хугацаа нь сүлжээнд байгаа төхөөрөмжийн тоо динамик өөрчлөлтөд хариу өгөхөд хангалттай). Ингэснээр бид хэрэглэгчийн үйлдэлгүйгээр нэмсэн, өөрчилсөн, идэвхгүй болсон төхөөрөмжүүдийг хянадаг. Энэ жагсаалтыг хөтөч эсвэл гар утасны програм руу илгээдэг бөгөөд скрипт нь өөрөө өгөгдсөн тооны блок бүхий хуудсыг үүсгэдэг. Блок бүр нэг төхөөрөмж/мэдрэгч/хянагчтай тохирч байна. Харагдах байдлаар жагсаалт дараах байдалтай байна.

Литко нэгдэж байна

Гэхдээ бусад радио мэдрэгчүүд cc8266 (ZigBee) эсвэл nrf32 (MySensors) -ээр дамжуулан esp2530/esp24-д холбогдсон бол яах вэ?

Төслийн тухай

Зах зээл дээр янз бүрийн тархсан системүүд байдаг. Манай систем нь таныг хамгийн алдартай системтэй нэгтгэх боломжийг олгодог.

Өөр өөр үйлдвэрлэгчид хоорондоо үл нийцэх нөхцөл байдлыг өөрчлөхийг оролдож буй төслүүдийг доор харуулав. Энэ нь жишээ нь, SLS гарц, MySensors буюу ZESP32. ZigBee2MQTT MQTT сервертэй холбогдсон тул жишээнд тохиромжгүй.

MySensors-ийг хэрэгжүүлэх нэг сонголт бол ESP8266 дээр суурилсан гарц юм. Үлдсэн жишээнүүд нь ESP32 дээр байна. Тэдгээрийн дотор та төхөөрөмжүүдийн жагсаалтыг илрүүлэх, үүсгэх бидний үйл ажиллагааны зарчмыг хэрэгжүүлэх боломжтой.

Өөр нэг бодлын туршилт хийцгээе. Бидэнд ZESP32 гарц эсвэл SLS гарц эсвэл MySensors байна. Тэдгээрийг нэг мэдээллийн орон зайд хэрхэн нэгтгэх вэ? Бид эдгээр гарцуудын стандарт функцүүдэд SSDP протоколын санг нэмэх болно. SSDP-ээр дамжуулан энэ хянагч руу хандах үед энэ нь түүнд холбогдсон төхөөрөмжүүдийн жагсаалтыг стандарт хариулт руу нэмнэ. Энэ мэдээлэл дээр үндэслэн хөтөч хуудас үүсгэх болно. Ерөнхийдөө энэ нь иймэрхүү харагдах болно:

Литко нэгдэж байна
Вэб интерфэйс

Литко нэгдэж байна
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"
}

Энэ жишээ нь төхөөрөмжүүдийг бие биенээсээ хамааралгүйгээр нэмдэг болохыг харуулж байна. Өөрийн IP хаягтай 3 термостат, өвөрмөц ID бүхий 5 өөр мэдрэгч холбогдсон. Хэрэв мэдрэгч нь Wi-Fi сүлжээнд холбогдсон бол өөрийн гэсэн IP-тэй байх ба хэрэв гарцтай холбогдсон бол төхөөрөмжийн IP хаяг нь гарцын IP хаяг болно.

Бид төхөөрөмжүүдтэй холбогдохын тулд WebSocket ашигладаг. Энэ нь хүсэлтийг хүлээн авахтай харьцуулахад нөөцийн зардлыг багасгах, холбогдох эсвэл өөрчлөх үед мэдээллийг динамикаар авах боломжийг олгодог.

Мэдээллийг серверийг тойрч, блок хамаарах төхөөрөмжөөс шууд авдаг. Тиймээс хэрэв төхөөрөмжүүдийн аль нэг нь доголдсон тохиолдолд систем үргэлжлүүлэн ажиллана. Вэб интерфэйс нь жагсаалтаас алга болсон төхөөрөмжийг харуулахгүй. Гэхдээ шаардлагатай бол алдагдлын тухай дохио нь хэрэглэгчийн програмд ​​​​мэдэгдэл хэлбэрээр ирэх болно.

Энэ аргыг хэрэгжүүлэх анхны оролдлого нь PWA програм байсан. Энэ нь хэрэглэгчийн төхөөрөмж дээр блок суурийг хадгалах, зөвхөн шаардлагатай өгөгдлийг хүсэх боломжийг олгоно. Гэхдээ бүтцийн онцлогоос шалтгаалан энэ сонголт бүрэн бус байна. Үүнээс гарах цорын ганц арга зам бий - одоогоор идэвхтэй хөгжүүлэгдэж байгаа Android болон IOS-д зориулсан уугуул програм. Анхдагч байдлаар, програм нь зөвхөн дотоод сүлжээнд ажиллах болно. Шаардлагатай бол та бүх зүйлийг гадны удирдлагад шилжүүлж болно. Тиймээс хэрэглэгч дотоод сүлжээг орхих үед програм автоматаар үүл рүү шилждэг.

Гадаад хяналт - хуудсыг бүрэн хуулбарлах. Хуудсыг идэвхжүүлсэн үед хэрэглэгч серверт нэвтэрч, хувийн дансаараа дамжуулан төхөөрөмжөө удирдах боломжтой. Тиймээс Сервер нь үйл ажиллагаагаа өргөжүүлж, гэрээсээ гадуур байгаа төхөөрөмжүүдийг удирдах боломжийг олгодог бөгөөд порт дамжуулах эсвэл тусгай IP хаягтай холбоогүй болно.

Тиймээс дээрх сонголт нь серверийн хандлагын сул талгүй бөгөөд шинэ төхөөрөмжүүдийг холбох уян хатан байдлын хувьд хэд хэдэн давуу талтай байдаг.

Термостатын тухай

Жишээ болгон термостатыг ашиглан хяналтын системийг авч үзье.

Өгөгдсөн:

  1. Термостат бүрийн температурын хяналт (тусдаа блок хэлбэрээр харагдана);
  2. Термостатын ажиллах хуваарийг тохируулах (өглөө, үдээс хойш, орой, шөнө);
  3. Wi-Fi сүлжээг сонгох, түүнд төхөөрөмж холбох;
  4. Төхөөрөмжийг "агаараар" шинэчлэх;
  5. MQTT-г тохируулах;
  6. Төхөөрөмж холбогдсон сүлжээг тохируулна уу.

Литко нэгдэж байна

Вэб интерфэйсээр удирдахаас гадна бид дэлгэц дээр дарж сонгодог хувилбарыг өгсөн. Усан онгоцон дээр Nextion NX3224T024 2.4 инчийн дэлгэц байдаг. Төхөөрөмжтэй ажиллахад хялбар байсан тул сонголт нь түүнд унасан. Гэхдээ бид STM32 дээр суурилсан монитороо хөгжүүлж байна. Түүний функциональ байдал нь Nextion-ээс муу биш боловч өртөг багатай бөгөөд энэ нь төхөөрөмжийн эцсийн үнэд эерэгээр нөлөөлнө.

Литко нэгдэж байна

Өөрийгөө хүндэтгэдэг термостатын дэлгэцийн нэгэн адил манай Nextion нь:

  • хэрэглэгчийн шаардлагатай температурыг тохируулах (баруун талд байгаа товчлууруудыг ашиглан);
  • хуваарьт ажиллах горимыг асаах, унтраах (товчлуур H);
  • релений ажиллагааг харуулах (зүүн талд байгаа сум);
  • хүүхдийн хамгаалалттай (түгжээг арилгах хүртэл физик товшилтыг хаасан);
  • WiFi дохионы хүчийг харуулдаг.

Нэмж дурдахад монитор ашиглан та дараахь зүйлийг хийх боломжтой.

  • хэрэглэгчийн суулгасан мэдрэгчийн төрлийг сонгох;
  • хүүхдийн түгжээний функцийг удирдах;
  • програм хангамжийг шинэчлэх.

Литко нэгдэж байна

WiFi самбар дээр дарснаар хэрэглэгч холбогдсон сүлжээний талаарх мэдээллийг олж авах болно. QR код нь төхөөрөмжийг HomeKit програм хангамжид холбоход хэрэглэгддэг.

Литко нэгдэж байна

Дэлгэцтэй ажиллах демо:

Литко нэгдэж байна

Бид хөгжсөн Демо хуудас гурван холбогдсон термостаттай.

Та “Таны термостат юугаараа онцлог вэ?” гэж асууж магадгүй. Одоо зах зээл дээр Wi-Fi функц, хуваарийн дагуу ажиллах, мэдрэгчтэй удирдлагатай олон термостатууд байдаг. Сонирхогчид хамгийн алдартай ухаалаг гэрийн системүүдтэй (Majordomo, HomeAssistant гэх мэт) харилцах модулиудыг бичсэн байдаг.

Манай термостат нь ийм системтэй нийцдэг бөгөөд дээр дурдсан бүх зүйл байдаг. Гэхдээ өвөрмөц онцлог нь системийн уян хатан байдлын ачаар термостатыг байнга сайжруулж байдаг. Шинэчлэлт бүрээр функц нь өргөжих болно. Системийн удирдлагын стандарт аргад (хуваарийн дагуу) бид дасан зохицох аргыг нэмнэ. Энэхүү програм нь хэрэглэгчийн газарзүйн байршлыг олж авах боломжийг танд олгоно. Үүний ачаар систем нь байршлаас хамааран үйлдлийн горимыг динамикаар өөрчлөх болно. Мөн цаг агаарын модуль нь цаг агаарын нөхцөлд дасан зохицох боломжийг танд олгоно.

Мөн өргөтгөх чадвар. Хэн ч одоо байгаа ердийн термостатаа манайхаар сольж болно. Хамгийн бага хүчин чармайлтаар. Бид зах зээл дээрх хамгийн алдартай 5 мэдрэгчийг сонгож, тэдэнд нэмэлт дэмжлэг үзүүлсэн. Гэхдээ мэдрэгч нь онцгой шинж чанартай байсан ч хэрэглэгч үүнийг манай термостаттай холбох боломжтой болно. Үүнийг хийхийн тулд та тодорхой мэдрэгчтэй ажиллахын тулд термостатыг тохируулах шаардлагатай болно. Бид зааварчилгаа өгөх болно.

Термостат эсвэл бусад төхөөрөмжийг холбохдоо энэ нь хаа сайгүй нэгэн зэрэг гарч ирдэг: вэб интерфэйс болон PWA програмын аль алинд нь. Төхөөрөмж нэмэх нь автоматаар хийгддэг: та үүнийг Wi-Fi сүлжээнд холбоход л хангалттай.

Манай системд Сервер хэрэггүй бөгөөд бүтэлгүйтвэл хулуу болж хувирдаггүй. Бүрэлдэхүүн хэсгүүдийн аль нэг нь бүтэлгүйтсэн ч систем нь онцгой байдлын хувилбарт ажиллаж эхэлдэггүй. Хянагч, мэдрэгч, төхөөрөмж - элемент бүр нь сервер ба үйлчлүүлэгчийн аль аль нь байдаг тул бүрэн бие даасан байдаг.

Сонирхсон хүмүүсийн хувьд манай нийгмийн сүлжээнүүд: цахилгаан, Instagram, Telegram мэдээ, VK, Facebook-ийн.

Мэйл: [имэйлээр хамгаалагдсан]

PS Бид таныг Серверийг орхихыг дэмжихгүй. Бид мөн MQTT серверийг дэмждэг бөгөөд өөрийн гэсэн үүлтэй. Бидний зорилго бол системийн тогтвортой байдал, найдвартай байдлыг цоо шинэ түвшинд гаргах явдал юм. Ингэснээр Сервер нь сул тал биш, харин функцийг нөхөж, системийг илүү тохиромжтой болгодог.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх