17-02-2022, 23:43
Witam
Poszukuję rozwiązania problemu z poprawnym czytaniem API z danymi jakości powietrza.
Pierwsze pobranie danych wygląda tak:
Connected to WiFi network with IP Address: 192.168.0.179
Test PM10:0.00
Test SO2:4.35
Test No2:3.99
Test PM10:10.40
Test SO2:4.35
Test No2:3.99
a powinno wyglądać:
Connected to WiFi network with IP Address: 192.168.0.179
Test PM10:4.35
Test SO2:3.99
Test No2:10.40
Test PM10:4.35
Test SO2:3.99
Test No2:10.40
Jak to naprawić?
Poszukuję rozwiązania problemu z poprawnym czytaniem API z danymi jakości powietrza.
Pierwsze pobranie danych wygląda tak:
Connected to WiFi network with IP Address: 192.168.0.179
Test PM10:0.00
Test SO2:4.35
Test No2:3.99
Test PM10:10.40
Test SO2:4.35
Test No2:3.99
a powinno wyglądać:
Connected to WiFi network with IP Address: 192.168.0.179
Test PM10:4.35
Test SO2:3.99
Test No2:10.40
Test PM10:4.35
Test SO2:3.99
Test No2:10.40
Jak to naprawić?
Kod:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include <ArduinoJson.h>
const char *ssid = "SSID";
const char *password = "PASS";
// Serwer API
char serverPM[] = "http://api.gios.gov.pl/pjp-api/rest/data/getData/828"; // 828
char serverSO[] = "http://api.gios.gov.pl/pjp-api/rest/data/getData/831"; // 831
char serverNO[] = "http://api.gios.gov.pl/pjp-api/rest/data/getData/824"; // 824
float Pm10;
float So2;
float No2;
String payload;
WiFiClient client;
HTTPClient http;
StaticJsonDocument<200> docPM;
StaticJsonDocument<200> docSO;
StaticJsonDocument<200> docNO;
void setup()
{
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
}
// Podprogramy
void apiPM10()
{ // Zapytanie do API z PM10 Inowrocław
http.begin(client, serverPM);
payload = http.getString();
DeserializationError error = deserializeJson(docPM, payload);
int httpResponseCode = http.GET();
Pm10 = docPM["values"][1]["value"];
Serial.print("Test PM10:");
Serial.println(Pm10);
}
void apiSO2()
{ // Zapytanie do API z SO2 Inowrocław
http.begin(client, serverSO);
payload = http.getString();
DeserializationError error = deserializeJson(docSO, payload);
int httpResponseCodeSO = http.GET();
So2 = docSO["values"][1]["value"];
Serial.print("Test SO2:");
Serial.println(So2);
}
void apiNO2()
{ // Zapytanie do API z NO2 Inowrocław
http.begin(client, serverNO);
payload = http.getString();
DeserializationError error = deserializeJson(docNO, payload);
int httpResponseCodeNO = http.GET();
No2 = docNO["values"][1]["value"];
Serial.print("Test No2:");
Serial.println(No2);
}
void loop()
{
apiPM10();
delay(1000);
apiSO2();
delay(1000);
apiNO2();
delay(5000);
}