Страница 1 из 1

мое видение простого контроллера в системе умный дом

Добавлено: 23 июл 2019, 16:48
sashad
Прошивка разработана на базе предыдущего проекта. В этом проекте ставилась цель создать web интерфейс по настройке устройства. Технологически интерфейс представляет собой web-приложение, которое хранится в расширенной памяти устройства ESP8266, данное приложение взаимодействует с основным приложением, которое работает в самом устройстве, по протоколу websocket. Данный факт позволяет взаимодействовать с устройством в режиме DIY, т.е. вместо web-приложения может быть любая пользовательская система. Формат данных, который используется в обмене - JSON.

Под данный проект разработана плата устройства, которая включает:

Электромагнитное реле - 2 шт;
светодиодный сегментный дисплей (4 сегмента);
три кнопки управления;
вольтметр (можно использовать один из двух входов до 5 вольт или до 3.3 вольт);
адаптер (мастер) шины 1-wire на базе чипа DS2482S-100.
Прототип устройства можно увидеть на картинках ниже.

Картинка1 Картинка2 Картинка3

Контроллер предполагает расширение аппаратного функционала по шине 1-wire, на первом этапе (текущем) поддерживаются устройства:

датчик температуры DS18B20
switch/sensor DS2413 (подключение сенсоров и исполнительных устройств-реле).
Максимально возможное количество подключенных устройств к контроллеру по шине 1-wire ограничено числом 32.

Запланировано поддержка других устройств для шины 1-wire и развитие функционала самой прошивки. Прошивка включает автообновление новых версий через интернет.

Как и в предыдущем проекте основная цель контроллера - это автономность и самодостаточность для простых случаев автоматизации (без использования дорогих внешних контроллеров).

На светодиодном индикаторе можно просмотреть состояние всех подключенных датчиков. При изменении температуры или состояния датчика, индикатор замигает и покажет номер и значение этого датчика.

С помощью кнопок можно управлять заданными в приложении реле.

Так же устройство поддерживает протоколы UDP и MQTT.

При первоначальном включении устройства, оно находится режиме AP-точки доступа WiFi, так что пользователь может подключиться к нему со смартфона и произвести первоначальные настройки для подключения к домашней WiFi сети. В дальнейшем на устройство можно заходить любым интернет-браузером по адресу вида http://ow-XXXXXX.local, где XXXXXX - уникальный номер устройства.

Возможности прошивки можно увидеть в демо-приложении - esp.1vp.ru.

К данному варианту настройки приложения настроена mqtt-панель для смартфона (скриншет ниже). В основном, mqtt-панель служит для мониторинга настроенных в приложении исполнительных устройств, но можно вмешиваться в автоматический режим работы реле. Если какое либо реле остается не настроенным, то им можно управлять только в ручном режиме с помощью mqtt панели или посредством DIY режима, по протоколу websocket.

MQTT-панель-1 MQTT-панель-2

Далее следует описание функций, которые могут быть настроены для любого реле (исполнительного устройства) в системе.

Реле времени
Реле времени может быть использовано для включения какой либо нагрузки в определенный промежуток времени. Для задания моментов включения и/или выключения реле используются записи в формате CRON, данный формат задания моментов времени выбран из-за своей универсальности и лаконичности записи.

Реле времени, режим Astro
Для случая включения освещения в темное время суток предусмотрен данный режим работы. Работа реле будет привязана к астрономическим часам, к моментам восхода и захода солнца. В момент восхода солнца реле будет отключаться, а в момент захода включаться или наоборот, если включить опцию инверсии режима. Необходимо будет задать географические координаты вашего местоположения и времени поправки в минутах относительно моментов восхода и заката. Точное время срабатывания реле будет рассчитываться: время восхода +(плюс) время поправки и время заката -(минус) время поправки(смещения). Так же можно задать и значения включения и/или выключения для обычного режима "реле времени". Тогда результирующее состояние реле будет результатом двух условий по логической операции "И", т.е. реле времени будет в состоянии включено по астрономическому времени И в заданные моменты времени.

Термостат
Термостат по алгоритму температурного гистерезиса c двумя температурными границами (нормальной и высокой). Нормальная граница задает температуру, которую нужно достигнуть включив нагрузку и выключить, достигнув температуры +(плюс) температуры гистерезиса. Верхний диапазон, рассчитан для случая когда нужно снова включать нагрузку, когда достигнута верхняя граница температуры и выключить, когда температура снизилась на величину высокого гистерезиса.

