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

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

?

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

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

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

    24 голосов
    32,0%
  3. Да, не однократно

    42 голосов
    56,0%
Можно выбрать сразу несколько вариантов.
  1. ИгорьК

    ИгорьК Давно здесь

    Запись не блокируется, но ответы могут не отправляться. Это общая практика. Поэтому запросы нужно отправлять с правильной периодичностью, и если ответ не пришел оставлять старый.
     
  2. IvanUA

    IvanUA Гик

    К сожалению на сайте так и не нашел информации по лимитам.
    Мне кажется это сделано не для обычных пользователей с 4-мя запросами в минуту, а таки для каких то сервисов у которых поток запросов может быть очень большой. Короче говоря кто может использовать эти данные в коммерческих целях, и не пользоваться платными аккаунтами ( с того же сайта: "У бесплатных и стартовых учетных записей есть ограничение емкости и доступности данных.").
    Ну а так на будущее надо конечно делать запросы не так часто (нет в этом необходимости) - тут согласен))))
     
  3. ИгорьК

    ИгорьК Давно здесь

    Фигасе! Это очень часто!!!!!
    Посмотрите API на предмет количества запросов в сутки на один ключ при бесплатном доступе.
    Железно видел такую информацию.
     
  4. big_alex

    big_alex Нерд

    По лимитам http://openweathermap.org/price#weather
    Name Description Price plan Limits
    Weather Current weather and forecast Free plan Threshold: 7,200
    Hourly forecast: 5
    Daily forecast: 0
    Calls 1min: 60
    получается 60 запросов в минуту

    PS Сегодня погода выводится нормально
     
    Последнее редактирование: 4 янв 2018
    IvanUA нравится это.
  5. big_alex

    big_alex Нерд

    Опять началось. Посмотрел в UART, ответы приходят всегда, похоже не всегда удается распарсить.
    Когда parseObject() failed, то выводится только "Завтра"
    Код (Text):
    Connecting WiFi .......IP address:       10.42.0.244
    Proba #1
    Proba #2
    Proba #3
    11:14:33 4-1-2018 DW=5
    Time update OK

    connecting to api.openweathermap.org
    {"coord":{"lon":30.49,"lat":50.58},"weather": {"id":300,"main":"Drizzle","description":"сыро","icon":"09d"},{"id":701,"main":"Mist","description":"туман","icon":"50d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.22,"sunset":1515074865},"id":688723,"name":"Vyshhorod","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    secFr=27665
    connecting to api.openweathermap.org
    {"coord":{"lon":30.52,"lat":50.43},"weather": {"id":701,"main":"Mist","description":"туман","icon":"50d"},{"id":300,"main":"Drizzle","description":"сыро","icon":"09d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.73,"sunset":1515074900},"id":703448,"name":"Kiev","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.49,"lat":50.58},"weather": {"id":300,"main":"Drizzle","description":"сыро","icon":"09d"},{"id":701,"main":"Mist","description":"туман","icon":"50d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.22,"sunset":1515074866},"id":688723,"name":"Vyshhorod","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.52,"lat":50.43},"weather": {"id":701,"main":"Mist","description":"туман","icon":"50d"},{"id":300,"main":"Drizzle","description":"сыро","icon":"09d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.73,"sunset":1515074900},"id":703448,"name":"Kiev","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.49,"lat":50.58},"weather": {"id":300,"main":"Drizzle","description":"сыро","icon":"09d"},{"id":701,"main":"Mist","description":"туман","icon":"50d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.22,"sunset":1515074866},"id":688723,"name":"Vyshhorod","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.52,"lat":50.43},"weather": {"id":701,"main":"Mist","description":"туман","icon":"50d"},{"id":300,"main":"Drizzle","description":"сыро","icon":"09d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.73,"sunset":1515074900},"id":703448,"name":"Kiev","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.49,"lat":50.58},"weather": {"id":300,"main":"Drizzle","description":"сыро","icon":"09d"},{"id":701,"main":"Mist","description":"туман","icon":"50d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.22,"sunset":1515074866},"id":688723,"name":"Vyshhorod","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.52,"lat":50.43},"weather": {"id":701,"main":"Mist","description":"туман","icon":"50d"},{"id":300,"main":"Drizzle","description":"сыро","icon":"09d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.73,"sunset":1515074900},"id":703448,"name":"Kiev","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.49,"lat":50.58},"weather": {"id":300,"main":"Drizzle","description":"сыро","icon":"09d"},{"id":701,"main":"Mist","description":"туман","icon":"50d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.22,"sunset":1515074866},"id":688723,"name":"Vyshhorod","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.52,"lat":50.43},"weather": {"id":701,"main":"Mist","description":"туман","icon":"50d"},{"id":300,"main":"Drizzle","description":"сыро","icon":"09d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.73,"sunset":1515074900},"id":703448,"name":"Kiev","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.52,"lat":50.43},"weather": {"id":701,"main":"Mist","description":"туман","icon":"50d"},{"id":300,"main":"Drizzle","description":"сыро","icon":"09d"} ,"baure":1005,"humidity":93,"temp_min":4,"temp_max":4},"visibility":8000,"wind":{"speed":2,"deg":160},"clouds":{"all":90},"dt":1515054600,"sys":{"type":1,"id":7358,"message":0.73,"sunset":1515074900},"id":703448,"name":"Kiev","cod":200}
    parseObject() failed
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.52,"lat":50.43},"weather": {"id":701,"main":"Mist","description":"туман","icon":"50d"} ,"base":"stations","main":{"temp":4.32,"pressure":1005,"humidity":86,"temp_min":4,"temp_max":5},"visibility":9000,"wind":{"speed":2,"deg":180},"clouds":{"all":90},"dt":1515056400,"sys":{"type":1,"id":7358,"message":0.0022,"country":"UA","sunrise":1515045473,"sunset":1515074901},"id":703448,"name":"Kiev","cod":200}
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.49,"lat":50.58},"weather": {"id":701,"main":"Mist","description":"туман","icon":"50d"} ,"base":"stations","main":{"temp":4.33,"pressure":1005,"humidity":86,"temp_min":4,"temp_max":5},"visibility":9000,"wind":{"speed":2,"deg":180},"clouds":{"all":90},"dt":1515056400,"sys":{"type":1,"id":7358,"message":0.0041,"country":"UA","sunrise":1515045521,"sunset":1515074867},"id":688723,"name":"Vyshhorod","cod":200}
    Attempting MQTT connection...connected

    connecting to api.openweathermap.org
    {"coord":{"lon":30.52,"lat":50.43},"weather": {"id":701,"main":"Mist","description":"туман","icon":"50d"} ,"base":"stations","main":{"temp":4.32,"pressure":1005,"humidity":86,"temp_min":4,"temp_max":5},"visibility":9000,"wind":{"speed":2,"deg":180},"clouds":{"all":90},"dt":1515056400,"sys":{"type":1,"id":7358,"message":0.0033,"country":"UA","sunrise":1515045473,"sunset":1515074901},"id":703448,"name":"Kiev","cod":200}
    Attempting MQTT connection...connected
     
  6. IvanUA

    IvanUA Гик

    Ну на самом деле это всего лишь запрос для двух городов на погоду и прогноз на завтра.
    Тем более что они таки разрешают до 60 запросов в час
     
  7. big_alex

    big_alex Нерд

    Скорее в минуту
     
    IvanUA нравится это.
  8. saha74

    saha74 Нерд

    'D3' was not declared in this scope
    Компилятор ругается на это, как поправить?

    OneWire ds(D3); // DS18B20 подключен к 10 пину (резистор на 4.7к обязателен)
     
  9. big_alex

    big_alex Нерд

    Выбрать плату NodeMCU, если выбрана Generic ESP8266 - OneWire ds(0);
     
  10. IvanUA

    IvanUA Гик

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

    Еще как вариант выводить сохраненный прогноз, но тогда будет не понятна "свежесть" этих данных.... разве что еще и сделать проверку на "свежесть"))))))
     
  11. big_alex

    big_alex Нерд

    Второй день полет нормальный, обновил библиотеку Json и откатил систему на OPI zero, на ней OpenHAB и wifi в режиме АР, а то после обновлений проц стал теплей и вайфай отваливается периодически.
     
  12. big_alex

    big_alex Нерд

    Заметил что отрицательная температура на улице выводится только от -1 градуса, если -0.8 то выводится с плюсом. Сделал костылик, добавил t5
    Код (C++):
    int t1=0, t2=0, t3=0, t4=0, t5=0;


    if(String(topic)=="Ulica/temp"){                                                      //
        t3=0;                                                                               //
        t4=0;                                                                               //
        if((payload[0]>=48&&payload[0]<58)||payload[0]==45){                                //
          if(payload[0]==45){                                                               //
            t5 = -1;
            if(payload[1]>=48&&payload[1]<58){                                              //
              t3=payload[1]-48;                                                             //
              if(payload[2]>=48&&payload[2]<58){                                            //
                t3=t3*10+(payload[2]-48);                                                   //
              }                                                                             //
              t3=t3*-1;                                                                     //
            }                                                                               //
            if(payload[3]==46){                                                             //
              if(payload[4]>=48&&payload[4]<58) t4=payload[4]-48;                           //
            }                                                                               //
            if(payload[2]==46){                                                             //
              if(payload[3]>=48&&payload[3]<58) t4=payload[3]-48;                           //
            }                                                                               //
          }                                                                                 //
          else{                                                                             //
            t5 = 1;
            t3=payload[0]-48;                                                               //
            if(payload[1]>=48&&payload[1]<58){                                              //
              t3=t3*10+(payload[1]-48);                                                     //
              if(payload[2]==46){                                                           //
                if(payload[3]>=48&&payload[3]<58) t4=payload[3]-48;                         //
              }                                                                             //
            }                                                                               //
            if(payload[1]==46){                                                             //
              if(payload[2]>=48&&payload[2]<58) t4=payload[2]-48;                           //




    void showSimpleTempU(){                                                                 //
      dx=dy=0;                                                                              //
      clr();                                                                                //
      showDigit((t5<0?16:15), 0, dig5x8rn);                                                 //
     
    IvanUA нравится это.
  13. IvanUA

    IvanUA Гик

    Да действительно есть такой глюк.
    Если вы добавили t5 как маркер отрицательного значения то хранить в t3 знак уже не обязательно.
    Соответственно код упрощается))))
    Код (C++):
        t3=0;
        t4=0;
        if((payload[0]>=48&&payload[0]<58)||payload[0]==45){
          if(payload[0]==45){
            t5 = -1;
            if(payload[1]>=48&&payload[1]<58){  
              t3=payload[1]-48;
              if(payload[2]>=48&&payload[2]<58){
                t3=t3*10+(payload[2]-48);
              }  
            }
            if(payload[3]==46){
              if(payload[4]>=48&&payload[4]<58) t4=payload[4]-48;
            }
            if(payload[2]==46){
              if(payload[3]>=48&&payload[3]<58) t4=payload[3]-48;
            }
          } else {
            t5 = 1;
            t3=payload[0]-48;
            if(payload[1]>=48&&payload[1]<58){
              t3=t3*10+(payload[1]-48);
              if(payload[2]==46){
                if(payload[3]>=48&&payload[3]<58) t4=payload[3]-48;
              }    
            }
            if(payload[1]==46){
              if(payload[2]>=48&&payload[2]<58) t4=payload[2]-48;
            }
          }
        }


    void showSimpleTempU(){
      dx=dy=0;
      clr();
      showDigit((t5<0?16:15), 0, dig5x8rn);
      if(t3>=10) showDigit(t3/10, 4, dig5x8rn);
      showDigit(t3%10, 10, dig5x8rn);
     
    big_alex нравится это.
  14. ПетрЧ

    ПетрЧ Нерд

    Вы не могли бы добавить схему подключения в 1 пост темы. Спасибо

    зы. Подключился по адресу 192.168.4.1
    Ввожу название своей точки доступа ,ввожу пароль и вот на пароле затык.
    Рамка вокруг поля ввода становится красной и снизу бкгущая строка. "Пожалуста.используйте требуемый формат" хотя пароль изначально правильный.Может в вашей прошивке стоит ограничение на кол-во символов ?
     
    Последнее редактирование: 17 янв 2018
  15. obuhanoe

    obuhanoe Гик

    Как раз разбираюсь с данным проектом.
    Пароль должен содержать минимум 8, максимум 15 символов.
    HTML:
    <input id="password" value="{{password}}" pattern=".{8,15}" onfocus="this.type='text'" type="password" class="form-control" placeholder="Пароль">
     
  16. obuhanoe

    obuhanoe Гик

    Автор может пояснить, как в анимированных часах реализован метод миганием двоеточий.
    Сижу разбираюсь, но пока что-то с трудом понимаю.
     
  17. Deniskyn

    Deniskyn Гик

    Отвечу за автора =)
    [​IMG][​IMG]
    или так
    [​IMG][​IMG]

    У вас что то не так с паролем от Wi-Fi...

    PS.
    У меня матрица работает от 5V
     
  18. ПетрЧ

    ПетрЧ Нерд

    спасибо )я прошивался бинарником 5.5
     
  19. Deniskyn

    Deniskyn Гик

    Какое у вас тип шифрования и длинна пароля?
     
  20. ПетрЧ

    ПетрЧ Нерд

    aes wpa2 20 символов.
    обошел эту неприятность создав гостевую точку и сократив длину пароля.
    из хотелок: возможность убрать показ курса валют и прогноз погоды "на завтра" в ночное время.Ну и перевод на русский язык. )
     
    Последнее редактирование: 17 янв 2018