Lytko birləşdirir

Bir müddət əvvəl biz sizə ağıllı termostatıtəqdim etdik. Bu günkü məqalə, onun proqram təminatı və idarəetmə sisteminin nümayişi olaraq planlaşdırılmışdı. Lakin termostatın işləmə məntiqini izah etmək və həyata keçirdiklərimizi başa düşmək üçün bütövlükdə konsepsiyanı ətraflı izah etmək lazımdır.

Lytko birləşdirir

Avtomatlaşdırma haqqında

Şərti olaraq, bütün avtomatlaşdırmanı üç kateqoriyaya bölmək olar:
Kateqoriya 1 — ayrı-ayrı "ağıllı" cihazlar. Müxtəlif istehsalçılardan işıqlar, çaydanlar və s. alırsınız. Üstünlükləri: hər bir cihaz imkanları genişləndirir və rahatlığı artırır. Çətinlikləri: hər yeni istehsalçı üçün öz tətbiqi tələb olunur. Fərqli istehsalçıların cihazlarının protokolları tez-tez bir-biri ilə uyğun gəlmir.

Kateqoriya 2 — bir platalı PC və ya x86 uyğun cihazın quraşdırılması. Bu, hesablama gücü ilə bağlı məhdudiyyətləri aradan qaldırır və bu maşın üzərində MajorDoMo və ya ağıllı evin idarə edilməsi üçün başqa bir server distrosu quraşdırılır. Beləliklə, əksər istehsalçıların cihazları tək bir informasiya mühitində birləşir. Yəni, öz ağıllı ev serveriniz yaranır. Üstünlükləri: tək bir mərkəzdə uyğunluq, bu da idarəetmə üçün geniş imkanlar yaradır. Çətinlikləri: serverin sıradan çıxması halında, bütün sistem 1-ci mərhələyə qayıdır, yəni ayrılmış olur və ya faydasız olur.

Kateqoriya 3 — ən çətin variant. Təmir mərhələsində bütün kommunikasiya xətləri keçirilir və bütün sistemlər təkrarlanır. Üstünlükləri: hər şey mükəmməl dərəcəyə çatdırılır, beləliklə ev həqiqətən ağıllı olur. Çətinlikləri: 1-ci və 2-ci kateqoriyalarla müqayisədə son dərəcə bahadır, hər şeyi əvvəlcədən düşünmək və hər detalı nəzərə almaq zəruridir.

Çoxtan lazımi istifadəçilər birinci variantı seçir və sonra hamar bir şəkildə ikinci variantına keçirlər. Və bir müddət sonra, ən davamlılar üçüncü variantına çatırlar.

Amma bunu desəniz ki, belə bir variant artıq hazırlanıb. Lakin bu cür həllər — dar istiqamətlidir; proqramlaşdırmanı bilən insanlar üçündür. Məqsədimiz — belə paylanmış sistemlərə daxil olmağı aşağı salmaqdır, istər son cihazlar, istərsə də mövcud cihazların sistemimizə inteqrasiyası formasında. Termostatla bağlı olaraq, istifadəçi sadəcə köhnə termostatını çıxarır, ağıllısını quraşdırır və ona sahib olduğu sensorları birləşdirir. Hər hansı əlavə addımlar olmadan.

Gəlin sistemimizdə inteqrasiyanı bir nümunə ilə nəzərdən keçirək.

...

Fərz edək ki, şəbəkəmizdə 8 Sonoff modulu var. Bəzi istifadəçilər Sonoff buludu vasitəsilə idarəetmə ilə kifayətlənəcəklər (kateqoriya 1). Bəzi istifadəçilər isə üçüncü tərəf firmware-lərdən istifadə edərək, 2-ci kateqoriyaya keçəcəklər. Əksər üçüncü tərəf firmware-ləri eyni prinsiplə işləyir: verilərin MQTT-serverinə göndərilməsi. OpenHub, Majordomo və ya digər sistemlər müstəqil cihazları birləşdirmək məqsədini daşıyır, bu da internetdə və ya yerli şəbəkədə yerləşə bilər. Beləliklə, serverin olması zəruridir. Buradan əsas problem doğur: serverin sıradan çıxması bütün sistemin müstəqil işləməsini dayandırır. Bunun qarşısını almaq üçün sistemlər daha mürəkkəbləşir, serverin sıradan çıxması halında avtomatı təkrarlayan əl idarəetmə üsulları əlavə edilir.

