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