Литко обединява

Преди време ви запознахме интелигентен термостат. Тази статия първоначално беше замислена като демонстрация на неговия фърмуер и система за управление. Но за да обясним логиката на термостата и това, което внедрихме, е необходимо да очертаем цялата концепция като цяло.

Литко обединява

Относно автоматизацията

Условно цялата автоматизация може да бъде разделена на три категории:
Категория 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"
	}

Както можете да видите от примера, списъкът включва идентификатори на устройства, IP адрес в мрежата, тип модул (в нашия случай термостат, базиран на Sonoff). Този списък се актуализира веднъж на всеки две минути (този период е достатъчен, за да отговори на динамичните промени в броя на устройствата в мрежата). По този начин ние проследяваме устройства, добавени, променени и деактивирани без действия на потребителя. Този списък се изпраща до браузъра или мобилното приложение, а самият скрипт генерира страница с определен брой блокове. Всеки блок отговаря на едно устройство/сензор/контролер. Визуално списъкът изглежда така:

Литко обединява

Но какво ще стане, ако други радиосензори са свързани към esp8266/esp32 чрез cc2530 (ZigBee) или nrf24 (MySensors)?

Относно проектите

На пазара има различни разпределени системи. Нашата система ви позволява да се интегрирате с най-популярните.

По-долу са представени проекти, които по един или друг начин се опитват да променят ситуацията с несъвместимостта на различните производители един с друг. това е например SLS Gateway, 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"
}

Примерът показва, че устройствата се добавят независимо едно от друго. Свързани са 3 термостата със собствени IP адреси и 5 различни сензора с уникални идентификатори. Ако сензорът е свързан към Wi-Fi мрежа, той ще има собствен IP; ако е свързан към шлюз, тогава IP адресът на устройството ще бъде IP адресът на шлюза.

Използваме WebSocket за комуникация с устройства. Това ви позволява да минимизирате разходите за ресурси в сравнение с динамичното получаване на заявки и информация при свързване или промяна.

Данните се вземат директно от устройството, към което принадлежи блокът, заобикаляйки сървъра. Така, ако някое от устройствата се повреди, системата продължава да работи. Уеб интерфейсът просто не показва липсващото устройство от списъка. Но сигналът за загубата, ако е необходимо, ще дойде под формата на известие в приложението на потребителя.

Първият опит за прилагане на този подход беше PWA приложение. Това ви позволява да съхранявате блокова база на устройството на потребителя и да изисквате само необходимите данни. Но поради особеностите на структурата тази опция е непълна. И има само един изход - родно приложение за Android и IOS, което в момента е в процес на активна разработка. По подразбиране приложението ще работи само във вътрешната мрежа. Ако е необходимо, можете да прехвърлите всичко на външен контрол. Така че, когато потребителят напусне локалната мрежа, приложението автоматично превключва към облака.

Външен контрол - пълно дублиране на страницата. Когато страницата е активирана, потребителят може да влезе в сървъра и да управлява устройства чрез личния си акаунт. По този начин сървърът разширява своята функционалност, позволявайки ви да управлявате устройства, докато сте извън дома, без да сте обвързани с пренасочване на порт или специален IP.

По този начин горната опция няма недостатъците на сървърния подход и също така има редица предимства под формата на гъвкавост при свързване на нови устройства.

Относно термостата

Нека да разгледаме системата за управление, използвайки нашия термостат като пример.

При условие:

  1. Контрол на температурата за всеки термостат (показва се като отделен блок);
  2. Настройка на графика за работа на термостата (сутрин, следобед, вечер, нощ);
  3. Избор на Wi-Fi мрежа и свързване на устройство към нея;
  4. Актуализиране на устройството "по въздуха";
  5. Настройка на MQTT;
  6. Конфигурирайте мрежата, към която е свързано устройството.

Литко обединява

Освен управление през уеб интерфейса, осигурихме и класическия - чрез клик върху дисплея. На борда има 3224-инчов монитор Nextion NX024T2.4. Изборът падна върху него поради лекотата на работа с устройството. Но ние разработваме собствен монитор, базиран на STM32. Функционалността му не е по-лоша от тази на Nextion, но ще струва по-малко, което ще се отрази положително на крайната цена на устройството.

Литко обединява

Като всеки уважаващ себе си екран на термостат, нашият Nextion може:

  • задайте желаната от потребителя температура (използвайки бутоните отдясно);
  • включване и изключване на режима на работа по график (бутон H);
  • работа на релето на дисплея (стрелка вляво);
  • има защита от деца (физическите щраквания са блокирани, докато ключалката не бъде премахната);
  • показва силата на WiFi сигнала.

Освен това с помощта на монитора можете:

  • изберете типа сензор, инсталиран от потребителя;
  • управлявайте функцията за заключване за деца;
  • актуализирайте фърмуера.

Литко обединява

Щраквайки върху WiFi лентата, потребителят ще разбере информация за свързаната мрежа. QR кодът се използва за сдвояване на устройството във фърмуера на HomeKit.

Литко обединява

Демо за работа с дисплея:

Литко обединява

Ние сме се развили демо страница с три свързани термостата.

Може да попитате: „Какво е специалното във вашия термостат?“ Сега на пазара има много термостати с Wi-Fi функция, работа по график и сензорно управление. И ентусиастите са написали модули за взаимодействие с най-популярните системи за интелигентен дом (Majordomo, HomeAssistant и др.).

Нашият термостат е съвместим с такива системи и притежава всичко изброено по-горе. Но отличителната черта е, че термостатът непрекъснато се подобрява, благодарение на гъвкавостта на системата. С всяка актуализация функционалността ще се разширява. Към стандартния метод за управление на системата (по график) ще добавим адаптивен. Приложението ви позволява да получите геолокацията на потребителя. Благодарение на това системата динамично ще променя режимите на работа в зависимост от местоположението си. А метеорологичният модул ще ви позволи да се адаптирате към метеорологичните условия.

И разширяемост. Всеки може да замени своя съществуващ конвенционален термостат с нашия. С минимални усилия. Избрахме 5 от най-популярните сензори на пазара и добавихме поддръжка за тях. Но дори ако сензорът има изключителни характеристики, потребителят ще може да го свърже към нашия термостат. За да направите това, ще трябва да калибрирате термостата да работи с определен сензор. Ние ще предоставим инструкции.

Когато свържете термостат или друго устройство, то едновременно се появява навсякъде: както в уеб интерфейса, така и в приложението PWA. Добавянето на устройство става автоматично: просто трябва да го свържете към Wi-Fi мрежата.

Нашата система не се нуждае от сървър и ако се провали, не се превръща в тиква. Дори ако един от компонентите се повреди, системата не започва да работи в авариен сценарий. Контролери, сензори, устройства - всеки елемент е едновременно сървър и клиент, следователно напълно автономен.

За тези, които се интересуват, нашите социални мрежи: Telegram, Instagram, Телеграм новини, VK, Facebook.

Е-мейл: [имейл защитен]

PS Ние не ви насърчаваме да изоставите сървъра. Ние също поддържаме MQTT сървър и имаме собствен облак. Нашата цел е да изведем стабилността и надеждността на системата на съвсем ново ниво. Така че сървърът не е слабо място, а допълва функционалността и прави системата по-удобна.

Източник: www.habr.com

Добавяне на нов коментар