Доброго времени суток, я новичек ..
Что не получается:
Скетч делает запрос погоды с api.openweathermap.org
Не получается присвоить переменной из структуры (struct) значение из json ответа , а конкретно название города..
Все остальные значения в структуре нормально присваиваются, непонятки именно с присвоением названия города
Скетч полностью
Ответ в json виде
Что не получается:
Скетч делает запрос погоды с api.openweathermap.org
Не получается присвоить переменной из структуры (struct) значение из json ответа , а конкретно название города..
Все остальные значения в структуре нормально присваиваются, непонятки именно с присвоением названия города
Скетч полностью
C++:
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
const char* ssid = "ssid";
const char* password = "000000";
const char* host = "api.openweathermap.org";
String line;
typedef struct {
String citiNames;
float temperatura;
float atmosDavlenie;
int vlajnost;
float scorostVetra;
int naprovVetra;
} structPogody;
structPogody parametrPogody;
void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
delay(200);
jsonGet();
}
void loop() {
/// отправка в Serial
Serial.println();
//String name = parametrPogody.citiNames; // достаем имя,
Serial.print("name:");
Serial.println(parametrPogody.citiNames);
float tempK = parametrPogody.temperatura ; // достаем температуру из структуры main
float tempC = tempK - 273.15; // переводим кельвины в цельси
Serial.print("temp: ");
Serial.print(tempC); // отправляем значение в сериал
Serial.println(" C");
int pressurehPa = parametrPogody.atmosDavlenie;
float pressure = pressurehPa / 1.333;
Serial.print("pressure: ");
Serial.print(pressure);
Serial.println(" mmHc");
int humidity = parametrPogody.vlajnost;
Serial.print("humidity: ");
Serial.print(humidity);
Serial.println(" %");
float windspeed = parametrPogody.scorostVetra;
Serial.print("wind speed: ");
Serial.print(windspeed);
Serial.println(" m/s");
int winddeg = parametrPogody.naprovVetra;
Serial.print("wind deg :");
Serial.println(winddeg);
Serial.println();
Serial.println();
delay(60000);
}
void jsonGet() {
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
while (!client.connect(host, httpPort)) {
Serial.println("connection failed");
delay(5000);
}
if (client.connected()) {
client.println("GET /data/2.5/weather?id=520555&appid=957711c01c891444d306d699911a722e HTTP/1.1");
client.println("Host: api.openweathermap.org");
client.println("Connection: close");
client.println();
}
// wait for data to be available
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
timeout = millis();
}
}
// Read all the lines of the reply from server and print them to Serial
while (client.available()) {
line = client.readStringUntil('\r');
}
Serial.println(line);
int dlina = line.length();
Serial.println(dlina);
StaticJsonDocument<500> docJson; // Создаем буфер
if(deserializeJson(docJson, line)) Serial.println("deserialize OK!");
parametrPogody.citiNames = (const char*)docJson["name"];
parametrPogody.temperatura = docJson["main"]["temp"];
parametrPogody.atmosDavlenie = docJson["main"]["pressure"];
parametrPogody.vlajnost = docJson["main"]["humidity"];
parametrPogody.scorostVetra = docJson["wind"]["speed"];
parametrPogody.naprovVetra = docJson["wind"]["deg"];
}
JSON:
{"coord":{"lon":44,"lat":56.33},"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04d"}],"base":"stations","main":{"temp":272.08,"feels_like":268.39,"temp_min":272.04,"temp_max":272.15,"pressure":1013,"humidity":92},"visibility":10000,"wind":{"speed":2,"deg":290},"clouds":{"all":75},"dt":1578737654,"sys":{"type":1,"id":9037,"country":"RU","sunrise":1578720715,"sunset":1578747053},"timezone":10800,"id":520555,"name":"Nizhniy Novgorod","cod":200}
Вложения
-
3.6 KB Просмотры: 4