iotClock - очень простые Интернет-часы на ESP8266

Тема в разделе "Глядите, что я сделал", создана пользователем BenBen, 13 ноя 2018.

  1. BenBen

    BenBen Нерд

    Решил добавить свои 5 копеек в часовую тему - часы iotClock в двух вариантах. Один с поддержкой нескольких точек доступа - версия с MultiSSID, и второй с использованием менеджера настроек - версия с wifiManager

    Основная идея состоит в том, чтобы максимально использовать возможности библиотек и минимизировать код. Особенно, как мне кажется, этот проект подойдет для начинающих. Нужен будет модуль с ESP8266 и LED матрица MAX7219.

    У варианта часов с MultiSSID есть поддержка нескольких WiFi точек доступа. Mожно загрузить несколько SSID/passwords, и часы будут автоматически подключаться к роутеру с самым сильным сигналом.
    Время в часах полностью обрабатывается библиотекой time.h Oна обеспечивает подключение к NTP-серверам и поддерживает внутреннее время при отсутствии WiFi.
    При возвращении WiFi подключение происходит автоматически.
    Бегущая строка сделана с использованием библиотеки Adafruit_GFX с небольшим плагином для матрицы MAX7219. Эта библиотека сейчас поддерживает user fonts, поэтому поменять шрифты будет несложно.

    Подключение по пинам сделал совместимым с часами IvanUA. Но при желании CS-pin можно подключить к D4, тогда на светодиоде модуля ES8266 будет виден обмен с LED матрицей.

    Всего, не считая комментариев, получилось всего около 130 строк кода, из них почти половина на анимацию подключения к WiFi и NTP. В небольшой код легко добавлять свои функции. Скажем, автоматическая яркость делается буквально одной-двумя строчками. Датчики тоже просто добавляются.

    Версия с WifiManager при старте запускает веб-сервер, через который загружаются имя точки доступа и пароль. С ней можно обойтись без компиляции и сразу загружать бинарный файл. После запуска нужно подключиться к точке доступа iotClock, набрать в браузере 192.168.4.1 и настроить параметры WiFi. При настройке иногда бывают задержки подключения до минуты-двух, но она делается один раз, а потом часы будут подключаться к WiFi автоматически.

    Установка MiltiSSID версии также простая. Сначала из приложенного zip-файла копируете папку библиотеки в Arduino/libraries. В zip-файле она называется arduino-Max72xxPanel-master, ее нужно переименовать в Max72xxPanel
    Остальные библиотеки уже есть в Arduino IDE. Я обычно пробую скомпилировать скетч, если каких-то библиотек не хватает открываю Library Manager и устанавливаю. Конфликтов библиотек в этом проекте пока не замечал.

    Потом в скетче задаете timeZone для своего часового пояса. При желании можно поменять яркость в переменной matrixBrightness

    Далее в скетче задаете параметры своих точек доступа. Добавлять их можно много, я пробовал 10 и больше. Затем компилируете и загружаете в ESP8266 модуль.

    Сейчас делаю версию с погодой от apuxu.com, выложу как будет готова.
     

    Вложения:

    Последнее редактирование: 13 ноя 2018
    Deniskyn, IvanUA, Tomasina и ещё 1-му нравится это.
  2. Deniskyn

    Deniskyn Гик

    А как это дело выглядит можно увидеть? )
     
  3. BenBen

    BenBen Нерд

    Да вот видео и пара фоток
    Сейчас заканчиваю версию с погодой от apixu.com. Уже сделал практически, но хочу еще перейти на библиотеку Parola для матрицы. У нее есть пропорциональный шрифт и много разных эффектов. Через пару дней выложу.


    iotClock2_1.jpg iotClock3.jpg iotClock5.jpg
     
    ИгорьК нравится это.
  4. Deniskyn

    Deniskyn Гик

    Шрифты сделайте как у Ивана, они красивее =) и версия с MultiSSID ИМХО не нужна....
     
  5. ИгорьК

    ИгорьК Оракул Модератор

    Я выпаиваю коннектор и перепаиваю его в обратную сторону. Уменьшает размер часов по ширине.

    Дело привычки. Я сделал - не нравится. Во-многом зависит от размера корпуса. В связи с тем что у меня коннектор не торчит - корпус вокруг матриц не более 8-9 мм. Жирный шрифт смотрится громоздко.
    Но это на любителя.
     
  6. kiv69

    kiv69 Нерд

    Почему не нужна? У многих в сети не один роутер и, соответственно, не один SSID.
    Аналогично, сразу перепаиваю. Тот самый случай, когда лучше бы они этот разъём не впаивали, а положили отдельно. Боятся, видно, что криворукие юзеры при доставании матрицы над разъёмом её покурочат :)
     
  7. kiv69

    kiv69 Нерд

    Это ваше ИМХО
    А нормально - сделать вебку и несколько шрифтов, нужный выбирать по желанию и собственному чувству прекрасного.
    А вообще, меня поражает, что практически все, нормально не допилив собственно часы, быстрее лезут прикручивать датчики, MQTT, погоду и пр.
    В нормальных часах должно быть:
    1. Веб-интерфейс. Потому как без него юзабельных настроек не сделаешь.
    2. Будильники. Да, придётся ставить кнопку, но кнопка всё равно понадобится для пункта 3.
    3. Управление вафлей. Потому как всё время держать вафлю включенной - идиотизм. Она должна или включаться для синхронизации(кратковременно), или принудительно кнопкой для настроек/первичного подключения(через точку доступа).
    4. Настройка отображения(шрифты, видимость даты/секунд и пр.)
    5. Опциональная возможность прикрутить RTC.
    6. Использование ADC. Либо для управления яркостью дисплея сигналом с фоторезистора, либо для индикации заряда для часов с двойным питанием.
     
    parovoZZ нравится это.
  8. ИгорьК

    ИгорьК Оракул Модератор

    Последнее время даже не перепаиваю, а сразу впаиваю провода.

    Можно поспорить по каждому пункту, но скажу по-другому:
    нормальные часы должны соответствовать запросам того кто их делает, а не того, кто хочет их копировать.

    Объясните, зачем мне делать веб-интерфейс, если я наизусть знаю любую настройку и вообще весь код?
    Нормальный веб-интерфейс
    - стоит моего времени. Им разбрасываться очень жалко
    - ставит некоторые вопросы о стабильности работы - оно не стоит того.
    И так по каждому пункту.
     
    Deniskyn нравится это.
  9. Deniskyn

    Deniskyn Гик

    Поддерживаю Игоря, вебморда красиво и круто но реализация тех настроек что вы привели в пример долго и тяжко....
    ПС
    Роутер вы тоже кратковременно включаете ? )
     
  10. ИгорьК

    ИгорьК Оракул Модератор

    Странно. Любой проект развивается. Попробуйте сами сделать "правильно" по-вашему.

    Мне кажется вы слишком потребительски относитесь к чужой работе - здесь никто никому ничего не должен. Может поделиться своими разработками, не более.

    И более. Я Ивана критикую за то, что он идет на поводу у всех копипастеров. Хотя, конечно, это его дело и труд его уважаю.
     
  11. ИгорьК

    ИгорьК Оракул Модератор

    Отключать часы на время - это не сложно. Но смысла я в этом не вижу.
     
  12. Deniskyn

    Deniskyn Гик

    Игорь, простит нас автор темы за флуд ) но Иван скорее делает не для копипастеров, а для новых мыслей и идей...
     
    Последнее редактирование: 22 ноя 2018
  13. kiv69

    kiv69 Нерд

    На роутере 24/7 нагрузка, а часам для синхронизации нужен вайфай раз в несколько часов, в остальное время он просто бесполезно жрёт энергию. Поэтому грамотно будет выключать вайфай, когда он нафиг не нужен.
    И исключение тут может быть только одно - неадекваты, которым кровь из носу нужно подключаться к часам из интернета
     
  14. ИгорьК

    ИгорьК Оракул Модератор

    У меня все часы передают температуру датчика на брокер. А у одних еще и датчик движения на охрану ставится.
    То есть все часы висят в сети.
    Разрешите остаться адекватным? :)
     
    SergeiL и Deniskyn нравится это.
  15. kiv69

    kiv69 Нерд

    Это не часы с датчиком охраны, а датчик охраны с часами. Как то не принято говорить "магнитола с автомобилем", обычно говорят наоборот.
    Что касается температур, то передача температуры из часов вовне вообще не имеет смысла. Разве что имеется навороченная система климата, умеющая регулировать температуру в каждой комнате и использующая эти часы как датчики. Но даже в этом случае именно эта система должна выходить в интернет и сообщать о неполадках, а вовсе не часы.
    Знать же температуру в комнате, которой не можешь управлять - абсолютно бесполезно.
    ИМХО, конечно. Может, вы метеоролог и делаете прогноз температуры в комнате на 10 дней :)
    P.S. Никогда не мог понять абсолютно бесполезных проектов вроде https://narodmon.ru/
     
    Последнее редактирование: 8 дек 2018
  16. ИгорьК

    ИгорьК Оракул Модератор

    Буду оправдываться дальше.
    Значит, когда часы стоят на даче, они являются вторым потоком контроля работы газового котла, который имеет свойство останавливаться. В первую очередь от потери давления газа.
    Ясный пень, там есть устройство контроля его работы, но второй контур, да с отправкой информации по другой сети - это гуд.

    И, получается, что работает эта железка всем подряд- и часами, и температурой и сигнализацией.

    Ну, разрешите остаться умным? Или все равно не достоин?
     
  17. ИгорьК

    ИгорьК Оракул Модератор

    Смотри, друг! У меня Часы берут пять температур с разных датчиков народного мониторинга, выбирают наименьшую и выдают на матрицу . Намиеньшую- потому что в условиях города у разных людей датчики стоят в разных местах относительно солнца. И в разное время иногда находятся под его лучами.

    В результате, часы имеют более точную информацию о текущей температуре на улице, чем если бы я отражал только свою.
    Мой датчик вечером греет солнце. А чей-то нет.

    Ну разрешил нам с народным мониторингом существовать, а?
     
    mikhail09p и SergeiL нравится это.
  18. SergeiL

    SergeiL Гуру

    Поддерживаю!
    У меня аналогично.Часы во всех комнатах, на уровне пояса, почему же с них не снять еще и температуру и влажность в комнате. Так для любопытства ради, и не для любопытства тоже.
    Отключать увлажнитель например.

    В коридоре часы с большим индикатором 2.3 дюйма. Висят высоко, к ним датчик не подключен, незачем, все равно температура под потолком не интересна.

    Просто имея часы на ESP, как то жаль не использовать все возможности WiFi, и часы можно нагрузить чем то дополнительным.
    Часы не перегружены, можно сказать просто не загружены. ;)
     
    mikhail09p нравится это.