Суббота, 21.12.2024, 20:56
| RSS
Поиск
Главная |
Защита, контроль, управление
Форма входа

Меню

Авторские проекты

Статьи

Raspberry Pi

Полезная информация

Обратная связь

Ссылки

Форум

Чат

Канал YouTube

Группа в Facebook


Календарь
«  Январь 2019  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

Наш опрос

Ссылки


Яндекс.Метрика





.
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Универсальная прошивка ESP_Easy для ESP8266. Часть вторая

Универсальная прошивка ESP_Easy для ESP8266. Часть вторая

Наш канал в YouTube


Александр Вайдуров продолжает знакомить нас с использованием универсальной прошивки ESP_Easy для модулей ESP8266.

В предыдущей статье я рассказывал о том, как на основе ESP8266 и прошивки ESP_Easy, можно создать терморегулятор с удалённым контролем по MQTT. Продолжу рассказ о развитии этого проекта. Добавим местное и удаленное управление значением уставки. Для этого нам понадобится добавить несколько плагинов и написать правила. Итак, начнем.

Для местного управления нам, конечно, понадобится кнопка, хотя бы одна. Поэтому в меню Devices в следующей свободной строке нажимаем кнопку Edit и выбираем плагин устройства Switch input - Switch (переключатель). Этот плагин позволяет довольно тонко настроить реакцию программы устройства на нажатие кнопки.

 

esp_easy

Рис. 1

 

Как обычно даем уникальное имя устройству, и активируем плагин, установив крыж Enabled.  Установкой крыжа Internal PullUp можно подключить внутренний подтягивающий резистор порта ESP8266, а крыжем Inversed Logic можно выбирать активный уровень переключателя. Я для управления выбрал кнопку на плате подлюченную к GPIO16. На плате установлен внешний подтягивающий резистор, поэтому внутреннюю подтяжку не включаем и активным уровнем у нас как обычно будет ноль. В меню выбора Switch Type выбираем тип выключатель - «Switch», в меню выбора Switch Button Type устанавливаем обычный выключатель «Normal Switch». Как видите из имеющихся вариантов в меню, кроме простого переключателя, вход можно сделать  и с не зависимой фиксацией, меняющий состояние либо при нажатии на кнопку, либо при отпускании. Состояние выключателя можно отправлять контроллеру протокола связи, но мы этим пока не будем пользоваться. Так же в последних версиях увеличился функционал плагина в части обработки двойного нажатия на кнопку, но и это нам пока не понадобится, поэтому все остальные настройки оставим в состоянии, по умолчанию. Для сохранения настроек жмем Submit.

 

esp_easy

Рис. 2

 

В списке устройств имеем четыре записи. Скорее всего последние две на этой картинке, поменяны местами, в отличие от того что вы видите у себя на странице. Номер задачи (строки) часто используется в правилах, но это не повлияет на их написание в нашем случае. Поэтому оставим все как есть.

Дальнейшее описание я веду исходя из того что читатель немного знаком с MQTT протоколом и знает как и зачем формируются MQTT публикации и подписки.

Итак, далее нам предстоит, подписать наше устройство на MQTT топик удаленного устройства управления, ведь мы хотим удаленно изменять уставку терморегулятора. Для этого в перечне поддерживаемых устройств в прошивке ESP_Easy есть плагин виртуального устройства универсальный MQTT импорт «Generic - MQTT Import»

 

esp_easy

Рис. 3

 

Жмем Edit в пятой строке, и выбираем это устройство.

 

esp_easy

Рис. 4

 

Снова даем уникальное имя устройству, и активируем плагин, установив крыж Enabled.

