Arduino JSON
Tomáš Koželuh
mr.death na ipq.cz
Středa Září 14 18:17:03 CEST 2022
Nebylo by lepší nějaký OrangePi/RPi a parsovat json tam přímo třeba přes PHP? Osobně si myslím, že to půjde jednodušeji, navíc tam může být historie nebo cokoliv.
-----Original Message-----
From: Hw-list <hw-list-bounces na list.hw.cz> On Behalf Of Jan Půhoný
Sent: Wednesday, September 14, 2022 3:56 PM
To: HW-news <hw-list na list.hw.cz>
Subject: Arduino JSON
Dobré odpoledne,
hraju si tady s ESP32 a snažím se vyčíst data z jednoho senzoru (z toho PM2,5, o kterém jsme tady před časem mluvili). Do teď jsem to dělal přes jejich cloudové API, ale teď to chci mít napřímo na IP adresu senzoru ve vnitřní síti.
Vrací mi to takovýto json:
{"SensorId":"XXXXXX","DateTime":"2022/09/14T13:22:13z","Geo":"PurpleAir-4ab3","Mem":19696,"memfrag":19,"memfb":15984,"memcs":824,"Id":6086,"lat":50.010101,"lon":16.244499,"Adc":0.00,"loggingrate":15,"place":"inside","version":"7.00","uptime":369517,"rssi":-62,"period":120,"httpsuccess":15372,"httpsends":15493,"hardwareversion":"2.0","hardwarediscovered":"2.0+BME280+PMSX003-A","current_temp_f":86,"current_humidity":37,"current_dewpoint_f":57,"pressure":964.20,"p25aqic":"rgb(95,238,0)","pm2.5_aqi":36,"pm1_0_cf_1":6.17,"p_0_3_um":1070.64,"pm2_5_cf_1":8.59,"p_0_5_um":344.21,"pm10_0_cf_1":10.20,"p_1_0_um":58.06,"pm1_0_atm":6.17,"p_2_5_um":4.54,"pm2_5_atm":8.59,"p_5_0_um":1.99,"pm10_0_atm":10.20,"p_10_0_um":1.19,"pa_latency":474,"response":201,"response_date":1663161645,"latency":1789,"key1_response":200,"key1_response_date":1663161640,"key1_count":132515,"ts_latency":648,"key2_response":200,"key2_response_date":1663161642,"key2_count":132546,"ts_s_latency":616,"key1_response_b":200,"key1_response_date_b":1663161643,"key1_count_b":132566,"ts_latency_b":603,"wlstate":"Connected","status_0":2,"status_1":2,"status_2":2,"status_3":2,"status_4":2,"status_5":2,"status_6":2,"status_7":0,"status_8":2,"status_9":0,"ssid":"puhy_iot"}
a já se snažím z toho dostat jednotlivé hodnoty. Zkoušel jsem něco jako:
http.begin("http://IP_ADRESA_SENZORU/json); // HTTP
int httpCode = http.GET();
// httpCode will be negative on error
if (httpCode > 0) {
// file found at server
if (httpCode == HTTP_CODE_OK) {
String response = http.getString();
JSONVar myObject = JSON.parse(response);
int PM2_5 = atoi(myObject["pm2.5_aqi"]);
response = "";
http.end();
return PM2_5;
}
} else {
http.end();
return httpCode;
}
Problém je na tomto řádku:
int PM2_5 = atoi(myObject["pm2.5_aqi"]);
jak z toho dostanu hodnotu int pm2.5_aqi ?
Díky,
Honza Půhoný
Další informace o konferenci Hw-list