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

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

?

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

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

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

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

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

    jgupdimon Гик

    Забыл добавить, в России работает? С Праздником, МУЖИКИ!
     
  2. Edval

    Edval Нуб

    На прошивке 23,10,18 работает
    на прошивке 11,11,18 не смог запустить
     
  3. jgupdimon

    jgupdimon Гик

    А на 25?
     
  4. jgupdimon

    jgupdimon Гик

    С праздником всех МУЖИКОВ!!!
     
  5. PravdaFON

    PravdaFON Нерд

    Привет, всем.
    Спасибо автору за проект.

    Подскажите, пожалуйста, почему не могу получить погоду
    в мониторе порта вот такое:
    Код (Text):
    22:40:42  Proba #1   1:30:47
              Proba #2   1:30:48
              Proba #3   1:30:49
    01:30:49  24.02.2019 DW = 1
              Time update OK.
    01:30:49  Getting weather forecast for City Vorkuta...
              w.
    line =
              Parse weather forecast - FAILED!!!
    line2=
              Parse weather forecast for tomorrow - FAILED!!!
     
    ключ есть, в браузере работает...
    Пока матрица приедет - смотрю в порт.
     
    Последнее редактирование: 24 фев 2019
  6. buba911

    buba911 Гик

    А какую прошивку и какой север погоды вы используете?
     
  7. jgupdimon

    jgupdimon Гик

    У меня лично в 25 версии как хочет так и подключается, то есть прогноз, то нет. Ключи менял штук 20. Не знаю в чем причина. Раньше нормально работало все.
     
  8. PravdaFON

    PravdaFON Нерд

    Прошивка: Informer_clock_weath_v22.12.2018 (компилировал сам - без проблем)
    Сервер: api.apixu.com
    На другой прошвике (не из этой темы, но на таком же принципе) пробовал openweathermap.org. Ключ свой, в браузере работает... иногда получает данные, но не может их "парсить"
    вот часть кода:
    Код (C++):

    const char *weatherHost = "api.openweathermap.org";

    void getWeatherData()
    {
      Serial.print("connecting to "); //
      Serial.println(weatherHost);//
      if (client.connect(weatherHost, 80)) {
        client.println(String("GET /data/2.5/weather?id=") + cityID + "&units=metric&appid=" + weatherKey + "&lang="+ weatherLang + "\r\n" +
                    "Host: " + weatherHost + "\r\nUser-Agent: ArduinoWiFi/1.1\r\n" +
                    "Connection: close\r\n\r\n");

      } else {
        Serial.println("connection failed");
        return;
      }
      String line;

      while (client.connected())
        {
          if (client.available())
          {

            char c = client.read();
            if (c == '[' || c == ']') c = ' ';
            line += c;
            Serial.println("client.connected()");//

            String line = client.readStringUntil('\n');
            Serial.println(line); // смотрим получаемые данные
          }
        }

      client.stop();

      DynamicJsonBuffer jsonBuf;
      JsonObject &root = jsonBuf.parseObject(line);
      if (!root.success())
      {
        Serial.println("parseObject() failed");
        return;
      }

    вот ответ:
    Код (Text):

    Getting data ...
    connecting to api.openweathermap.org
    {"coord":{"lon":56.04,"lat":54.77},"weather":[{"id":600,"main":"Snow","description":"небольшой снегопад","icon":"13d"}],"base":"stations","main":{"temp":-7,"pressure":1017,"humidity":85,"temp_min":-7,"temp_max":-7},"visibility":2100,"wind":{"speed":6,"deg":190},"clouds":{"all":90},"dt":1550912400,"sys":{"type":1,"id":9050,"message":0.0045,"country":"RU","sunrise":1550891995,"sunset":1550929163},"id":479561,"name":"Ufa","cod":200}
    !client.available()
    parseObject() failed

     
     
  9. jgupdimon

    jgupdimon Гик

    А подробнее?
     
  10. PravdaFON

    PravdaFON Нерд

    ArduinoJson v.5.13
    Что именно подробнее?
    Не хочется засорять тему длинными постами...
     
  11. jgupdimon

    jgupdimon Гик

    Какую версию ArduinoJson использовать, чтобы парсить погоду? Спасибо.
     
  12. PravdaFON

    PravdaFON Нерд

    Обращались не ко мне... понятно.
    Извините.

    Жду помощи от спецов, очень жду.
     
  13. ZAZ-965

    ZAZ-965 Гуру

    @PravdaFON, попробуйте добавить в запрос версию протокола HTTP/1.0
    Код (C++):
        client.println(String("GET /data/2.5/weather?id=") + cityID + "&units=metric&appid=" + weatherKey + "&lang="+ weatherLang + " HTTP/1.0\r\n" +
                    "Host: " + weatherHost + "\r\nUser-Agent: ArduinoWiFi/1.1\r\n" +
                    "Connection: close\r\n\r\n");
     
  14. PravdaFON

    PravdaFON Нерд

    Попробовал - не получилось
    Код (Text):
    15:37:14  Getting weather forecast for City Vorkuta...
              w.
    line =
              Parse weather forecast - FAILED!!!
    line2=
              Parse weather forecast for tomorrow - FAILED!!!
     
    А вот этот код с
    http://samopal.pro/led-matrix1/
    https://47mkr.ru/viewtopic.php?t=110
    работает
    Код (C++):
    // Получаем погоду с погодного сервера
    void GetWeather(){
      HTTPClient client;
      String url = W_URL;
      url += "?id=";
      url += W_ID;
      url += "&APPID=";
      url += W_API;
      url += "&units=metric&lang=ru";
      Serial.println(url);//
      client.begin(url);
      int httpCode = client.GET();
      if( httpCode == HTTP_CODE_OK ){
        String httpString = client.getString();
        Serial.println(httpString); //
        ParseWeather(httpString);
      }
      client.end();
    }

    // Парсим погоду
    void ParseWeather(String s){
      DynamicJsonBuffer jsonBuffer;
      JsonObject& root = jsonBuffer.parseObject(s);
      if (!root.success()) {
        Serial.println("Json parsing failed!");
        return;
      }
    // Погода
      tape_weather = W_NAME;
      tape_weather += root["weather"][0]["description"].as<String>();
    // Температура
      tape_weather += ", Температура ";
      int t = root["main"]["temp"].as<int>();
      tape_weather += String(t);
      tape_weather += (char)128;
    // Влажность
      tape_weather += "С, Влажность ";
      tape_weather += root["main"]["humidity"].as<String>();
    // Давление
      tape_weather += "%, Давление ";
      double p = root["main"]["pressure"].as<double>()/1.33322;
      tape_weather += String((int)p);
    // Ветер
      tape_weather += "мм. Ветер ";
      double deg = root["wind"]["deg"];
      if( deg >22.5 && deg <=67.5 )tape_weather += "северо-восточный ";
      else if( deg >67.5 && deg <=112.5 )tape_weather += "восточный ";
      else if( deg >112.5 && deg <=157.5 )tape_weather += "юго-восточный ";
      else if( deg >157.5 && deg <=202.5 )tape_weather += "южный ";
      else if( deg >202.5 && deg <=247.5 )tape_weather += "юго-западный ";
      else if( deg >247.5 && deg <=292.5 )tape_weather += "западный ";
      else if( deg >292.5 && deg <=337.5 )tape_weather += "северо-западный ";
      else tape_weather += "северный ";
      tape_weather += root["wind"]["speed"].as<String>();
      tape_weather += " м/с.    ";
      // Перекодируем из UNICODE
      tape_weather = utf8rus(tape_weather);
      s = "";

      Serial.println(tape_weather);// смотрим погоду
    }
    В чем проблема?
     
    Последнее редактирование: 24 фев 2019
  15. jgupdimon

    jgupdimon Гик

    В 25 версию вставил - не работает. Даже не компилируется.
     
  16. Serg-74

    Serg-74 Нуб

    Я столкнулся с такой же проблемой на плате Wemos D1 mini.
    В коде в 2-х местах убрал "ESPclient.connected() &&"
    while(ESPclient.available()) {
    char c = ESPclient.read();
    if(c == '{') startJson = true;
    if(startJson) line += c;
    }
    После этого заработало. Возможно, что это особенность платы...
     
  17. Greg2002

    Greg2002 Нуб

    Ребята, нужно просто при компилировании в Arduino IDE выставить в менеджере плат версию, не выше 2.40.
    Второе условие - использовать библиотеку Arduino Json не выше 5.3.14 (не бета). После этого в последней версии погода заработает как надо.
     
  18. PravdaFON

    PravdaFON Нерд

    НЕ помогло, спасибо...
    Код (Text):
    15:37:14  Getting weather forecast for City Vorkuta...
              w.
    line =
              Parse weather forecast - FAILED!!!
    line2=
              Parse weather forecast for tomorrow - FAILED!!!
     
  19. PravdaFON

    PravdaFON Нерд

    Посмотрел внимательнее - у меня Arduino Json version: 5.7.2.{build}...
    А на гите последняя Arduino Json to 5.13.4.
    Более старую на гите искать?
     
  20. PravdaFON

    PravdaFON Нерд

    Не могу найти, на гите самая старая
    name=ArduinoJson
    version=5.6.6
    Updated Sep 16, 2016
    Поможете?