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

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

?

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

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

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

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

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

    saha74 Гик

    Что-то я не как не могу запустить погоду всё один в один как раньше писали. Может что-то надо делать ещё на сайте кроме получения ключа?
     
  2. IvanUA

    IvanUA Гуру

    Строка 1033
    Сделайте как здесь
    Код (C++):
      while(ESPclient.connected() && ESPclient.available()) {
        char c = ESPclient.read();
        if(c == '{') startJson = true;
        line += c;
      }
    Что теперь приходит в line?
     
  3. IvanUA

    IvanUA Гуру

    Если вы поддтягивающий резистор садите на землю, то кнопку надо садить на +3,3В
     
  4. saha74

    saha74 Гик

    Не что не изменилось всё тоже самое
    line =
    Parse weather forecast - FAILED!!!
    line2=
    Parse weather forecast for tomorrow - FAILED!!!
     
  5. Seaven

    Seaven Нерд

    У меня тоже. При этом если я в строке браузера набираю:
    http://api.apixu.com/v1/current.json?key=317f385b5f3e493bbb9162708181ХХХ&q=Perm,
    то ответ приходит нормальный.
    Хотел попробовать пакеты половить wireshark-ом, но роутер, видимо, с wi-fi напрямик в pppoe отправляет, не получается у меня :(
     
  6. ИгорьК

    ИгорьК Гуру

    Коллеги! Сервис Apixu настолько дружелюбен, что ловля пакетов - это через край.

    В целом, если есть проблемы отражения прогноза, она может быть вызвана комбинацией всего двух причин:
    • ошибка сервера
    • ошибка парсинга
    Сервер предоставляет все возможности проверки своей работы и то, чего вы получаете в обмен на свой ключ.

    Если в браузере вы получили что-то типа
    upload_2018-11-12_9-26-12.png
    - значит все в порядке.

    Как сформировать запрос в строке? Получите его на странице Dashbord:

    upload_2018-11-12_9-52-32.png

    На странице Interactive вы тоже можете проверить работоспособность сервера и вашего ключа:

    upload_2018-11-12_9-32-31.png


    Остальное - проблемы в коде.
     
    Последнее редактирование: 12 ноя 2018
  7. Seaven

    Seaven Нерд

    Дак никто и не спорит :) Просто я тут на форуме не один такой "глупый": паять научился, а разобраться в чужом коде не могу, вот и задаю вопросы.
    А если по теме, то до парсинга дело не доходит: строка получается пустой. На мой взгляд, чтение выполняется по образу и подобию, как и openweathermap, хотя я далеко не все в коде понимаю. Спасибо за ответы!
     
    Юра 80 нравится это.
  8. Seaven

    Seaven Нерд

    В догонку: изменил задержку в строке 1024: "delay(50);", и один раз пролетело вот такое:

    12:25:46 Getting weather forecast for City Perm...
    w.
    w.
    line =HTTP/1.1 200 OK
    Cache-Control: private
    Content-Type: application/json; charset=utf-8
    X-Powered-By: ASP.NET
    access-control-allow-origin: *
    access-control-allow-headers: content-type
    Date: Mon, 12 Nov 2018 07:25:46 GMT
    Connection: close
    Content-Length: 634

    {"location":{"name":"Perm","region":"Perm'","country":"Russia","lat":58.0,"lon":56.25,"tz_id":"Asia/Yekaterinburg","localtime_epoch":1542007547,"localtime":"2018-11-12 12:25"},"current":{"last_updated_epoch":1542006909,"last_updated":"2018-11-12 12:15","temp_c":-7.0,"te
    Parse weather forecast - FAILED!!!
    line2=
    Parse weather forecast for tomorrow - FAILED!!!

    Сам я, конечно, никогда в этом не разберусь :)
     
  9. ИгорьК

    ИгорьК Гуру

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

    На мой взгляд, часы перегружены "добром" и я бы на вашем месте уговорил Ивана упростить их.
    Вот лично вам что нужно от часов?
     
  10. Seaven

    Seaven Нерд

    И простой, и сложный вопрос :) Как подсказывает мой опыт, домашняя электроника должна быть удобной. У меня есть экранчик OLED, управляемый Majordomo, встроенный в выключатель, по кругу показывает разную информацию, дак вот оказалось, что температуру я на нем не смотрю - долго ждать. Пробки в городе иногда смотрю - получается быстрее, чем загружать яндекс.пробки. Думаю, что лично мне бы было достаточно индикации времени, и, возможно, управление GET-запросами, чтобы просто управлять из Majordomo, не используя MQTT.
    С другой стороны, весь существующий функционал делает часы замечательным подарком людям, у которых "умного дома" нет и замечательно демонстрируют приход IoT в наши квартиры :)
     
  11. ИгорьК

    ИгорьК Гуру

    Дайте мне таблетку от жадности! Да побольше, побольше! :)
     
  12. SergeiL

    SergeiL Оракул Модератор

    Можете рассказать поподробнее про данный вариант выключателя к примеру в этой теме
    Я так понимаю это что-то из решений ab-log ? Есть фото?
     
  13. IvanUA

    IvanUA Гуру

    Вот именно в этот раз вам прилетело, то что нужно.
    Дело в том что данный сервис не просто присылает JSON ответ на ваш запрос. Он еще добавляет вначале html ответ - где простыми словами можно просмотреть все ли в порядке с вашим запросом.
    К примеру вот из этого можно узнать
    Код (C++):
    HTTP/1.1 200 OK
    Cache-Control: private
    Content-Type: application/json; charset=utf-8
    X-Powered-By: ASP.NET
    access-control-allow-origin: *
    access-control-allow-headers: content-type
    Date: Mon, 12 Nov 2018 07:25:46 GMT
    Connection: close
    Content-Length: 634
     
    код 200 = все ОК.
    То есть дальше идет уже сам JSON ответ с погодой.
    Но вот наша библиотека умеет распарсивать только json данные.
    По этому в том цикле что я вам писал изменить есть строка.
    Код (C++):
    if(c == '{') startJson = true;
        if(startJson) line += c;
    Она ищет первую фигурную скобку, и меняет маркер startJson. После этого в переменную line мы получаем уже нормальную json строку, которую может нормально распарсить библиотека.

    Что сделали вы.
    Код (C++):
      while(!ESPclient.available() && repeatCounter < 10) {
        delay(500);
        if(printCom) Serial.println("          w.");
        repeatCounter++;
      }
    Вот здесь мы проверяем получили ли ответ от сервера, и если не получили то выводим в порт "w." ждем пол секунды.... И так 10 попыток, то есть ждем 5 сек, если ответа нет, то пишем что погода не получена....
    Вы же уменьшили время ожидания ответа сервера с 500 мс до 50 мс...
    И получили ответ...
    Я бы понял если бы вы увеличили это время... Короче.... (это жжжж тут не спроста) что то есть, и надо думать как с этим бороться....

    ПС.... я только не понял одного. Вы когда не получаете вообще ничего от сервера - у вас в мониторе порта есть 10 букв "w." ?
     
  14. saha74

    saha74 Гик

    Нет только одна "w."
     
  15. fander

    fander Нерд

    Иван,попрвьте пожалуйста отображение отрицательных температур с 18b20 и с mqtt.Спасибо!
     
  16. anatolyj

    anatolyj Нерд

    Сегодня залил прошивку LED_clock_weath_v25.10.2018 и подключил TEA5767 ужасный писк из динамиков
     
  17. IvanUA

    IvanUA Гуру

    Делайте развязку по питанию (по массе тем более)..
     
  18. IvanUA

    IvanUA Гуру

    А вы прошивку компилируете или заливаете бинарник.
    Если компилируете, то попробуйте залить бинарник. Если все будет ок, ищите проблему в библиотеках.
    Если заливаете бинарник будем искать причину)))
     
    Seaven нравится это.
  19. IvanUA

    IvanUA Гуру

    В последней версии прошивки я поправлял вывод отрицательных температур для mqtt и для bmp датчика. У вас последняя прошивка, если так, то 18b20 - это внутренний или внешний датчик (дом или улица)?
     
  20. fander

    fander Нерд

    18б20-наружный,улица.Прошивка последняя.