Biz başqa bir yola getdik, burada hər bir cihaz öz-özlüyündə kifayətdir. Beləliklə, server həyati əhəmiyyət kəsb etmir, sadəcə funksionallığı artırır.

Düşüncə təcrübəsinə qayıdaq. Yenidən eyni 8 Sonoff modulunu götürək və onlara Lytko firmware-nı quraşdıraq. Bütün Lytko firmware-lərində aşağıdakı funksiya tətbiq edilir SSDP. SSDP — şəbəkə xidmətlərinin elan edilməsi və aşkar edilməsi üçün istifadə olunan internet protokolları toplusu əsasında olan şəbəkə protokolu. Sorğuya cavab ya standart, ya da genişləndirilmiş ola bilər. Bu cavabı standart funksiyalardan əlavə şəbəkədəki cihazların siyahısını yaratmaq üçün də salmışıq. Beləliklə, cihazlar bir-birini tapır, və hər birində belə bir siyahı olacaq. SSDP siyahısının misalı:

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

Məsələyə nəzər yetirək, siyahı cihazların id-lərini, şəbəkədəki ip ünvanını, blokun tipini (bizim halımızda — Sonoff əsaslı termostat) əhatə edir. Bu siyahı iki dəqiqədən bir yenilənir (bu müddət şəbəkədə cihazların dinamik dəyişməsini izləmək üçün yetərlidir). Beləliklə, biz cihazların əlavə olunması, dəyişdirilməsi və deaktiv edilməsini istifadəçinin heç bir hərəkəti olmadan izləyirik. Bu siyahı brauzerə və ya mobil tətbiqə göndərilir, və skript müəyyən blokların sayına uyğun olaraq səhifəni özü yaradır. Hər bir blok bir cihaz/sensor/kontrollerə uyğun gəlir. Siyahı vizual olaraq belə görünə bilər:

Lytko birləşdirir

Amma əgər esp8266/esp32-yə cc2530 (ZigBee) və ya nrf24 (MySensors) vasitəsilə digər radio-sensorlar qoşulubsa?

Layihələr haqqında

Bazarda müxtəlif paylanmış sistemlər mövcuddur. Bizim sistem ən populyar sistemlərlə inteqrasiya etməyə imkan tanıyır.

Aşağıda müxtəlif istehsalçılar arasında uyğunsuzluğu aradan qaldırmağa çalışılan layihələr təqdim olunur. Məsələn, SLS Gateway, MySensors ZESP32. ZigBee2MQTT MQTT serverinə bağlı olduğundan, nümunə üçün uyğun deyil.

MySensors-in tətbiqi variantlarından biri ESP8266 əsaslı bir qapıdır. Digər nümunələr ESP32-dədir. Onlarda cihazların aşkar olunması və siyahısının yaradılması üçün iş prinsiplərimizi tətbiq edə bilərik.

Bir düşündürücü eksperiment daha keçirək. ZESP32 və ya SLS Gateway, ya da MySensors qapısı ilə bağlıyıq. Onları vahid bir informasiya mühitində necə birləşdirə bilərik? Bu qapıların standart funksiyalarına SSDP protokolu kitabxanasını əlavə edəcəyik. Bu kontrolörə SSDP vasitəsilə müraciət etdikdə, o, standart cavabına qoşulmuş cihazların siyahısını əlavə edəcək. Bu məlumatlara əsaslanaraq, brauzer bir səhifə formalaşdıracaq. Ümumilikdə bu belə görünəcək:

Lytko birləşdirir
Veb-interfeysi

Lytko birləşdirir
PWA tətbiqi

