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

Тема в разделе "Глядите, что я сделал", создана пользователем Araris, 4 апр 2021.

  1. Araris

    Araris Нерд

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

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

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

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

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

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

    Актуальная версия скетча на https://github.com/Araris/VersatileTimer

    Схемы подключения более чем просты, для ESP-01 (один канал) :
    (да, там Омроновский пятивольтовый SSR модуль, и да, он работает на трёх вольтах)
    [​IMG]
    [​IMG]

    Для NodeMCU (несколько каналов) :
    [​IMG]
    [​IMG]

    Веб-интерфейс (один канал управления) РУС :
    [​IMG]
    Веб-интерфейс (один канал управления) ENG :
    [​IMG]
     
    ZAZ-965 нравится это.
  2. Araris

    Araris Нерд

    Обновил на Github скетч и добавил картинки с видами интерфейса.

    Изменён алгоритм управления каналами на более надёжный и универсальный.

    Режимы "по заданиям/вручную" теперь устанавливаются индивидуально для каждого канала.

    Добавлено журналирование и сброс на "заводские установки".
     
  3. Araris

    Araris Нерд

    Обновил на Github скетч и картинки с видами интерфейса.

    Расширены настройки синхронизации времени.

    Добавлены настройки подключения к WiFi и режим точки доступа.
     
    Andrey12 нравится это.
  4. parovoZZ

    parovoZZ Гуру

    Сюда так и просятся стили CSS.
     
  5. Araris

    Araris Нерд

    Таки да, есть в планах интерфейс осовременить.
     
    issaom нравится это.
  6. Un_ka

    Un_ka Гуру

    И шрифт molot.:)
    Это как?
    Может есть специальные подходы как с таким количеством таймеров управиться?
    Не думаете сделать оптимизированный для телефонов? Это очень удобно подключившись к локальной сети что-нибудь подправить.
    Мы начинаем КВН CTF!
    Такой "таймер" можно повесить неправильным или кучей http запросов.
    Проект людям может оказаться очень полезен, особенно с остановкой регистрации новых пользователей в blynk и выходом дорогого blynk 2.0.
     
  7. Araris

    Araris Нерд

    Собственно, так, как и написано - от https я отказался по причине медленной отрисовки веб-интерфейса и отсутствия особой необходимости. Был у меня когда-то вариант с https-выдачей веб-интерфейса, он работал медленнее, чем без шифрования (мне так показалось). Поскольку использование таймера в "недружественном" сетевом окружении я пока не рассматриваю, от https отказался и ограничился простейшим if ( !server.authenticate(loginName.c_str(), loginPass.c_str()) ) return server.requestAuthentication();

    Да, есть. Максимальное количество таймеров в данном случае ограничено лишь здравым смыслом и объёмом доступной памяти, поскольку таймеров в традиционном "ардуинском" понимании здесь нет.
    Есть функция check_previous_tasks(), которая периодически запускаается из loop().
    Функция проверяет по списку каналов, нет ли для канала задания, которое должно выполняться в данный день недели, час, минуту и секунду. Если таковое найдено и состояние канала ему не соответствует, то канал переключается (это упрощенное описание).
    По сравнению с if (текущее время == время выполнения задания) такой подход выручает, когда по какой-либо причине (например, питание отключалось) мы пропустили время выполнения задания.

    Ну, разве что в дальних планах, я пока функционалом занимаюсь, а красивый современный веб-интерфейс (заодно подучусь работе с CSS), возможно, позже.

    ОК, я погуглил, что такое CTF )). Повторюсь, использование таймера в "недружественном" сетевом окружении я пока не рассматриваю.
    Blynk-ом уже вдоволь наигрался, свой Blynk Server поднял и пользуюсь, короче говоря, тема неинтересна пока что.
     
    Последнее редактирование: 10 ноя 2021
  8. big_alex

    big_alex Гик

    Нет ли в планах прикрутить GPS?
    Для работы без интернета.
    С возможностью выбирать в веб-интерфейсе GPS или интернет.
     
  9. Un_ka

    Un_ka Гуру

    Для получения сигналов точного времени? Неужели gps модуль по цене сравним с rtc или дешёвые rtc слишком не точны для конкретных задач?
     
  10. big_alex

    big_alex Гик

    модуль на DS3231 всего на доллар дешевле NEO-6M
    для дачи без постоянного интернета GPS не плохой вариант ИМХО
     
  11. SergeiL

    SergeiL Оракул Модератор

    Проще RTC типа DS3231.
    Не нужны антенны, точное время сразу после запуска.
    Есть сеть - время в RTC, корректируется по NTP (это если есть расхождение).
    А так - время из RTC.
    Точность очень даже
     
  12. Airbus

    Airbus Радиохулиган Модератор

    А если нема WiFi? Я тут тоже заказал ЖПС модуль. Хочу сделать часы на нем чтоб корректировал RTC раз в час. Домик в деревне. Ничего нет вокруг—даже GSM. RTC- DS1307. У меня их много валяется. А так по NTP серверам удобнее. DS3231 так то хороши канешно но тоже не факт что брак не пришлют. Китай он и в Азии Китай
     
  13. big_alex

    big_alex Гик

    Не ожидал такого от DS3231, где-то читал что за год на 3 минуты уходят
     
  14. SergeiL

    SergeiL Оракул Модератор

    Неточность плавает. То в плюс, То в минус.
    Поэтому и получается , что разница не увеличивается кратно годам.
     
  15. Un_ka

    Un_ka Гуру

    Если с другой стороны посмотреть: на спутниках часы атомные.
     
  16. Airbus

    Airbus Радиохулиган Модератор

    Ядреные!:D:D:D
    Тут у меня цель больше — эксперимент. А с другой стороы и правда удобнее. Цена почти такая же. Батарейка не нужна. И на точность RTC наплевать
     
  17. SergeiL

    SergeiL Оракул Модератор

    Я просто к тому, что GPS более заморочный.

    Нужна антенна, и видимость на спутники. GPS приемники с Али - это простейшие приемники, и антенны не лучшие.
    А еще нужно время на получение валидного сигнала, до которого устройство не работает.

    А по точности - нужна ли такая точность?
    Вот и получается NTP+RTC - вариант намного проще.
     
    Airbus нравится это.
  18. Airbus

    Airbus Радиохулиган Модератор

    NTP лучше однозначно! Я все часы переделал под них. А там куда буду делать нет интернета. Да вроде ловят нормально. Это в 95 когда первые GPS ки появились и антенна была нужна и покрытие спутников хорошее. А сейчас спутников как мух. В каждой зажигалке GPS и притом работает. В крайнем случае для автокоррекции раз в месяц буду выносить на чистый воздух и подбрасывать для лучшего приема.:D:D:D
     
    Vovka нравится это.
  19. Sandr

    Sandr Гик

    Выходит ошибка при компиляции.
    AVVersatileTimer:20:10: fatal error: Secrets.h: No such file or directory
    compilation terminated.
    exit status 1
    Secrets.h: No such file or directory
    Исправьте пожалуйста
     
  20. big_alex

    big_alex Гик

    Так написано что нужно создать файл Secrets.h

    // Create a Secrets.h file with Wi-Fi connection settings as follows:
    //
    // #define AP_SSID "yourSSID"
    // #define AP_PASS "yourPASSWORD"