Часы на ESP-12(NodeMCU) + MAX7219 + WEB интерфейс

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

?

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

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

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

    62 голосов
    42,2%
  3. Да, не однократно

    72 голосов
    49,0%
Можно выбрать сразу несколько вариантов.
  1. IvanUA

    IvanUA Гуру

    Ну это естественно. Вы же сгенерили код для распарсивания этого типа запросов правда только для cnt=4)))
    А надо прогноз на завтра минимум и максимум... Не зависимо от времени в которое вы делаете запрос))))
    То есть cnt - должно меняться в зависимости от вашего текущего времени...
    Это то что делал D_rain
     
  2. BenBen

    BenBen Нерд

    Можно в принципе задать cnt скажем 12, и из полученного массива вытаскивать то, что нужно. Там будут все данные на 36 часов вперед.
    Но проблема в том, что массив становится большой, плюс для парсинга нужно много места. Память и так на пределе, с учетом того, что для ОТА нужно половину свободной держать.
    Идеально было бы конечно получать с сервера только нужный временной блок, а не все скопом.
    Но я не знаю, можно ли это сделать.
    А парсить по моему лучше библиотекой, а не так, как у D_rain. Она все таки для этого и сделана
     
  3. BenBen

    BenBen Нерд

    Нашел небольшой баг в функции getWeatherData()
    Сервер погоды выдает давление в метрической системе.
    Для перевода в миллиметры ртутного столба нужно добавить в одну код строку:

    pressure /= 1.33322; //convert pressure to mmHg

    (после pressure = main["pressure"]; )
     
    Belyj нравится это.
  4. IvanUA

    IvanUA Гуру

    она там есть изначально
    Код (C++):
      pressure = root["main"]["pressure"];
      pressure = (pressure/1.3332239) - 0;
     
  5. BenBen

    BenBen Нерд

    Да, в вашей версии есть. Я имел в виду свою версию, я там эту строчку пропустил.

    Кстати, сегодня был переход на зимнее время в Европе. Сам переход прошел нормально, но потом у меня в течении дня при переходе на новый час несколько раз выскакивало время на час меньше, а через 2-3 минуты исправлялось. Не наблюдали ничего подобного?
     
  6. Fedoss

    Fedoss Нерд

    Тоже баловался с бесплатным прогнозом почасовым, сделал минимумы и максимумы, парсит без квадратных скобок. пост 592. Версия старая, посмотрите если интересно.
     
    Последнее редактирование: 29 окт 2018
  7. buba911

    buba911 Гик

    Да, была такая беда, но сегодня к утру всё само исправилось. Похоже на сервере точного времени были глюки.
     
  8. D_rain

    D_rain Нерд

    Лично я согласен, так проще. Даже больше скажу, я так делал, вот только не парсилось нифига. Пришлось руками раздёргивать и парсить. В последней версии у меня берётся массив и выдергивается прогноз на затра ( утро, день, вечер), cnt вычисляется от текущего времени. Получилось быстро и стабильно. Костыль, конечно, но и не страшный.
     
  9. Valerchik

    Valerchik Нерд

    Valerchik сказал(а):Почему погоду перестало показывать на всех прошивках?
    Прошил v10.08.2018 своим старым бирарникок, погода пошла а компилю прогноз отсутствует?
     
  10. Belyj

    Belyj Нерд

    Хотел обновить прошивку через ota. Закоментировал код прогноза для старых ключей, экспортировал в бинарик. Файл вышел 542kb, не прошивается, пишет нет места. Ну думаю, ладно... Вырезал закоментированый код, вырезал чешский, польский, немецкий языки полностью. После этого бинарик получился 536kb. Обновляться так и не хочет.
    Теперь собственно вопрос: у Ивана бинарик в папке с прошивкой весит 524kb, почему так?
    Просьба сильно не пинать, я в этом деле совсем новичёк. Делал когда-то сайты да скрипты на php & mysql, но то совсем другое. Очень нравятся эксперименты с микроконтроллерами, буду понемногу учиться.
     
  11. IvanUA

    IvanUA Гуру

    Откатывайте библиотеки и платы... Прошейте последний бинарник, если погода пойдет, можем сравнить какими версиями пользуемся...
     
    Valerchik нравится это.
  12. Belyj

    Belyj Нерд

    Хм... Любопытно... Всё то же самое. Пробовал очистить esp, заливал скетч, заливал бинарник всегда одно и то же. Точку доступа создаёт, к сети подключается, на настройки реагирует, но показывает только +85.0 хоть убей.
     
  13. IvanUA

    IvanUA Гуру

    +85 - это значение температуры на старте часов.
    Оно прописано в глобальных переменных... И служит только для того, что бы не передавать на MQTT сервер это значение, ну если не полученно новое значение...
    У Вас или проблемы с кнопкой, или нет подтягивающего резистора на кнопку....
    То есть функция кнопки постоянно работает...

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

    И получается.... Если нет подтяжки (резистора) или чтото не так запаяно.... ЕСП-ха думает что нажата кнопка...
    Она соответственно идет на процедуру вывода температуры....
    А датчик температуры еще не готов записать в переменную новые значения...
    Но по умолчанию в глобальных переменных уже записано значение 85 градусов...

    Вот его вы и видите постоянно на экране часов....

    Поставьте сопротивление или наведите порядок с кнопкой, и будет все ОК.

    На самый крайний случай просто закомментируйте строку вызова отображения температуры от сработавшей кнопки...
    Код (C++):
      //------------- РОБОТА З КНОПКОЮ --------------------------------------------------------
      if(digitalRead(BUT_PIN)==HIGH){
        if(alarm_stat) {
          alarm_stat=0;
          alarm_hold=1;
          if(alarme[alarm_numer][2]==11) alarme[alarm_numer][2]=0;
        } else {
          showSimpleTemp();
          return;
        }
      }
    строка шоуСимплТем... вот так должна выглядеть
    Код (C++):
    // showSimpleTemp();
     
  14. IvanUA

    IvanUA Гуру

    Прошло 5 дней от последнего обновления.....
    Не пойму, то ли все шьют бинарники, и у них все ОК, то ли библиотеки наладили, и у всех тоже все ОК...
    Но за это время никто по новой версии не отписал ни единого замечания(пойманного глюка).....

    ПС... Как то напрягает)))))))))))
     
  15. Deniskyn

    Deniskyn Гик

    Пока не поймал глюков... )
    ПС
    Пробовал что скетч что бинарник.
     
  16. om1212

    om1212 Нерд

    Тоже было постоянно +85 гр. на экране. В коде поменял, чтобы на кнопке постоянно был высокий уровень, а при замыкании - ноль (кнопки у меня нет).
    В предыдущей версии так и было (обсуждалось на форуме, что при отсутствии кнопки, из-за наводок на пине висит плюс и получается, что кнопка постоянно нажата).
    Сильно тормозит web-интерфейс. Из-за этого остался на предыдущей версии.

    Идея сохранения текущего времени в памяти конечно хорошая, но наверное лучше подключить часы реального времени (типа ds3231, 1307), ну или GPS приёмник. Интернет есть не всегда и не везде...
     
    Последнее редактирование: 31 окт 2018
  17. klslab

    klslab Нерд

    тестируем, ключ чуть больше года подошёл без раскомментирования ( части закомментированного кода для работы с новыми ключами) , на версии от 10.08.2018 работал только прогноз на сегодня. Кстати вебморда не переключается на другие языки, только инглиш, может конечно только у меня, пока под себя допиливал, что то подтер. Больше глюков не видел. (bmp 280 не корректирует температуру, но я и его не использую )
     
  18. Deniskyn

    Deniskyn Гик

    RTC да, а вот GPS перебор =)
     
  19. Belyj

    Belyj Нерд

    Это понятно, я в коде видел. Просто часы больше вообще ничего не показывали. Кнопка была без подтяжки. Нашел дома резюк на 4.3 кОм (другово не было), припаял, эфек получился обратный. При нажатии на кнопку появлялись часы, а всё остальное время 85.0 :)
    Пока убрал кнопку вообще, и функцию работы с кнопкой закоментировал. Часики заработали, но погоду вообще не показывают, не на сейчас, не на завтра. Ключ новый, кусок кода для старого ключа был закоментирован. На предидущей прошивке работало, но с другим ключём.
    Возьму на работе резисторы, буду делать кнопку.
    Так же в планах уменьшить яркость матрицы и прикрутить df player вместо базера, ну и с погодой надо будет разбираться, может провайдер блокирует (регнуться смог только через vpn).
     
  20. om1212

    om1212 Нерд

    Скорее всего подтянули к плюсу, а замыкается на землю. Нужно наоборот.