Термостат (PID-контроллер)
Данный режим работает по алгоритму PID контроллера (proportional–integral–derivative controller). Данный алгоритм обеспечивает более точное поддержание температуры в отличии от алгоритма температурного гистерезиса.

Изображение

На картинке можно наблюдать эффект на различных значениях параметров PID алгоритма. По дефолту заданы следующие значения: Kp=2.0 Ki=5.0 Kd=1.0, длительность одного цикла выбрана 960 секунд (16 минут), ввиду большой инерционности систем отопления (значения настраивается). Параметры можно подбирать экспериментальным путем. Длительность рабочего цикла (включенного состояния реле) рассчитывается алгоритмом. В настройки вынесены минимальное время рабочего цикла, т.к. нет смысла включать двигатель отопления или газовый котел на слишком короткий интервал времени и максимальное время, выше которого реле будет постоянно включенным, опять же нет смысла отключать систему отопления на слишком короткое время.

В обоих режимах термостата можно задавать моменты времени и устанавливать необходимые целевые температуры, так-же в формате CRON.

Цифровой сенсор
В данном режиме реле будет включать или выключать нагрузку в зависимости от состояния цифрового датчика, который подключается через устройство по шине 1-wire на основе микросхемы DS2413.

Сенсор напряжения
Состояние реле включается или выключается в зависимости от уровня напряжения на входе датчика-вольтметра.

Повторить состояние реле
Если необходимо просто скопировать состояние какого-либо реле или включить или выключить нагрузку на заданный интервал времени в зависимости от состояния другого реле в системе.

полная версия статьи

Re: мое видение простого контроллера в системе умный дом

Добавлено: 24 июл 2019, 16:36
x13dev
Хоть Вы и описываете конкретное устройство, но можно я по самой концепции потопчусь.

Основной упор делается на автономном устройстве и опционально связь с центром(MQTT/UDP). На самом устройстве имеется фиксированный функционал с возможностью конфигурации.
К плюсам можно отнести:
- для настройки достаточно современного телефона
- при падении инфраструктуры/сервера базовый функционал останется
- простая настройка
Минусы:
- когда число устройств перевалит за десяток начнётся путаница.
Нужно два имени физическое расположение - устройство/вывод и логическое - местоположение/функция
Нужна возможность сохранения/восстановления настроек, желательно автоматическое сохранение версий. Если увлёкся и напортачил, то вернутся на полчаса назад, а не к версии недельной давности.
- запихивание конкретных функций в устройство приведёт с одной стороны к распухание прошивки в попытке объять необъятное и с другой переносу логики на сервере(программе с другим интерфейсом и возможно
отличающейся базовой идеей), а как следствие и потере двух перечисленных плюсов.
- вслед за повышением сложности решаемых задач уйдёт и последний плюс(как пример из обсуждения МегаДевайса pt=8&scl=9&i2c_addr=10&ptr=00&write=FFFFFFFFFF)

Как решение мне видится этакий конфигуратор (десктопное приложение или сервис с WEB-интерфейсом) раз от сервера всё равно не избавится. Его задачи: поиск устройств, хранение версий конфигураций и интерфейс для пользователя.
Со второй проблемой можно справиться, если устройство может на встроенной виртуальной машине исполнять байткод. У Конфигуратора есть расширяемая библиотека функций(привет ПИД контроллер) и он может это скомпилировать в байткод и залить на устройство. В каком виде используются эти функции(IFTTT, FBD или программа на высокоуровневом языке программирования) без разницы, можно даже все 3 сделать.

В таком виде можно даже попытаться реализовать единообразную среду исполнения на сервере и устройствах. Отладил алгоритм на сервере и критичную часть можно перетащить на устройство.

Re: мое видение простого контроллера в системе умный дом

Добавлено: 24 июл 2019, 18:29
sashad
даже не поспорить! все правильно пишите ... но как я уточнял в описании - "простые случаи автоматизации"!!!
я сам начинал с openhab, но мне не понравилась сложность решения простых задач!
теперь я "выбросил" свой сервер openhab ... в котельной стоит маленькая коробочка и делает все что необходимо! и есть потенциал развития ...

некоторые замечания:
- настройки функционала теперь сохраняются при обновлении, к этому пришел сразу, как только поставил на "боевое дежурство" железку :)
файлы настройки устройств можно, скачать и сохранить! сделаю кнопку ...
- местоположение/функция - согласен.
- сложный функционал реализовывать не собираюсь!
- собираюсь добавить поддержку ds2423-счетчики и ds2450-вольтметр и может быть iButton, чтобы охватить самые необходимые и простые задачи.

