Litko birlashadi

Biroz vaqt oldin sizni tanishtirgan edik aqlli termostat. Ushbu maqola dastlab uning dasturiy ta'minoti va boshqaruv tizimini namoyish qilish uchun mo'ljallangan edi. Ammo termostatning mantig'ini va biz amalga oshirgan narsalarni tushuntirish uchun butun kontseptsiyani bir butun sifatida tasvirlash kerak.

Litko birlashadi

Avtomatlashtirish haqida

An'anaviy ravishda barcha avtomatlashtirishni uchta toifaga bo'lish mumkin:
1-toifa — alohida “aqlli” qurilmalar. Turli ishlab chiqaruvchilardan lampochkalar, choynaklar va hokazolarni sotib olasiz. Taroziga soling: Har bir qurilma imkoniyatlarni kengaytiradi va qulaylikni oshiradi. Kamchiliklari: Har bir yangi ishlab chiqaruvchi o'z dasturini talab qiladi. Turli ishlab chiqaruvchilarning qurilmalari protokollari ko'pincha bir-biriga mos kelmaydi.

2-toifa — bitta platali kompyuterni o'rnatish yoki x86 mos. Bu hisoblash quvvatidagi cheklovlarni olib tashlaydi va MajorDoMo yoki aqlli uyni boshqarish uchun boshqa server tarqatish ushbu mashinaga o'rnatiladi. Shunday qilib, ko'pchilik ishlab chiqaruvchilarning qurilmalari yagona axborot maydoniga ulangan. Bular. aqlli uy uchun shaxsiy Serveringiz paydo bo'ladi. Taroziga soling: kengaytirilgan boshqaruv imkoniyatlarini ta'minlaydigan yagona markaz ostida muvofiqlik. Kamchiliklari: agar server muvaffaqiyatsiz bo'lsa, butun tizim 1-bosqichga qaytadi, ya'ni. parchalanib ketadi yoki yaroqsiz holga keladi.

3-toifa - eng qattiq variant. Ta'mirlash bosqichida barcha kommunikatsiyalar yotqiziladi va barcha tizimlar takrorlanadi. Taroziga soling: hamma narsa mukammallikka keltiriladi va keyin uy chinakam aqlli bo'ladi. Kamchiliklari: 1 va 2-toifalarga nisbatan juda qimmat, hamma narsani oldindan o'ylab ko'rish va har bir mayda detalni hisobga olish zarurati.

Aksariyat foydalanuvchilar birinchi variantni tanlaydi va keyin muammosiz ikkinchi variantga o'tadi. Va keyin eng qat'iylari 3-variantga erishadilar.

Ammo taqsimlangan tizim deb atash mumkin bo'lgan variant mavjud: har bir alohida qurilma ham server, ham mijoz bo'ladi. Aslida, bu 1-variant va 2-variantni olish va birlashtirishga urinishdir. Ularning barcha ijobiy tomonlarini oling va kamchiliklarni yo'q qiling, oltin o'rtachani qo'lga oling.

Ehtimol, kimdir bunday variant allaqachon ishlab chiqilganligini aytadi. Ammo bunday qarorlar tor doirada; dasturlashni yaxshi biladigan odamlar uchun. Bizning maqsadimiz so'nggi qurilmalar ko'rinishida ham, mavjud qurilmalarni tizimimizga integratsiya qilish shaklida ham bunday taqsimlangan tizimlarga kirish to'siqlarini kamaytirishdir. Termostat holatida foydalanuvchi shunchaki eski termostatni olib tashlaydi, aqlli termostatni o'rnatadi va unga mavjud sensorlarini ulaydi. Hech qanday qo'shimcha qadamlarsiz.

Keling, misol yordamida tizimimizga integratsiyani ko'rib chiqaylik.

