Сегодня мы разберемся с разделом Output - Clock прошивки ESP Easy и напишем первую простенькую программу - правило (Rules)
Cделаем-ка мы из нашей ESPшки будильник! И вы сможете включать и выключать нагрузку в зависимости от времени, а так же мы напишем программу которая делает то же самое и тем самым откроем большой раздел написание программ (правил) в среде ESP Easy.
Это продолжение серии статей о прошивке ESP Easy все ссылки на статьи в конце страницы. К ESP у нас уже подключены светодиод (светодиоды) и кнопка Светодиоды подключены на GPIO 12 и на GPIO13.
Настраиваем синхронизации времени NTP
При работе с часами нам важно что бы была настроена синхронизация времени с NTP сервером
Мы уже настраивали синхронизацию вот тут: "Прошивка ESP Easy, настройка модуля, раздел Конфигурация (Config)"
Но на всякий случай я повторюсь, если уже это делали и знаете все мотайте дальше.
Идем сюда: разделе "Tools", подраздел "Аdvanced"
Для того чтобы модуль знал время, для этого переходим в NTP Settings (Настройки NTP) , находится в разделе "Tools " подраздела "Аdvanced"
Use NTP (Используйте NTP): Ставим галочку
Про серверы времени их достаточно много, но об этом, возможно будет отдельная статья. Короче чем он ближе к вам тем точнее будет время
Вот основные серверы которыми я пользуюсь
Серверы времени NTP
Location Settings (Настройки местоположения)
Timezone Offset (UTC +) (Смещение часового пояса): в минутах
Вводим коррекцию в минутах смотря какой у вас часовой пояс
Например:
Для пояса +2 нужно ввести 120 (60Х2)
Для пояса -7 нужно ввести -420 (60Х7)
Для Московского времени, +3 необходимо указать 180 (60х3).
Latitude (Широта):
Longitude (Долгота):
Можете не вводить, а вообще можно посмотреть например на Гугл картах
Но для того что бы сработали операторы "sunrise" и "sunset" нужно это будет ввести.
После выставления часового пояса, и нажатия Submit, желательно посетить вкладку Main, и убедиться, что время получено (придется чуть подождать) и оно верно.
Вернемся к нашему Output - Clock (Выход - Часы)
Вкладка "Devices" => Кнопка "Add" и вот так выбираем
И как всегда сначала перевод
Output - Clock (Выход - Часы)
Device (Название)
Enabled (Включено:)
Sensor (Датчик)
GPIO → Clock Event (GPIO → Событие часов)
Всего восемь событий
В принципе тут объяснять нечего все просто
Как всегда вводим название, включаем устройство. Вводим GPIO которое будет включатся или выключатся при наступлении времени (появляться низкий или высокий уровень)
Но нужно отдельно отметить формат записи времени
All,00:00
Пример: All, 10:20 - Устройство включится или выключится (как укажите) каждый день в 10 часов 20 минут
Вместо "All" можно указать день недели
- Mon - Понедельник
- Tue - Вторник
- Wed - Среда
- Thu - Четверг
- Fri - Пятница
- Sat - Суббота
- Sun - Воскресенье
Пример: Sun, 11:30 - Устройство включится или выключится в воскресенье в 11 часов 30 минут
Вместо часов можно указать **
Пример: All, **:30 - Устройство включится или выключится каждые 30 минут
Вот и все, с этими настройками, все видно на скриншоте
Но давайте сделаем то же самое программно в среде ESP Easy.
Rules (Правила)
Вот так буднично мы открываем большой раздел посвящённый написанию программ в прошивке ESP Easy
Да в прошивке можно писать свои собственные программы! Называются они там правила - Rules.
Я об этом писал тут: "Прошивка ESP Easy, настройка модуля, раздел Конфигурация (Config)" и там же было как их включить, но я повторюсь
Как включить Rules (Правила)
Если нету закладки "Rules " то тогда идем вот сюда Tools > Advanced
Подраздел Rules Settings (Настройки правил)
Rules (Правила) Ставим галочку
Old Engine (Старые правила) По умолчанию там стоит галочка, так ее и оставляем
Tolerant last parameter (не учитывать последний параметр)
Примечание. Менее строгая проверка последнего аргумента некоторых команд (например, publish и sendToHttp).
Мы включаем использование правил и указываем, что будем использовать старый движок.
Вот так:
После применения настроек "Submit" Появится дополнительное меню Rules (Правила)
Там мы будем писать свои мини программы или правила.
Идем сюда и нажимаем на закладку "Rules"
Ну начнем писать свою программу, но сначала несколько слов о структуре программ.
Общая структура программ
Каждое правило начинается с: "on do" и заканчивается: "endon"
Выглядит это так:
on <trigger> do
<action>
<action>
<action>
endon
Смысл сего кода такой, если перевести на русский язык
На таком то устройстве сделать
Тут перечисляем, что делать
Конец программы
Или вот так, чтобы было понятнее, таблица.
Порядок следования условий on|endon не имеет значения, грубо говоря они проверяются все одновременно, и если событие наступило — оно обрабатывается.
Про Trigger
Теперь рассмотрим из чего состоит сам "trigger", а состоит он из двух частей разделенных решеткой
<DeviceName> # <ValueName>
<Имя устройства>#<Значение>
Что это такое, а вот что:
Зайдите в раздел "Device" нажмите на редактировать любое ваше устройство и перемотайте страничку ниже, в самый, самый низ, там Вы увидите вот такие значения и это ответ на Ваш вопрос
Данный пример приведен для выключателя, но с любым устройством будет то же самое.
Итак выключатель (Switch input - Switch) назван у нас "Knopka", а возвращает он только одно значение "state" -"1" или "0", нажата или не нажата
Есть устройства которые могут возвращать несколько значений, например датчики DHT11 и DHT22, которые возвращают температуру и влажность
Это мы записываем после решетки вот так:
on Knopka# State do
На русском это будет выглядеть так:
на устройстве "Knopka" возвращающем значение "State" сделать
А вот что сделать мы должны указать дальше и допускается использовать самый главный логический оператор "if ", а можно cсделать по другому и записать все сразу в одной строчке вот так:
on Knopka# State=1 do
На русском это будет выглядеть так:
на устройстве "Knopka" возвращающем значение "State" которое равно "1" сделать
То есть мы одной строчкой проверили нажата ли кнопка
Ну а дальше нужно вписать действие и закрыть программу.
Вот графически откуда все это берется
Но еще о некоторых вещах прежде чем напишем реальную программу.
В своей программе даже можно написать комментарии!
// Так пишется комментарий, начинается он с двух косых черточек.
Делаем будильник или включаем нагрузку по расписанию
Итак перейдем к конкретному примеру сделаем наконец то будильник
В прошивке ESP Easy есть такая команда Clock#Time она обрабатывается каждую минуту и сравнивает системное время с указанным
on Clock#Time=All,12:00 do
GPIO,12,1
endon
Это программа включит устройство на GPIO 12 (подаст единицу) каждый день в 12.00
Объяснение
on Clock#Time=All,12:00 do //Это комментарий
// Clock#Time это часы при достижении указанного времени произойдет событие в теле данного правила
// В данном случае на GPIO 12 будет подан высокий уровень
GPIO,12,1
endon
// Правило завершилось
Можно использовать все те же параметры которые мы указывали в самом начале, дни недели, звездочки, а еще восходы и заходы.
Вот и все теперь Вы можете писать разные программы и обрабатывать самые разные события .
А у нас как всегда. Продолжение следует...
Мы будем подключать новые устройства, на очереди датчики температуры и влажности, различные реле, датчик газа, инфракрасный сенсор, да еще много чего. И кроме того мы будем прокачивать роутер и установим на нем сервер "Умного дома - Domoticz"
Подписывайтесь на наш канал TehnoZet-2, там много интересного! Мы только развиваемся! Понравилась статья, хотите продолжения - ставьте лайк, жмите палец вверх!
Прошивка ESP Easy
- Подключаем кнопку и светодиод и настраиваем их в прошивке ESP Easy
Подключение