Всего  этот плагин позволяет организовать четыре подписки и сохранить полученные числовые значения в соответствующих переменных. Первый (и пока единственный) топик на который мы подпишем устройство, будет «/%sysname%/FP/Set1». Забегая вперед скажу, точно под таким же именем наше устройство будет публиковать сообщение об установленном значении уставки (когда мы его изменяем местно). Таким образом, подписавшись и публикуя один и тот же MQTT топик, мы имеем одно общее значение уставки, которое может быть изменено с обеих сторон. Проконтролировано центральным устройством управления и принято терморегулятором как текущее значение уставки. Значение полученное в этом топике, будет сохраняться в первой переменной [RM#Set1]. Давайте для уставки будем использовать только целые значения температуры. Тогда разрядность переменной Set1 установим в «0», т.е. целое.

Все, подписка оформлена. Сохраняем настройки нажатием Submit.Работу подписки уже можно проверить. Для этого откроем список устройств  В управляющем контроллере пропишем публикацию топика «ESP_Easy_Test/FP/Set1». И передаваемые с контроллера значения будем видеть в значении переменной «Set1» виртуального устройства с именем «RM».

 

esp_easy

Рис. 5

 

Прежде чем подключать еще одно виртуальное устройство, давайте рассмотрим другие возможности прошивки ESP_Easy. Для этого давайте откроем страничку под закладкой «Tools». За ней прячется большой список различных возможностей программы.

 

esp8266

Рис. 6

 

Здесь можно программно запустить сброс устройства, посмотреть журнал последних событий, расширенную информацию о системе, статистику, системные переменные и т.д.,и т.п. Произвести сканирование и переподключение устройства к другой WiFi сети. Просканировать устройства подключенные к интерфейсу I2C. (К стати, очень полезная функция для определения I2C адресов устройств). Сохранить или загрузить файл конфигурации и обновить версию прошивки, просто загрузив новый бинарный файл через интерфейс браузера. Подключение к компьютеру по последовательному порту, для этого не понадобится. Есть на этой странице кнопка перехода к более продвинутым настройкам. Она-то нам и понадобится. Находим и нажимаем кнопочку с надписью «Advanced»

 

esp_easy

Рис. 7

 

В скриншот не вошли все имеющиеся настройки, но я оставил в картинке все нам необходимые.

Поставим крыжи против пунктов меню «Rules», «Old Engine», первый включает возможность работать с правилами, второй видимо, предполагает использовать старый синтаксис их написания. Новый, видимо еще не опубликован, посему будем юзать старый. Далее настроим некоторые полезные опции MQTT протокола. Крыж напротив «MQTT Retain Msg» настроит устройство, в сообщений брокеру устанавливать признаки так, что бы брокер запоминал последнее полученное значение. Это позволит всем подписчикам получать последнее значение сразу при подключении к брокеру, не дожидаясь его обновления. (Полезно когда мы опрашиваем датчики с периодичности в несколько минут). Крыж напротив «MQTT use unit name as ClientId» обозначает, что устройство будет использовать свое имя «ESP_Easy_Test» в топиках в качестве идентификатора клиента, для MQTT брокера.

Для того что бы в системе устройства можно было использовать значения текущей даты и времени, давайте загрузим его с какого-нибудь NTP сервера. Для этого ставим крыж напротив «Use NTP», а в поле «NTP Hostname» вводим адрес доступа к NTP серверу. Если устройству обеспечен доступ до указанного сервера точного времени, то программа загрузит в систему значения даты и времени и произведет еще много разных полезных вычислений.

Далее идет много пунктов настроек, для перевода времени с зимнего на летнее и наоборот. Их не трогаем. В поле «Timezone Offset (UTC +)» вводим значение сдвига местного времени от времени по «Гринвичу» в минутах. Если захотите пользоваться временем восхода и захода солнца (например, для управления реле уличного освещения), можете ввести свои координаты широту и долготу. Остальные настройки пока оставим по умолчанию.  Жмем Submit для сохранения. На дисплее через некоторое время должно установиться время с NTP сервера, сдвинутое на указанное количество минут.

Вернемся к загрузке плагина еще одного виртуального устройства. В редактировании  шестой строки устройств, выберем «Generic - Dummy Device». Это фиктивное устройство для предоставления дополнительных возможностей движку правил. Фиктивное устройство содержит четыре переменных, которые можно использовать для хранения пользовательских данных. Нам это фиктивное устройство понадобится для реализации алгоритма, однокнопочного местного управления значением уставки и для публикации установленного значения в MQTT топике. Дадим название этому плагину «FP» и включим плагин, установив крыж Enabled. В поле «Simulate Data Type» оставим «SENSOR_TUPE_SINGLE» (большая точность нам не нужна). Включим передачу данных MQTT брокеру, поставив крыж в поле «Send to Controller». Интервал передачи данных, я предлагаю поставить 60 сек. Такой периодичности вполне хватит для получения актуальных сведений о значении температуры. А об вновь подключаемых подписчиках, мы побеспокоились, включив в расширенных настройках признак «Retain Msg».  Для сохранения значения уставки, создадим переменную «Set1». А для определения направления счета приращения значения уставки создадим переменную «Flag». Она тоже будет передаваться брокеру, хотя нам это особо не нужно, но не делать же нам для этого еще одно фиктивное устройство переменных, которые не будут передаваться контроллеру связи. Хотя в более сложных алгоритмах это возможно будет не лишним. Обе переменные выберем целыми без знака. И сохраняем настройки, как обычно нажатием Submit.

 

esp_easy

Рис. 8

 

Все готово для написания правил. Правила – это простой но довольно эффективный инструмент, для расширения функционала устройства создаваемого на прошивке ESP_Easy. Он позволяет выполнять различные действия при выполнении определенных условий, как то достижение значений одного из датчиков требуемого уровня, наступления даты и времени, срабатывания таймера или возникновении системного события (например перезагрузки. Подробно о синтаксисе, и возможности правил читаем вот тут.

Наша задача написать правило в котором, при нажатии на кнопку управления и удержании ее, например более 2 сек., начинается изменение уставки, например в большую сторону, для смены направления приращения уставки, кратковременно отпускаем и снова нажимаем кнопку, идет процесс уменьшения уставки. После отпускания кнопки сохраняется значение уставки в памяти.

В приложенном к статье   архиве сохранены два текстовых файла  правил.  Файл rules_comment.txt,  это текст правил с подробными комментариями и файл правил rules.txt, без комментариев. Так как места под правила в прошивке отводится совсем немного - 1 кбайт,  то текст правил в прошивку лучше скопировать  из файла без комментариев (т.е. rules.txt). 

Сохраняем правила в разделе «Rules», нажатием Submit.

И в завершение поправим вторую строку, выводимую на дисплей. Нам теперь нужно отображать уставку, ту которая устанавливается вручную или удаленно. А это значение хранится у нас в переменной [FP#Set1]. Вот ее мы и впишем вместо бывшего значения [LC#getLevel].

 

esp_easy

Рис. 9

 

Все, перегружаем устройство и пробуем. Через две секунды после удержания кнопки, у нас начинает изменяться значение уставки. По правилу оно должно меняться каждую секунду по факту похоже в два раза медленнее. Но тем не менее местная установка возможна, а значит функциональность устройства не теряется даже если нет брокера или нет центрального устройства, оно все равно показывает и регулирует температуру, и позволяет изменить значение уставки. Также уставка изменяется и контролируется, с удаленного устройства управления. Через MQTT топик«ESP_Easy_Test/FP/Set1».

Поставленная задача решена. Далее желающие могут развивать устройство самостоятельно. Я, например, планирую навесить еще фоторезистор, что бы определять, открыта ли крышка овощехранилища. И если открыта более 1 минуты включать пищалку.

 

 




Категория: | Просмотров: 7735 | Добавил: Admin | Теги: | Рейтинг: 4.0/5 |
Всего комментариев: 1


1 sartam  
Здравствуйте. Подскажите, а можно ли ограничить диапазон изменения уставки?





T2M © 2024
Сайт управляется системой uCoz