Tasavvur qilaylik, bizning tarmog'imizda 8 ta Sonoff moduli mavjud. Ba'zi foydalanuvchilar uchun Sonoff buluti orqali boshqarish (1-toifa) etarli bo'ladi. Ba'zilar uchinchi tomon proshivkalaridan foydalanishni boshlaydi va muammosiz 2-toifaga o'tadi. Uchinchi tomon proshivkalarining asosiy qismi bir xil printsip bo'yicha ishlaydi: ma'lumotlarni MQTT serveriga uzatish. OpenHub, Majordomo yoki boshqa bir maqsadga xizmat qiladi - turli xil qurilmalarni Internetda yoki mahalliy tarmoqda joylashgan yagona axborot maydoniga birlashtirish. Shuning uchun Serverning mavjudligi majburiydir. Bu erda asosiy muammo paydo bo'ladi - agar Server muvaffaqiyatsiz bo'lsa, butun tizim avtonom ishlashni to'xtatadi. Bunga yo'l qo'ymaslik uchun tizimlar murakkablashadi, qo'lda boshqarish usullari qo'shiladi, ular Server ishlamay qolgan taqdirda takroriy avtomatlashtirish.

Biz boshqa yo'lni tanladik, bu erda har bir qurilma o'zini o'zi ta'minlaydi. Shunday qilib, Server hal qiluvchi rol o'ynamaydi, faqat funksionallikni kengaytiradi.

Keling, fikrlash tajribasiga qaytaylik. Keling, yana 8 ta Sonoff modulini olamiz va ularga Lytko proshivkasini o'rnatamiz. Barcha Lytko proshivkalari funksiyaga ega SSDP. SSDP - bu tarmoq xizmatlarini reklama qilish va kashf qilish uchun Internet protokollar to'plamiga asoslangan tarmoq protokoli. So'rovga javob standart yoki kengaytirilgan bo'lishi mumkin. Standart funktsiyalardan tashqari, biz ushbu javobga tarmoqdagi qurilmalar ro'yxatini yaratishni kiritdik. Shunday qilib, qurilmalarning o'zi bir-birini topadi va ularning har biri bunday ro'yxatga ega bo'ladi. SSDP varaqiga misol:

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

Misoldan ko'rinib turibdiki, ro'yxatga qurilma identifikatorlari, tarmoqdagi IP-manzil, birlik turi (bizning holatlarimizda Sonoff-ga asoslangan termostat) kiradi. Ushbu ro'yxat har ikki daqiqada bir marta yangilanadi (bu davr tarmoqdagi qurilmalar sonining dinamik o'zgarishlariga javob berish uchun etarli). Shunday qilib, biz qo'shilgan, o'zgartirilgan va o'chirilgan qurilmalarni foydalanuvchi harakatisiz kuzatib boramiz. Ushbu ro'yxat brauzer yoki mobil ilovaga yuboriladi va skriptning o'zi ma'lum miqdordagi bloklarga ega sahifani yaratadi. Har bir blok bitta qurilma/sensor/kontrolörga mos keladi. Vizual ravishda ro'yxat quyidagicha ko'rinadi:

Litko birlashadi

Ammo boshqa radio sensorlar esp8266/esp32 ga cc2530 (ZigBee) yoki nrf24 (MySensors) orqali ulangan bo'lsa-chi?

Loyihalar haqida

Bozorda turli xil taqsimlangan tizimlar mavjud. Bizning tizimimiz sizga eng mashhurlari bilan integratsiya qilish imkonini beradi.

Quyida turli ishlab chiqaruvchilarning bir-biri bilan nomuvofiqligi bilan vaziyatni o'zgartirishga harakat qiladigan bir yo'l yoki boshqa loyihalar mavjud. Bu, masalan, SLS shlyuzi, MySensors yoki ZESP32. ZigBee2MQTT MQTT serveriga ulangan, shuning uchun u misol uchun mos emas.

MySensors-ni amalga oshirishning bir varianti ESP8266-ga asoslangan shlyuzdir. Qolgan misollar ESP32 da. Va ularda siz qurilmalar ro'yxatini aniqlash va yaratish bo'yicha bizning ishlash printsipimizni amalga oshirishingiz mumkin.

Keling, yana bir fikrlash tajribasini qilaylik. Bizda ZESP32 shlyuzi yoki SLS shlyuzi yoki MySensors mavjud. Qanday qilib ularni yagona axborot makonida birlashtirish mumkin? Ushbu shlyuzlarning standart funktsiyalariga SSDP protokoli kutubxonasini qo'shamiz. Ushbu kontrollerga SSDP orqali kirishda u standart javobga ulangan qurilmalar ro'yxatini qo'shadi. Ushbu ma'lumotlarga asoslanib, brauzer sahifa yaratadi. Umuman olganda, u quyidagicha ko'rinadi:

Litko birlashadi
Veb-interfeys

Litko birlashadi
PWA ilovasi

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

Misol shuni ko'rsatadiki, qurilmalar bir-biridan mustaqil ravishda qo'shiladi. O'z IP-manzillariga ega 3 ta termostat va noyob identifikatorli 5 xil sensorlar ulangan. Agar sensor Wi-Fi tarmog'iga ulangan bo'lsa, u o'z IP-ga ega bo'ladi; agar u shlyuzga ulangan bo'lsa, u holda qurilmaning IP-manzili shlyuzning IP-manzili bo'ladi.

Biz qurilmalar bilan aloqa qilish uchun WebSocket-dan foydalanamiz. Bu ulanish yoki o'zgartirish paytida so'rovlarni olish va ma'lumotni dinamik ravishda olish bilan solishtirganda resurs xarajatlarini minimallashtirish imkonini beradi.

Ma'lumotlar to'g'ridan-to'g'ri blok tegishli bo'lgan qurilmadan serverni chetlab o'tib olinadi. Shunday qilib, agar qurilmalardan birortasi ishlamay qolsa, tizim ishlashda davom etadi. Veb-interfeys faqat ro'yxatdagi etishmayotgan qurilmani ko'rsatmaydi. Ammo yo'qotish haqida signal, agar kerak bo'lsa, foydalanuvchi ilovasida bildirishnoma shaklida keladi.

Ushbu yondashuvni amalga oshirishga birinchi urinish PWA ilovasi edi. Bu foydalanuvchi qurilmasida blok bazasini saqlash va faqat kerakli ma'lumotlarni so'rash imkonini beradi. Ammo strukturaning o'ziga xos xususiyatlaridan kelib chiqqan holda, bu variant to'liq emas. Va faqat bitta yo'l bor - hozirda faol ishlab chiqilayotgan Android va IOS uchun mahalliy dastur. Odatiy bo'lib, dastur faqat ichki tarmoqda ishlaydi. Agar kerak bo'lsa, siz hamma narsani tashqi boshqaruvga o'tkazishingiz mumkin. Shunday qilib, foydalanuvchi mahalliy tarmoqni tark etganda, dastur avtomatik ravishda bulutga o'tadi.

Tashqi boshqaruv - sahifaning to'liq takrorlanishi. Sahifa faollashtirilganda foydalanuvchi serverga kirishi va shaxsiy hisobi orqali qurilmalarni boshqarishi mumkin. Shunday qilib, Server o'z funksionalligini kengaytiradi, bu sizga uydan tashqarida bo'lganingizda qurilmalarni boshqarish imkonini beradi va portni yo'naltirish yoki maxsus IP-ga bog'lanmaslik imkonini beradi.

Shunday qilib, yuqoridagi variant server yondashuvining kamchiliklariga ega emas, shuningdek, yangi qurilmalarni ulashda moslashuvchanlik shaklida bir qator afzalliklarga ega.

Termostat haqida

Misol sifatida termostatimizni ishlatib, boshqaruv tizimini ko'rib chiqaylik.

