Парсинг Json через ArduinoJSON 6. Счетчик подписчиков Youtube, погода, курсы валют с банков.
Вставка
- Опубліковано 11 лис 2024
- С помощью библиотеки ArduinоJson 6 на ESP32 делаем парсинг статистики UA-cam, получаем текущую погоду от Openweathermap.org, получаем курсы валют с Privatbank.
Общие принципы десериализации данных в Json формате.
Скетч на гуглдрайве - cutt.ly/3xw2jSV
Полезное видео. Сейчас начинаю изучать JSON, как систему хранения данных настроек на EEPROM.
Информация была полезна! если можно расскажите про работу с json на питоне. спасибо 🙏
Для получения температуры в градусах Цельсия просто добавьте к запросу &units=metric и тогда не нужна математика с пересчетом
Интересно. Я тут для гайверовской лампы пытался прошивку поковырять, там как раз в json сохранялись настройки лампы (прошивка от lakec). Неделю ковырялся, ничего не смог сделать. Попробую еще раз.
Здравствуйте, сразу извиняюсь за свою возможную некомпетентность. Подскажите вы для гугла используете WiFiClientSecure client, if (!client.connect(hostyoutube, 443)) 443 порт значит этот запрос идет по HTTPS (защищенное соединение данные не в открытом виде) верно? Но я в вашем скетче не видел где вы прописываете сертификат, для esp8266 вроде как это нужно делать или для ESP32 для работы через защищенное соединение не нужно дополнительно прописывать сертификаты? Я просто хочу использовать ESP для получения данных со своего веб сервера и не хочется их гонять по http в открытом виде. Был бы очень благодарен вам за ответ.
SSL сертификаты устанавливаются на стороне веб сайта, т.е. сервера. На стороне клиента их установка не нужна. SSL нужен для того, чтобы не подставляли чужие сайты вместо вашего. А вот SSH - это как раз о защите соединения. Но используется SSH на ftp и telnet. Вам не нужно на стороне esp32 esp8266 прописывать сертификат. Но есть еще такое понятие как версии ssl. Есть ssl 1.0, 1.1, 1.2 , есть tls. И старые браузеры не понимают супер новых версий ssl.
@@BootuzDinamontuzПодскажите если сильно не углубляться в детали при использовании ESP32 или esp8266, WiFiClientSecure client; client.connect(hostyoutube, 443); и подобного запроса String request = String("GET /youtube/v3/channels?part=statistics&id=") + CHANNEL_ID + "&key=" + API_KEY+ " HTTP/1.1
" +"Host: " + hostyoutube + "
User-Agent: ESP32/1.1
Connection: close
"; можно ли получить доступ к данным CHANNEL_ID и API_KEY если к примеру перерезать витую пару по которой передается интернет, сунуть в разрыв хаб и с него считать весь трафик.
SSL не отвечает за безопасность соединения. Так что если сильно не углубляться, то да ( очень теоретически). А вот разрезать провод и сунуть в разрыв свой сайт и сказать, что это youtube.com - вот тут как раз SSL и не даст этого сделать.
@@BootuzDinamontuz Большое спасибо за ответы!
Увидел в рекомендациях, очень интересное и полезное видео, но столкнулся с проблемой.
уже всю голову себе сломал. У меня есть скетч с погодой, но писал я его еще на пятомjsone. хотел добавить пару фишек из твоего скетча, но блин не знаю как переделать имеющийся у себя скетч, под шестую версию
Я переделывал, но давно.
тоже по вопросу миграции с пятого на шестой тут оказался, автору спасибо, я в итоге заново под шестой все переписал.
Здравствуйте, сегодня попробовал попробовать ваш скетчь, а именно кусок получения курсов с апи приватбанка. В общем оно у меня не заработало,
if (!client.connect("api.privatbank.ua", 443)) {
Serial.println("connection to api.privatbank.ua");
return;
}
Вот тут всегда на return уходило, собственно заработало после того как я перед этим кодом установил client.setInsecure(); после этого сало работать нормально, я так понимаю это как раз к вопросу отсутствия сертификата. Ну и не понятно чего оно вам апи отдает без client.setInsecure(); а мне не отдает :(
Явно включение секюрности стоит где-то выше в коде, например в предыдущем куске, и из-за этого отдаётся.
Правильно наверно будет сказать, что [ ] это список, { } это массив. Ну или как в Python словарь)
JSON - он от JavaScripta и он верно назвал. Если [ ] то эта array (массив), если { } то эта object (объект).
В Python массив называется списком [ ], другого нет.
super!
Скетч забыл выложить. Выложи, плиз.
Выложил.
Видэо.
В моей деревне говорят видэо.
@@BootuzDinamontuz та я ж не против. Забавно, просто.