Часы на esp8266 и max7219 + android управление

Тема в разделе "Глядите, что я сделал", создана пользователем IvanUA, 28 авг 2017.

?

Вы повторили это проект?

  1. Нет (просто ознакомился)

    35 голосов
    13,2%
  2. Да, один раз (попробовал)

    111 голосов
    41,9%
  3. Да, не однократно

    123 голосов
    46,4%
Можно выбрать сразу несколько вариантов.
  1. jgupdimon

    jgupdimon Гик

    Привет. Захожу на сайт через vpn из России. Иначе не заходит. 1 ключ работает уже почти 3 месяца.
     
  2. Pitruxa

    Pitruxa Гик

    А можно со стандартной конфигурацией использовать в качестве MQTT сервера не cloudmqtt.com, а thingspeak.com ?
     
  3. IvanUA

    IvanUA Гуру

    Это есть при выборе народного мониторинга
    Думаю что должно работать. У меня по крайней мере с локальным mqtt сервером работает
     
  4. Madcat

    Madcat Нуб

    я имел в виду из weatherbit.io.
     
  5. Madcat

    Madcat Нуб

    И почему-то
    http://192.168.2.20/configs.json
    выглядит так
    {"time":"20:09:10","ip":"192.168.2.20","printCom":"checked
    Так и должно быть?
     
  6. Pitruxa

    Pitruxa Гик

    Меня немного смущает, что там настройки немного другие, для работы с thingspeak.com необходим Channel ID и Write API Key.
    А стандартном меню часов не знаю куда это можно вписать :)
     
  7. vlforum

    vlforum Нуб

  8. IvanUA

    IvanUA Гуру

    Это сборная солянка из нескольких проектов, в том числе и из этого.
    Ну да, там если данный с датчиков не пришли, или очень старые, то берется температура из прогноза. Полистайте сообщениями ранее это обсуждалось. (ПС id первого датчика должно быть отлично от нуля)
     
    vlforum нравится это.
  9. vlforum

    vlforum Нуб

    Согласен. Но запустил и все работает уже месяц. Там вроде еще разводка платы была и корпуса простенькие.
     
  10. max50a5

    max50a5 Гик

    Плата тоже есть.
     
  11. jgupdimon

    jgupdimon Гик

    Всем привет. Вот на 10 мм светодиодах. https://drive.google.com/file/d/1VLNDc5lY2q7moRSNsRwsx2Pl5Y1cU5zJ/view?usp=drivesdk корпус из ламината, стекло обычное, тонировка.
     
  12. vlforum

    vlforum Нуб

  13. Madcat

    Madcat Нуб

    Вот. У меня вообще не был прописан народмон(который кстати у многих в Украине не открывается без VPN-а, т.к. использует карты Яндекса).
    И очень долго искал как сгенерировать uuid. Оказывается надо было сходить на сайт https://www.md5hashgenerator.com/ ввести там что угодно и полученный MD5 хэш будет нашим uuid.
    Про API key вроде понятно, что надо генерировать на самом сайте народмона.
    Чисто случайно догадался, что ID датчика нужно брать без буквы S. И совсем случайно полез в настройки информера и нашел, что в качестве tU/sensorUl нужно указать обязательно указать Nmon. И не забыть убрать коррекцию.
    И вообще не совсем правильно выводить пользователю непроверенные данные(начиная от времени после потери питания и заканчивая температурой с несуществующего датчика tU/sensorUl=0 (у меня выводило все время -1.5 градуса(0 по умолчанию и -1.5 коррекции), что было близко к истине в этот момент.
    И еще есть один глюк. Если нажать в веб-морде "Перезагрузить устройство" и остаться на этой странице, то железка начинает перезагружаться все время. По крайней мере в Firefox. Надо или закрывать вкладку или переходить в другой раздел вебморды информера. С мобилки нормально.
    P.S. Вообще отсутствие нормального мануала удручает :( Искать по 250 страницам темы грустно)
     
    Последнее редактирование: 3 янв 2020
  14. IvanUA

    IvanUA Гуру

    Я опять потерял ход мыслей. Что значит от времени после потери питания? Что значит температуру несуществующего датчика?

    Если принять во внимание что человек не понимает (не знает) что такое НародМон - то он и не будет этим пользоваться. -1,5 в вебе указанна как коррекция, тут нет ничего удивительного...
    Это не глюк, просто ваша браузер, не получив ответа от устройства, пробует бомбить этот же адрес, последними запросами. Часы подключаются, и снова получают запрос перезагрузки.... Ээээээ, ну в принципе, думаю это можно исправить. Есть мысль. Позже когда сделаю, попрошу проверить.
    Вот ИгорьК удивляется моему терпению столько времени раздувать проект реализовывая все новые и новые "хотелки". Конечно проще все го сделать просто часы с настройками только перед прошивкой. 100% вопросов будет меньше)))) Но тут уж как получилось, так получилось. Я иногда нахожу время на правку кода и добавления разных плюше, ну а на инструкции, уж простите свободного времени совсем не остается. Но это не мешает к примеру Вам, сделать такой мануал.... Я с удовольствием помогу (расскажу) где и какие плюшки присутствуют, если сами не разберетесь.
    ПС.... Если есть желание помочь проекту, то милости просим. До конца января, я еще надеюсь буду дома и смогу больше времени уделить этому проекту. Потом увы 2-3 месяца у меня такой возможности не будет.
     
    Последнее редактирование: 4 янв 2020
    vlforum нравится это.
  15. chipmoca

    chipmoca Гик

    Спасибо, Иван за дополнительный датчик! Правда ставил на одно-строчную версию, чисто посмотреть настройки этого датчика. Ждем`c одно-строчную.... ) На предпоследней версии (одно-строчной) три раза ловил баг на двух часах, после пропадания "света", при включении, часы быстрее загружаются чем роутер и время не обновляется. В таком режиме проработали 5 часов, время так и не обновилось. Только после перезапуска часов время засинхронизировалось. Не знаю как на последней версии - думаю, что так-же наверное будет...
     
  16. Madcat

    Madcat Нуб

    Итак. Пропало питание. Выключились часы. Если электричество появилось не сразу и нету RTC, то часы показывают время, которое было последним записано в память. А это может быть и час и два.... Я вот про это:
    К тому же вон выше пишут про проблему с подключением к роутеру(у меня роутер, к примеру, грузится секунд 40... Ясное дело, что часы загрузятся быстрее роутера. Сейчас, кстати, попробую проверить на своем роутере, поднимется все в итоге или нет....
    Это раз.

    EEPROM это отнюдь не флешка и количество циклов перезаписи сильно ограничено. Если не ошибаюсь, то до 100 000. Не так уж и много, если перезаписывать даже раз в минуту.

    Это два. У esp8266 используется Flash память, что дает нам больше времени. Но проблема все равно остается.
    Чем меньше мы пишем во энерогонезависимую память, тем лучше. И вывод на дисплей времени "когда пропало питание" не лучшая, на мой взгляд, идея. Лучше без данных с RTC/NTP, прочерки вместо цифр. Пусть лучше ничего, чем недостоверные данные.

    Ну например я сделал так: Решил, что дата мне на часах не нужна и сделал в коде вот так:
    Код (C++):
    //showSimpleDate();
    showSimpleTempU();
     
    В надежде что функция выведет мне уличную температуру из weatherbit.io.
    При этом все датчики(включая уличный) у меня были выставлены в настройках в NONE. В итоге часы показывали "у -1.5°С." Т.е. у нас переменная t3 была по умолчанию 0, и коррекция -1.5 тоже из умолчаний.

    P,S, Кстати, наверное неплохо было бы изменить сервер NTP по умолчанию на pool.ntp.org. Во первых большинство пользователей из России, как я понимаю. И украинский сервер им ни к чему. pool.ntp.org автоматически резолвится в адрес наиболее близких серверов к пользователю. Хотя для настенных часов 10 или 100 миллисекунд - разницы все равно нет.

    Я уже пытаюсь помочь. :) ошибки вот ищу(и иногда даже решения выкладываю :) ), а не тихо матерясь, правлю под себя и забиваю на остальных.
    В принципе по мануалу я не против. Надо просто попросить модераторов разрешить редактирование комментария. Или будем вместе править какой-то гуглдокумент, а Вы вносить поправки в первое сообщение. Или на GitHub-е сразу править....
     
  17. Madcat

    Madcat Нуб

    UPD. Собственно так и произошло. ESP не нашла роутер(а ему 40-60 секунд надо, чтобы включиться), подняла свою точку доступа и на этом успокоилась. А время на полчаса отстает. Да, мигает одна точка, но часто ли мы всматриваемся в то что там мигает? А если не дома, а на работе? Всем объяснять, что времени с одной точкой верить нельзя? Или под часами объявление вешать?
     
  18. IvanUA

    IvanUA Гуру

    Если не трудно, то проверьте как на последней двухстрочной.
    Дело в том, что я там менял функцию проверки доступности сети и саму функцию подключения к роутеру.
    Код (C++):
    // ---------- 30 перевірка доступності WiFi мережі ---// повторне підк. до WiFi кожну 1, 6, 11, 16...56 хв.
        if(second>30 && second<38 && !alarm_stat){
          if(apStart && millis()>1800000) apStart=0;
          if((WiFi.status() != WL_CONNECTED || !WIFI_connected) && !apStart) {
            WIFI_connected = false;
            if(minute % 5 == 1) {
              wifiConnect();
              if(WiFi.status() == WL_CONNECTED) WIFI_connected = true;
            }
          }
        }
    По идее сейчас часы должны работать следующим образом.
    1. Если при старте не удалось подключится к роутеру, то часы будут 1800 секунд (30 минут) от включения ждать, вернее работать как точка доступа, давая тем самым возможность подключиться к ним и выполнить настройки.
    2. Через 30 минут с периодичностью в 5 минут будут пробовать подключиться к роутеру.
    Это было сделано специально на момент кратковременного пропадания питания. Эту функцию можно выключить в вебе. А в последних прошивках я кажись ее вообще убрал. Точно не помню, надо проверить. Но в принципе можно и модернизировать...
    Ну тут надо просто выключить ту функцию о которой мы писали выше.
    Вы конечно простите, но я не делаю прошивку для какого-то определенного сегмента пользователей. Я ранее уже писал что делаю ее в первую очередь для себя. Если кому интересно, я даю исходники и люди могут под себя, в том числе и исходные данные ее адаптировать.
    Моя вам искренняя благодарность.
    Можете создать такой расшаренный документ, а ссылку на него и на автора, я размещу тут в первом сообщении и на гите. Думаю это будет проще. Предлагаю пока поработать в таком формате, а там всё обсуждаемо.
     
  19. Madcat

    Madcat Нуб

    У нас "основной" режим работы не настройка, а "работа через wifi".
    Предлагаю в варианте без RTC просто писать No WiFi и долбиться в точку доступа постоянно. :) Если пропадание электричества было кратковременным, то все очень быстро запустится, не вводя в заблуждение неправильным временем.
    Разве что предусмотреть вариант работы, когда в конфигурации явно прописано RTC.

    Предлагаю следующую логику:
    1. Пытаемся найти точку доступа. Если нашли - все хорошо, конец условия.
    2. Если не нашли - запускаем на 1 минуту точку доступа. Если пользователь не подключился(а это же легко проверить), то
    3. Переходим в режим поиска точки доступа раз в 20 секунд(За 1-2 минуты любая точка доступа запустится). В этом режиме можно и остаться. Если сильно критично, то можно кнопкой заново запускать режим точки доступа(хотя и дернуть питание не должно быть проблемой).

    Не нашел. :( версия на две строки, если что)

    Не спорю, но 90% будут "жрать что дают" :) Зачем привязывать всех( и себя в том числе) к одному серверу, который не факт, что будет существовать вечно :) + В истории известны примеры, когда NTP сервер выдавал неточное время. Поэтому и вводится трехкратная проверка. И в случае с pool.ntp.org мы будем спрашивать время у трех разных серверов.

    Добью сначала код для датчика CO2....
     
  20. chipmoca

    chipmoca Гик

    Нормально! Работает так, как вы описали. Спасибо! Однострочной - не предвидится в ближайшее время?