Taqdim etilgan:

  1. Har bir termostat uchun haroratni nazorat qilish (alohida blok sifatida ko'rsatiladi);
  2. Termostatni ishlash jadvalini o'rnatish (ertalab, tushdan keyin, kechqurun, tunda);
  3. Wi-Fi tarmog'ini tanlash va unga qurilmani ulash;
  4. Qurilmani "havo orqali" yangilash;
  5. MQTTni sozlash;
  6. Qurilma ulangan tarmoqni sozlang.

Litko birlashadi

Veb-interfeys orqali boshqarishdan tashqari, biz klassikani taqdim etdik - displeyni bosish orqali. Bortda Nextion NX3224T024 2.4 dyuymli monitor mavjud. Qurilma bilan ishlash qulayligi tufayli tanlov unga tushdi. Lekin biz STM32 asosida o'z monitorimizni ishlab chiqmoqdamiz. Uning funksionalligi Nextionnikidan yomon emas, lekin u kamroq xarajat qiladi, bu esa qurilmaning yakuniy narxiga ijobiy ta'sir qiladi.

Litko birlashadi

Har qanday o'z-o'zini hurmat qiladigan termostat ekrani singari, Nextion ham:

  • foydalanuvchi tomonidan talab qilinadigan haroratni o'rnating (o'ngdagi tugmalar yordamida);
  • rejalashtirilgan ish rejimini yoqish va o'chirish (H tugmasi);
  • o'rni ishini ko'rsatish (chapdagi o'q);
  • bolalar himoyasi mavjud (qulf chiqarilgunga qadar jismoniy sekin urishlar bloklanadi);
  • WiFi signal kuchini ko'rsatadi.

Bundan tashqari, monitor yordamida siz:

  • foydalanuvchi tomonidan o'rnatilgan sensor turini tanlang;
  • bolalardan himoya qilish funksiyasini boshqarish;
  • proshivkani yangilang.

Litko birlashadi

WiFi panelini bosish orqali foydalanuvchi ulangan tarmoq haqida ma'lumot topadi. QR kodi qurilmani HomeKit proshivkasida ulash uchun ishlatiladi.

Litko birlashadi

Displey bilan ishlash demosi:

Litko birlashadi

Biz rivojlandik demo sahifasi uchta ulangan termostat bilan.

“Termostatingizning o‘ziga xos xususiyati nimada?” deb so‘rashingiz mumkin. Endi bozorda Wi-Fi funksiyasi, rejalashtirilgan ishlashi va sensorli boshqaruvga ega ko'plab termostatlar mavjud. Va ishqibozlar eng mashhur aqlli uy tizimlari (Majordomo, HomeAssistant va boshqalar) bilan ishlash uchun modullarni yozdilar.

Bizning termostatimiz bunday tizimlarga mos keladi va yuqorida aytilganlarning barchasiga ega. Ammo o'ziga xos xususiyat shundaki, tizimning moslashuvchanligi tufayli termostat doimiy ravishda takomillashtiriladi. Har bir yangilanish bilan funksionallik kengayadi. Tizimni boshqarishning standart usuliga (jadvalga muvofiq) biz moslashuvchan usulni qo'shamiz. Ilova foydalanuvchining geolokatsiyasini olish imkonini beradi. Buning yordamida tizim joylashuviga qarab ish rejimlarini dinamik ravishda o'zgartiradi. Ob-havo moduli esa ob-havo sharoitlariga moslashish imkonini beradi.

Va kengaytirish imkoniyati. Har kim o'zining mavjud an'anaviy termostatini biznikiga almashtirishi mumkin. Minimal harakat bilan. Biz bozorda eng mashhur 5 ta sensorni tanladik va ularga yordam qo'shdik. Ammo sensorning eksklyuziv xususiyatlarga ega bo'lsa ham, foydalanuvchi uni termostatimizga ulashi mumkin. Buni amalga oshirish uchun siz termostatni ma'lum bir sensor bilan ishlash uchun sozlashingiz kerak bo'ladi. Biz ko'rsatmalar beramiz.

Termostatni yoki boshqa qurilmani ulashda u bir vaqtning o'zida hamma joyda paydo bo'ladi: veb-interfeysda ham, PWA ilovasida ham. Qurilmani qo'shish avtomatik ravishda amalga oshiriladi: uni Wi-Fi tarmog'iga ulash kifoya.

Bizning tizimimizga Server kerak emas va agar u muvaffaqiyatsiz bo'lsa, u qovoqqa aylanmaydi. Komponentlardan biri ishlamay qolsa ham, tizim favqulodda vaziyat stsenariysida ishlashni boshlamaydi. Kontrollerlar, sensorlar, qurilmalar - har bir element ham Server, ham mijozdir, shuning uchun butunlay avtonomdir.

Qiziqqanlar uchun ijtimoiy tarmoqlarimiz: Telegram, Instagram, Telegram yangiliklari, VK, Facebook.

Pochta: [elektron pochta bilan himoyalangan]

PS Biz sizni Serverdan voz kechishga undamaymiz. Shuningdek, biz MQTT serverini qo'llab-quvvatlaymiz va o'z bulutimizga egamiz. Bizning maqsadimiz tizim barqarorligi va ishonchliligini butunlay yangi bosqichga olib chiqishdir. Shunday qilib, Server zaif nuqta emas, balki funksionallikni to'ldiradi va tizimni qulayroq qiladi.

Manba: www.habr.com

a Izoh qo'shish