• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

Araris

Member
Протестирован на ESP8266 в исполнении ESP-01 и NodeMCU.
Всё управление - через веб-интерфейс.
Точное время получает из Интернета (NTP), после первой синхронизации временное пропадание WiFi/Internet на работу не влияет.

Возможности устройства:

Произвольное (1-20) количество каналов управления (вкл/выкл), настраивается в веб-интерфейсе.
Для каждого канала настраивается "включен/отключен", GPIO, прямое/инвертированное управление.

Произвольное (1-100) количество заданий(таймеров), настраивается в веб-интерфейсе.
Для каждого задания настраивается канал, действие (вкл/выкл/задание отключено), условие по времени суток и дню, или группе дней недели.
Точность установки условия по времени - секунда.

Три режима управления каналами:
- только ручное управление - настройки заданий игнорируются, после пропадания питания восстанавливается последнее состояние каналов;
- по заданиям и вручную - позволяет вручную переключать каналы, но лишь до наступления действия очередного задания, либо пропадания питания. После пропадания питания - см. режим ниже;
- только по заданиям - после пропадания питания устанавливается состояние, в котором каналы должны находиться согласно настройкам заданий для текущего дня недели и времени суток;

Выбор языка (английский / русский) в веб-интерфейсе.

Логин и пароль авторизации (admin и admin по умолчанию) настраиваются в веб-интерфейсе (от https я отказался по причине медленной отрисовки веб-интерфейса и отсутствия особой необходимости).
Индикация количества заданий для канала.
Индикация текущего активного задания для канала.
Индикация дублирующих и конфликтующих заданий.
Индикация дублирующих каналов.
Часовой пояс настраивается в веб-интерфейсе.
Загрузка прошивки через веб-интерфейс.
Перезагрузка через веб-интерфейс.
При наличии Multicast DNS (mDNS) доступен как хост vt.local.

Актуальная версия скетча на GitHub

Схемы подключения более чем просты, для ESP-01 (один канал) :
(да, там Омроновский пятивольтовый SSR модуль, и да, он работает на трёх вольтах)
AVVersatileTimer_ESP-01.jpg
Для NodeMCU (несколько каналов) :
AVVersatileTimer_NodeMCU.jpg
Скетч :
Посмотреть вложение AVVersatileTimer.ino.txt
 

enjoynering

Well-known member
за велосипед с вашим Task пять, но зачем? для таких вещей существует всторенная в Arduino библиотека Ticker - ваш код уменьшится, станет чище и легче для понимания.
 

Binar

New member
Всем здравия.
А как происходит подключение к локальной сети?
 

Araris

Member
Перед запуском Arduino IDE и открытием скетча
в подкаталоге, где находится скетч (AVVersatileTimer.ino)
создайте текстовый файл с именем Secrets.h
и содержимым :

#define AP_SSID "yourSSID"
#define AP_PASS "yourPASSWORD"

yourSSID и yourPASSWORD измените на свои
 

Binar

New member
Простите за нубство...
Не могу установить часовой пояс... Все время на 0-вом.
 

Araris

Member
Простите за баг, пропустил </form> в выдаче веб-странички. Исправил.
Актуальная версия скетча на GitHub
 

Binar

New member
Заработалааааа!!!!!(y)
Большое человеческое спасибо за разработку!!! Нужная штука.
 

Araris

Member
Здравствуйте, Binar.
Я не получаю (почему-то) уведомлений о сообщениях в личку, поэтому Ваши оба сообщения увидел только сегодня ((.
Развивать таймер пока не планирую, поскольку сейчас не имею ни возможности, ни особого желания, даже платно, увы.
Ну например канал 1 включается в субботу утром, выключается в субботу вечером (это сейчас реализовано). Но внутри этого промежутка канал еще и включается/отключается с настраиваемыми промежутками. Ну например час работает, 30 мин отдыхает.
Периодическое включение канала - ну, разве что "лобовым способом"...
В скетче прописано максимальное количество в сто заданий, так что можно насоздавать кучу заданий типа "8:00 включить", "9:00 выключить", "9:30 включить", "10:30 выключить", "11:00 включить", и так далее до вечера.
 

YurNik

New member
Здравствуйте, Binar.
Я не получаю (почему-то) уведомлений о сообщениях в личку, поэтому Ваши оба сообщения увидел только сегодня ((.
Развивать таймер пока не планирую, поскольку сейчас не имею ни возможности, ни особого желания, даже платно, увы.

Периодическое включение канала - ну, разве что "лобовым способом"...
В скетче прописано максимальное количество в сто заданий, так что можно насоздавать кучу заданий типа "8:00 включить", "9:00 выключить", "9:30 включить", "10:30 выключить", "11:00 включить", и так далее до вечера.
Отличная задумка! Поначалу понравилась настолько, что подредактировал под себя внешний вид. А потом, к сожалению, оказалось что заданий может быть сколько угодно... Хоть 100! А программируются только 10 из них. 11-й замещает 1-е задание в 1-м канале. А жаль... И потом, при некоторой манипуляции с заданиями, программа "улетает". Помогает только очистка EEPROM. Если бы не эти баги, взял бы за основу. А так буду продолжать пользоваться своей на один канал и N-количество заданий. Все они на флешке...
В любом случае спасибо. Было интересно поюзать...
 

Araris

Member
YurNik, благодарю, завтра воспроизведу ситуацию и постараюсь исправить. Результат отпишу.
 

Araris

Member
Благодаря качественному баг репорту уважаемого YurNik (моя Вам благодарность !), ошибки в скетче найдены и исправлены. Протестировал, обновил AVVersatileTimer.ino на Github
 
Сверху Снизу