спасибо за конструктив!

Re: мое видение простого контроллера в системе умный дом

Добавлено: 24 июл 2019, 22:29
d.v.ermakov
По поводу ПИД-контроллера. Хорошая, конечно, гифка из Википедии. А вот реальные алгоритмы обычно работают не так красиво. Практика с измерениями есть?

Re: мое видение простого контроллера в системе умный дом

Добавлено: 25 июл 2019, 09:38
sashad
пока нет, отопительный сезон начнется, поделюсь опытом ... у меня висел на стенке специализированный ПИД контроллер,
в принципе результаты были хорошие, держал очень точно температуру десятые доли градуса, щелкал только своей релюхой и батарейки приходилось менять, причем со временем все чаще и чаще, не знаю почему ...
дак вот я его снял, повесил красивую рамку с датчиком температуры и светодиодами (подсветка включается при работе котла) :)

Re: мое видение простого контроллера в системе умный дом

Добавлено: 25 июл 2019, 15:03
x13dev
sashad писал(а):
24 июл 2019, 18:29
но как я уточнял в описании - "простые случаи автоматизации"!!!
А в чём тогда "Фишка"? Поставьте рядом рядом Siemens Logo или любой IndustrialPLC с вторичного рынка, с другой стороны Arduino. Первые уделают по надёжности и узнаваемости бренда, вторые по гибкости. И это всё при сравнимой цене.
d.v.ermakov писал(а):
24 июл 2019, 22:29
По поводу ПИД-контроллера. Хорошая, конечно, гифка из Википедии. А вот реальные алгоритмы обычно работают не так красиво. Практика с измерениями есть?
Использую ПИД в управлении отоплением уже 2 года. Раз в неделю, в течении 2-3 месяцев, играешься с коэффициентами - результат чуть лучше, чем механические клапана.

Re: мое видение простого контроллера в системе умный дом

Добавлено: 25 июл 2019, 15:57
d.v.ermakov
x13dev писал(а):
25 июл 2019, 15:03
Использую ПИД в управлении отоплением ...
Я, честно говоря, не про отопление. Для него, ИМХО, и П-регулирования достаточно.
А вот при достаточно точном регулировании температуры потока воды или воздуха всё гораздо интереснее.
С домашней вентустановкой некоторое время экспериментировал, приемлемых результатов добиться не удалось. Промышленные регуляторы работают гораздо точнее, чем алгоритмы из книжек. Или я чего-то не понимаю (что скорее всего).
Вот, кстати, самое удачное из встреченных мной объяснений ПИД-регулирования: https://www.youtube.com/watch?v=VVOi2dbtxC0
Циглер-Николс на 22:17 начинается.
Вот ещё про методы: http://pages.mtu.edu/~tbco/cm416/tuning_methods.pdf
Вручную выставлять коэффициенты - извините, совсем не вариант. Да и не работает это.

Re: мое видение простого контроллера в системе умный дом

Добавлено: 25 июл 2019, 16:20
sashad
ну да, получается фишки нет! и вообще, все придумано уже до нас! :)

поглил аппараты Сименс - круто! мне не пришло в голову искать промышленные контроллеры на рынке Б/У!

"выше надежность" - может быть ... но и я старался :) ... в платформу esp8266, esp32, Arduino и т.п. я поверил, работать на профессиональном уровне можно! практически все библиотеки, которые я использовал приходилось править, но ничего, все решаемо оказалось. пока uptime больше недели не получается получить, что-нибудь да поправлю в функционале ... вот и сейчас, добавил возможность задать температуру для термостата с mqtt-панели, а не только из приложения, чтобы возвращаясь из теплых стран, заранее включить комфортную температуру :)

Re: мое видение простого контроллера в системе умный дом

Добавлено: 25 июл 2019, 16:35
sashad
я наблюдал, как ПИД контроллер адаптируется к резкому изменению температуры за бортом, в принципе приемлемо, но в голову пришла мысль: если тепло-потери дома стабильны, то достаточно запомнить параметры ПИД контроллера при разных температурах снаружи (в стабильном состоянии системы) и устанавливать их сразу при изменении внешней температуры, таким образом можно еще улучшить процесс стабилизации. Но не стал заморачиваться ...

Re: мое видение простого контроллера в системе умный дом

