• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу