Arduino JSON

Jan Půhoný konference na puhy.cz
Středa Září 14 15:56:23 CEST 2022


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ší část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20220914/84640f09/attachment.htm>


Další informace o konferenci Hw-list