Добавлено: 01 ноя 2019, 17:57
sashad
на основе информации с данного портала сделал модуль-расширение для своего контроллера:
1-Wire реле/сенсор (2 канала) описание тут: https://home.1vp.ru/ru/1-wire-relay-sensor/

сам контроллер получил новые функции:
1.поддержка iButton
2.Новый режим PID контроллера

Re: мое видение простого контроллера в системе умный дом

Добавлено: 15 ноя 2019, 13:35
pr200sd
x13dev писал(а):
24 июл 2019, 16:36
Хоть Вы и описываете конкретное устройство, но можно я по самой концепции потопчусь.

Основной упор делается на автономном устройстве и опционально связь с центром(MQTT/UDP). На самом устройстве имеется фиксированный функционал с возможностью конфигурации.
К плюсам можно отнести:
- для настройки достаточно современного телефона
- при падении инфраструктуры/сервера базовый функционал останется
- простая настройка
Используя MajorDoMo с 2011 года, тоже пришел к такому выводу, если завязать все на один сервер потом при неполадках все "лежит" до восстановления. Уже тогда мне больше были по душе устройства которые имеют свою логику, и отдают данные на сервер для возможности контроля/управления, но при этом если сервера нет, работают самостоятельно.
А для быстрого доступа с телефона использую браузер на телефоне, а в последнее время андроид приложение Virtuino, интерфейс ModbusTCP, основные контроллы для управления легко настроить на самом телефоне. Версия с поддержкой mqtt позволяет использовать управления без привязки к IP не заботясь о том серый он или белый.
Примеры интеграции по такому варианту с ПР200 имеющий собственную логику:

ПР200 и Virtuino. Быстрый старт.
ПР200 и Virtuino mqtt. Быстрый старт.
Интеграция с MajorDoMo через Modbus TCP

Re: мое видение простого контроллера в системе умный дом

Добавлено: 16 ноя 2019, 14:52
sashad
да, полностью согласен! я сам начинал с openhab, сразу понял, что что-то не так с таким подходом, т.к. с самого начала я не планировал большую и сложную систему.
соглашусь с тем, что объективно существует потребность в программировании более сложной логики работы системы, поэтому есть идея:
взять проект micropython на esp32, увидел что есть поддержка протокола websocket. Тогда можно взять nodemcu esp32, подключиться к моему контроллеру
по протоколу websocket и реализовывать алгоритмы практически любой сложности на языке python. Как только опробую отпишусь.

Re: мое видение простого контроллера в системе умный дом

Добавлено: 16 ноя 2019, 16:42
sashad
забыл, написать что нового:
1. радует uptime контроллера (на сегодня 27 дней с последнего обновления)
2. ввел в алгоритм работы PID-контроллера следующее правило: если измеряемая температура меньше целевой больше чем заданная разность (например 1 градус), сразу подключается полная мощность, PID алгоритм будет работать, если измеряемая температура входит заданный диапазон от целевой.
3. Реализован режим управления мощностью с несколькими реле. PWR-режим позволяет подключать мощность состоящую из нескольких нагрузок (например, нагревательные тэны). Процент подключаемой минимальной мощности и шагом зависят от количества подключенных реле для данного режима. Например, два реле, позволяют реализовать шаг в 33% мощности и 4 градации (0%, 33%, 66%, 100%). Три реле - 14.3% и 8 градаций и так далее. Количество градаций это 2 в степени количества реле. Данный режим подразумевает подключение нагрузок разной мощности. Возможен так-же вариант подключение нагрузок одинаковой мощности (Linear mode).
4. сделал редизайн платы контроллера, вынес индикатор с кнопками на отдельную плату по i2c, освободил 2 входа для датчиков/счетчиков на главном контроллере.

Re: мое видение простого контроллера в системе умный дом

Добавлено: 21 ноя 2019, 11:29
sashad
Первые опыты с micropython

результаты порадовали, быстро и просто ... понятно, что приложение слишком простое, но все-же ...
выложены исходники на Python примера работы с шиной 1-wire и устройством на базе ds2413.

Изображение

Re: мое видение простого контроллера в системе умный дом

Добавлено: 29 фев 2020, 08:26
sashad
Новости проекта:
- Прошивка Простого Умного дома для платы esp8266 devkit. Можно не только попробовать возможности прошивки, но и реализовать нетривиальную систему управления-контроля, работает сетевое взаимодействие между контроллерами.
- Прошивка для платы MP3509 от мастеркит

обе прошивки будут поддерживаться и будут доступны их автообновления.