"ssdpList": 
{
   "id": 94967291, // cihazın unikal identifikatoru
   "ip": "192.168.x.x", // şəbəkədəki ip adresi
   "type": "thermostat" // cihazın tipi
},
{
   "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ümunədən görünür ki, cihazlar bir-birindən müstəqil şəkildə əlavə olunur. 3 termostat öz ip adresləri ilə və 5 fərqli sensor unikal id ilə qoşulub. Sensor Wi-Fi şəbəkəsinə qoşulursa, öz ip-si olacaq, əgər qapıya qoşulursa, cihazın ip adresi qapının ip adresi olacaq.

Cihazlarla əlaqə üçün WebSocket istifadə edirik. Bu, resurs xərclərini minimize etməyə imkan tanıyır və qoşulma və ya dəyişiklik zamanı məlumatları dinamik şəkildə alır.

Məlumatlar birbaşa blokun aid olduğu cihazdan alınır, serveri sıçrayaraq. Beləliklə, cihazlardan hər hansı biri uğursuz olarsa, sistem işləməyə davam edir. Web-interfeysdə yalnız siyahıdan itmiş cihaz göstərilməyəcək. Lakin, lazım olduqda, istifadəçi tətbiqinə bir bildiriş şəklində itkinin siqnalı göndəriləcək.

Belə yanaşmanın ilk tətbiqi PWA tətbiqi oldu. Bu, istifadəçi cihazında blokların bazasını saxlamağa və yalnız zəruri məlumatları tələb etməyə imkan tanıyır. Lakin, belə bir variantın struktural xüsusiyyətləri nedeniyle tam görə bilməz. Çözüm biri — Android və iOS üçün yerli tətbiqdir, bu indiki zamanda fəal inkişaf mərhələsindədir. Varsayılan olaraq, tətbiq yalnız daxili şəbəkədə işləyəcək. Lazım olduqda, hər şeyi xarici idarəyə çevirə bilərik. Beləcə, istifadəçi lokal şəbəkəni tərk etdikdən sonra, tətbiq avtomatik olaraq bulud mühitinə keçir.

Xarici idarəetmə — səhifənin tam təkrarı. Səhifə aktivləşdirildikdə, istifadəçi serverə daxil olub, cihazları şəxsi kabinet vasitəsilə idarə edə bilər. Bu yolla, server funksionallığı genişləndirərək, istifadəçilərə evdən kənarda olarkən cihazları idarə etməyə imkan tanıyır, port yönləndirməsi və ya xüsusi IP-yə bağlı olmadan.

Buna görə də, yuxarıda təsvir olunan variant server yanaşmasının çatışmazlıqlarından azaddır və yeni cihazların qoşulmasında çeviklik kimi bir sıra üstünlüklər təqdim edir.

Termostat haqqında

İdarəetmə sistemini bizim termostat nümunəsində müzakirə edək.

Təmin edilmişdir:

  1. Hər termostatın temperaturunun tənzimlənməsi (müxtəlif bloklarda göstərilir);
  2. Termostatın iş cədvəlini tənzimləmə (səhər, gündüz, axşam, gecə);
  3. Wi-Fi şəbəkəsinin seçimi və cihazın ona qoşulması;
  4. Cihazın “hava yolu ilə” yenilənməsi;
  5. MQTT-nin tənzimlənməsi;
  6. Cihazın qoşulduğu şəbəkənin tənzimlənməsi.

Lytko birləşdirir

Web interfeysi vasitəsilə idarəetmədən əlavə, klassik idarəetmə (ekranda basma) də düşünülmüşdür. Bordda 2.4 düymlük Nextion NX3224T024 monitoru var. Bu, cihazla işləyin asanlığı səbəbindən seçilmişdir. Lakin STM32 əsasında öz monitorumuza dair inkişaf da davam edir. Onun funksiyaları Nextion-dan heç də geri qalmır, amma qiyməti daha ucuz olacaq, bu da cihazın son qiymətinə müsbət təsir göstərəcək.

Lytko birləşdirir

Hər cür termostat ekranında olduğu kimi, bizim Nextion da edə bilir:

  • istifadəçiyə lazım olan temperaturu təyin etmək (sağdakı düymələrlə);
  • iş rejimini cədvəl üzrə açmaq və ya bağlamaq (N düyməsi);
  • rele işini göstərmək (sol tərəfdəki işarə);
  • uşaq qoruma sisteminə malikdir (fiziki basmalar bloklanır, kilid açılmadan);
  • WiFi siqnalının səviyyəsini göstərir.

Bundan əlavə, monitor vasitəsilə aşağıdakıları edə bilərsiniz:

  • istifadəçinin quraşdırdığı sensorun növünü seçmək;
  • uşaq qoruma funksiyasını idarə etmək;
  • firmware-ni yeniləmək.

Lytko birləşdirir

WiFi çubuğuna klik etdikdə, istifadəçi qoşulmuş şəbəkə haqqında məlumat əldə edir. QR kodu HomeKit firmware-də cihazın uyğunlaşdırılması üçün istifadə olunur.

Lytko birləşdirir

Ekranla işləməyə dair demo:

Lytko birləşdirir

Biz inkişaf etdirmişik demo səhifə üç qoşulmuş termostat ilə.

Siz soruşacaqsınız: “Sizin termostatın fərqi nədir?” Hazırda bazarda Wi-Fi funksiyası, cədvəl ilə işləmə, sensor idarəetməsi olan bir çox termostat mövcuddur. Həmçinin, entuziastlar çoxlu populyar ağıllı ev sistemləri ilə qarşılıqlı əlaqə yaratmaq üçün modullar yazıblar (Majordomo, HomeAssistant və s.).

Bizim termostat, bu sistemlə uyğundur və yuxarıda göstərilən bütün xüsusiyyətlərə malikdir. Lakin fərqləndirici xüsusiyyət odur ki, termostat daim inkişaf edir, sistemin elastikliyi sayəsində. Hər bir yeniləmə ilə funksiya genişlənəcəkdir. Standart idarəetmə üsuluna (qrafikə əsasən) əlavə olaraq, adaptiv idarəetmə əlavə edəcəyik. Tətbiq istifadəçinin coğrafi mövqeyini əldə etmək imkanını təqdim edir. Bu sayədə sistem dinamik olaraq istifadəçinin yerinə görə iş rejimlərini dəyişəcəkdir. Və hava modulunun olması hava şəraitinə uyğunlaşmağı təmin edəcəkdir.

Və genişlənə bilmək. Hər kəs, quraşdırılmış adi termostatı bizimki ilə əvəz edə biləcək. Minimum səylə. Biz bazarda təqdim olunan 5 ən populyar sensorları seçdik və onların dəstəyini əlavə etdik. Lakin hətta sensorun eksklüziv xüsusiyyətləri olduqda, istifadəçi onu bizim termostatımıza qoşa biləcək. Bunun üçün termostatı müəyyən sensorla işləmək üçün kalibrləşdirmək lazımdır. Təlimatları biz təqdim edəcəyik.

Termostatı və ya hər hansı digər cihazı qoşduqda, eyni anda hər yerdə görünür: həm veb-interfeys, həm də PWA tətbiqində. Cihazın əlavə edilməsi avtomatik baş verir: sadəcə onu Wi-Fi şəbəkəsinə qoşmaq kifayətdir.

Bizim sistemə Server lazım deyil və onun uğursuzluğu zamanı balqabağa çevrilmir. Hətta komponentlərdən birinin uğursuzluğu zamanı sistem fövqəladə ssenari üzrə işə başlamır. Kontrollerlər, sensorlar, cihazlar — hər bir element həm Server, həm müştəri funksiyasını yerinə yetirir, buna görə tam müstəqildir.

Maraqlananlar üçün - bizim sosial şəbəkələrimiz: Telegram, Ümid edirəm ki, bu ölkə haqqında düşüncələrimi və hekayələrimi oxumaq sizə maraqlı oldu. Yenə də,, Telegram Xəbərləri, VK, Facebook.

E-poçt: shop@lytko.com

P. S. Biz Serverdən imtina etməyə dəvət etmirik. Bizim də MQTT serveri dəstəyi var və öz buludumuz mövcuddur. Məqsədimiz sistemi sabitlik və etibarlılığı daha keyfiyyətli səviyyəyə qaldırmaqdır. Server zəif nöqtə olmamalı, əksinə, funksionallığı artırmalı və sistemi daha rahat etməlidir.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster