Универсальный многоканальный недельный и/или суточный программируемый таймер
- Войдите на сайт для отправки комментариев
Сб, 03/04/2021 - 12:31
Протестирован на ESP8266 в исполнении ESP-01 и NodeMCU.
Всё управление - через веб-интерфейс.
Точное время получает из Интернета (NTP), после первой синхронизации временное пропадание WiFi/Internet на работу не влияет.
Возможности устройства:
Произвольное (1-12) количество каналов управления (вкл/выкл), настраивается в веб-интерфейсе.
Для каждого канала настраивается "включен/отключен", GPIO, прямое/инвертированное управление.
Произвольное (1-100) количество заданий(таймеров), настраивается в веб-интерфейсе.
Для каждого задания настраивается канал, действие (вкл/выкл/задание отключено), условие по времени суток и дню, или группе дней недели.
Точность установки условия по времени - секунда.
Управление каналами возможно по заданиям, вручную до следующего задания, только вручную;
- вручную до следующего задания и только вручную - после пропадания питания восстанавливается последнее состояние канала;
- по заданиям - после пропадания питания устанавливается состояние, в котором канал должен находиться согласно настройкам заданий для текущего дня недели и времени суток;
Отслеживание выключений и пропаданий питания устройства.
Ведение журналов событий за указанное количество дней.
Подсчет и вывод общего времени активного состояния по каналам управления за период дат.
Возможность сохранения / восстановления всех настроек в файлы на ESP8266, загрузка / выгрузка файлов через веб-интерфейс.
Выбор языка (английский / русский) в веб-интерфейсе.
Логин и пароль авторизации (admin и admin по умолчанию) настраиваются в веб-интерфейсе (от https я отказался по причине медленной отрисовки веб-интерфейса и отсутствия особой необходимости).
Индикация количества заданий для канала.
Индикация текущего активного и следующего заданий для канала.
Индикация дублирующих и конфликтующих заданий.
Индикация дублирующих и конфликтующих каналов.
Настройка сервера синхронизации времени, часового пояса и автоперехода на летнее-зимнее время через веб-интерфейс.
Выбор точки доступа WiFi для подключения и режима получения IP адресов (DHCP/фиксированные) через веб-интерфейс.
При загрузке в рабочем режиме, в случае невозможности подключиться к WiFi в течение тридцати секунд, устройство перезагружается в режим точки доступа.
В режиме точки доступа, в случае отсутствия подключений к http://192.168.4.1, через 10 минут устройство перезагружается в рабочий режим.
Загрузка прошивки через веб-интерфейс.
Перезагрузка в режим точки доступа (SSID: VT_SETUP , PASS: 319319319 , URL: http://192.168.4.1) через веб-интерфейс.
Перезагрузка через веб-интерфейс.
При наличии Multicast DNS (mDNS) доступен как хост vt.local.
Актуальная версия скетча на https://github.com/Araris/VersatileTimer
Схемы подключения более чем просты, для ESP-01 (один канал) :
(да, там Омроновский пятивольтовый SSR модуль, и да, он работает на трёх вольтах)
Для NodeMCU (несколько каналов) :
Веб-интерфейс :
вторая схема не вполне понятна - не ясно, соединяются ли пересекающиеся линии питания под правым углом НодеМКУ. По смыслу вроде там должно быть соединение, но его не видно. Я бы чуть перерисовал это место. сделал тут какой-то изгиб линий. чтобы соединение было более очевидным.
Спасибо, подправил.
Отличный таймер, но у меня периодически пропускает действия. только после перезагрузки действие становится активно.
и почему-то esp-01 отказывается работать с твердотельным реле . со светодиодом нормально отрабатывает, а вот реле(OMRON 1565E G3MB-202P) или с оптопарой ( 817) не работает. не запускается совсем, если же подключить после загрузки то все работает.
Скетч у Вас актуальный, (13-го сентября 11:51) я полагаю.
Отличный таймер, но у меня периодически пропускает действия. только после перезагрузки действие становится активно.
Спасибо на добром слове, у меня пропуски заданий однажды начались после активных игр с настройками, зачистил флеш - заработало как надо, причину так и не нашел. Поставлю-ка тестовую ЕСП с десятком-другим заданий, понаблюдаю.
Как раз заканчиваю журналирование (логи) работы, вот одно другому и поможет. Как до ума логи доведу - выложу на ГитХаб и сюда отпишусь.
и почему-то esp-01 отказывается работать с твердотельным реле . со светодиодом нормально отрабатывает, а вот реле(OMRON 1565E G3MB-202P) или с оптопарой ( 817) не работает. не запускается совсем, если же подключить после загрузки то все работает.
G3MB-202P по паспорту пятивольтовое, у меня от трёх работает, может повезло просто.
PC817 я, честно говоря, и не пробовал от трёх Вольт запускать.
Обновил шапку темы, на Github обновил скетч и добавил картинки с видами интерфейса.
Изменён алгоритм управления каналами на более надёжный и универсальный.
Режимы "по заданиям/вручную" теперь устанавливаются индивидуально для каждого канала.
Добавлено журналирование и сброс на "заводские установки".
Теперь если включить/ выключить в ручную, то по заданиям этот канал больше работать не будет (пока не вкл. "по задания"), соответственно если будет активное задание будет выключить, то и выход выключится. Вероятно более надёжно, но менее универсально( ИМХО).
А можно добавить ручную установку IP адреса и NTP сервера в веб-интерфейсе?
Странно, но с оптопарой работает только если последовательно подключить красный светодиод (с резистором не стартует есп). SSR тоже не хочет работать. Ну и при включении питания или перезагрузки импульс на выходе.
Теперь если включить/ выключить в ручную, то по заданиям этот канал больше работать не будет (пока не вкл. "по задания"), соответственно если будет активное задание выключить, то и выход выключится.
Если переключить вручную, то никакие задания не учитываются до нажатия кнопки "по заданиям".
А можно добавить ручную установку IP адреса и NTP сервера в веб-интерфейсе?
Отчего бы и нет, подумаю над этим.
Теперь если включить/ выключить в ручную, то по заданиям этот канал больше работать не будет (пока не вкл. "по задания"), соответственно если будет активное задание выключить, то и выход выключится.
Если переключить вручную, то никакие задания не учитываются до нажатия кнопки "по заданиям".
очень жаль.
Над этим тоже подумаю ))) Может быть стоит добавить что-то типа кнопки "до следующего задания", так ещё универсальнее будет.
Странно, но с оптопарой работает только если последовательно подключить красный светодиод (с резистором не стартует есп). SSR тоже не хочет работать. Ну и при включении питания или перезагрузки импульс на выходе.
SSR трёхвольтовый ?
Импульс на выходе, там вроде что-то связано с инициализацией GPIO при старте, сразу не припомню.
P.S. Не это ли ? https://esp8266.ru/forum/threads/sostojanie-gpio-pri-starte.3551/
Обновил шапку темы, на Github скетч и картинки с видами интерфейса.
Добавлен режим "вручную до следующего задания".
Добавлено сохранение / восстановление всех настроек в файлы на ESP8266, удаление / переименование / загрузка / выгрузка их через веб-интерфейс.
Интересно по цене комплектации на сколько тянет?
У нас немного по сложнее комбайн вышел. Помимо таймера еще куча функционала . А из управления розетками еще едть ДМХ512 управление светом и DALI управление с конфигурированием сети через веб.
Принтскрин настройки таймера
нормально отработал с 16 по 25, с 26 уже не захотел.
Под какой версией ядра компилировалось?
Под какой версией ядра компилировалось?
Этого мы уже не узнаем , скорее всего 3.0.х ...
Под какой версией ядра компилировалось?
Этого мы уже не узнаем , скорее всего 3.0.х ...
а что там узнавать открыл менеджер управления платами да посмотрел, под 2.7.4 не компилируется...
Под какой версией ядра компилировалось?
Этого мы уже не узнаем , скорее всего 3.0.х ...
а что там узнавать открыл менеджер управления платами да посмотрел, под 2.7.4 не компилируется...
3 дня назад пришлось установить 2.7.4.
Компилируется?
Компилируется?
да какая разница, если с 2.7.4 и не скомпилируется, то было точно 3.0.0 или выше. ПК на работе, таймер пока дома. печалит то, что неизвестно, отработает он или нет. хорошо если он в выключенном состоянии перестанет работать.
сам же и отвечу, под ядром 3.0.2 - компилируется
Большой проект! Есть некоторые непонятки, надо поразбираться
Не спешите пока, я выложу свежие доделки-переделки на неделе и сюда отпишусь.
Не спешите пока, я выложу свежие доделки-переделки на неделе и сюда отпишусь.
Хорошо!
Обновил шапку темы, на Github скетч и картинки с видами интерфейса.
Расширены настройки синхронизации времени.
Добавлены настройки подключения к WiFi и режим точки доступа.
Заинтересовал проект.
Загрузил в ESP-12F, вроде работает, выводами пока не игрался.
IDE 1.8.18, board 3.0.2
Компилируется и загружается нормально.
версия 21.11.28
Ошибка NTP синхронизации времени
Пробовал другие сервера - то же самое.
Повесил с/диоды на GPIO 4,5,12,13,14 - управляются.
А синхронизация времени так и не происходит ?
Странно, с библиотекой NTPClient проблем не было. Загрузите
https://github.com/arduino-libraries/NTPClient/blob/master/examples/Basic/Basic.ino
проверьте, работает ли синхронизация как таковая.
Еще добавлю - время в вебке правильное
Время: 0:12:19, Пятница Ошибка NTP синхронизации времени Время работы: 8с Прошивка загружена: Dec 23 2021
То есть время откуда-то берется?
А в журнале строки Ошибка синхронизации времени есть ?
Ага, тут всё хорошо
А тут всё странно
У меня рестарт всегда выглядит как
поэтому пока даже не представляю себе, как повторить Вашу ситуацию, чтобы искать причину.
ОК, буду думать.
Ну, даже не знаю, как помочь, не могу у себя воспроизвести ситуацию, когда после рестарта идут подряд успешная синхронизация и ошибка.
У меня достаточно давно работают два устройства (на ESP-01 и NodeMCU), и на них время от времени наблюдаю что-то типа
Интервалы обычно от секунды до десяти секунд, но вот именно после рестарта - всегда так, как в предыдущем посте показывал.
Может оно и не страшно.
На даче Интернета пока нет. Можно временно подключаться, например, через телефон.
После синхронизации времени таймер может работать без Интернета?
Есть бесхозный роутер TP-Link WR841nd, на нем сделаю пока дачную сеть, когда появится Интернет - подключу ее туда.
Есть еще модуль точных часов для Ардуино на DS3231 (I2C) - может его к ESP-12 прикрутить?
После синхронизации времени таймер может работать без Интернета?
Может, но точность отсчёта времени будет неподобающая (там привязка к millis()).
Есть еще модуль точных часов для Ардуино на DS3231 (I2C) - может его к ESP-12 прикрутить?
Лучшее решение в данном случае.
Все это конечно хорошо, только готовое подобное устройство у китайцев стоит ~ 500р
https://a.aliexpress.com/_AKSK7c
Это не пойдет.
Мне нужно то, что я смогу сконфигурировать сам, под свои задачи.
Одна из них - управление поливом 3-х грядок в теплице.
Дома лежат 3 ESP-12F и DS3231 без дела.
Вопрос к автору - в случае использования DS3231 потребуется большая переделка скетча?
Вопрос к автору - в случае использования DS3231 потребуется большая переделка скетча?
Думаю, достаточно большая (хотя убирать ведь всегда проще, чем добавлять), всё от уровня програмирующего зависит.
Можно выбросить из скетча все упоминания timeClient и переменных ntp*,
разобраться с ntpDaylight*,
timeSyncOK, timeSyncNTPOK, previoustimeSyncNTPOK и timeSyncInitially тоже будут не нужны,
переписать механизм получения даты\времени в curEpochTime,
разобраться с установкой\коррекцией даты\времени в DS3231,
это так, навскидку.
А возможно из esp и 3231 сделать точку доступа с сервером ntp ?
Гугл говорит, что возможно. https://www.instructables.com/ESP8266-Wireless-NTP-Stratum1-Server/
Был у меня случай, когда точное время необходимо, Интернета в месте расположения нет, GSM модуль ставить не хочется.
Обошелся простейшим GPS модулем, ему и SIM карта не нужна, и время всегда точное.
Переделать скетч будет непросто.
А можно добавить условие - нет ntp - брать время с DS3231, есть ntp - работать, как обычно?
Вопрос общий - ответ общий : конечно можно.
Или всегда брать с DS3231, а, получив время от NTP, корректировать DS3231.
То есть сложность переделки не уменьшится, похоже?
Или всегда брать с DS3231, а, получив время от NTP, корректировать DS3231.
Мне кажется, при таком подходе будет проще.
Решил не усложнять. Поскольку Интернет на даче все равно нужен, купил gsm модем, роутер tp-link mr3020 (залил прошивку OpenWrt) и симку с раздачей Интернета. Через vpnki.ru организовал доступ к устройствам дачной wi-fi из любого места.
Так что таймер все время будет подключен к Интернету.
Вопрос - за сутки без Интернета насколько может уйти время?
(секунды, минуты) ?
а можно побороть эффект остановки таймеров пока находишься в вэб конфигураторе?
а можно побороть эффект остановки таймеров пока находишься в вэб конфигураторе?
Если имеется в виду режим точки доступа, то он функционально ограничен, вот начало loop() :
Побороть "эффект остановки таймеров" достаточно сложно, поскольку таймеров в традиционном "ардуинском" понимании там нет.
Есть функция check_previous_tasks(), которая периодически запускаается из loop().
Функция проверяет по списку каналов, нет ли для канала задания, которое должно выполняться в данный день недели, час, минуту и секунду. Если таковое найдено и состояние канала ему не соответствует, то канал переключается (это упрощенное описание).
Такой подход выручает, когда по какой-либо причине (например, запускались в режиме точки доступа, или питание отключалось) мы пропустили время выполнения задания. В этом случае "просроченное" задание будет запущено\остановлено с опозданием.
Привет пытаюсь компелировать и не проходит выдает ошибку
"Secrets.h: No such file or directory" -> translate.google.com -> РЕЗУЛЬТАТ
ну и где брать этот каталог