Arduino JSON

Jan Půhoný konference na puhy.cz
Čtvrtek Září 15 09:41:41 CEST 2022


Díky všem, takto mi to funguje: pro sensory purpleAir na vnitřní síti:

int getAirQuality(int sensor_id)
{
   if ((WiFi.status() == WL_CONNECTED)) {
        HTTPClient http;
        if(sensor_id==ID_SENSOR_IN){
        http.begin("http://IP_ADDR_IN/json"); // HTTP
        }
        else if (sensor_id== ID_SENSOR_OUT ){
        http.begin("http:// IP_ADDR_OUT/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();
                //Serial.print(response);
                JSONVar myObject = JSON.parse(response);
                int PM2_5 = myObject["pm2.5_aqi"];
                response = "";
                http.end();
                return PM2_5;
            }
        } else {
            http.end();
            return httpCode;
        }
    } else {
        return WiFi.status();
    }
}

Honza Půhoný


čt 15. 9. 2022 v 8:36 odesílatel Pavel Brychta <pavel.brychta na duhasys.eu>
napsal:

> Ale jeste moment - to neni ArduinoJSON knihovna, ale nejaka jina, takze
> nejdriv doporucuju prejit na ArduinoJSON - s ni mam nejlepsi zkusenosti
> co se tyce parsovani i dlouhych dokumentu, popripade per partes parsovani.
>
> Pavel Brychta
>
> Dne 15. 09. 22 v 8:32 Pavel Brychta napsal(a):
> > ... anebo to udelat tak, jak je ArduinoJSON napsane - tedy int PM2_5 =
> > myObject["pm2.5_aqi"].as<int>(); Tedy za predpokladu, ze myObject je
> > objekt typu JSONDocument...
> >
> > Pavel Brychta
> >
> > Dne 14. 09. 22 v 17:03 Miroslav Mraz napsal(a):
> >> Podstatný je typ (JSONVar) a ten je značně polymorfní. Takže podle
> >> kontextu to může být String, const char *, bool, int nebo double.
> >> Patrně by stačilo přiřadit
> >> int PM2_5 = myObject["pm2.5_aqi"];
> >> nebo exaktněji
> >> int PM2_5 = static_cast<int>(myObject["pm2.5_aqi"]);
> >>
> >> Přetěžování operátorů v této podobě je zvěrstvo, hlavně pro toho, kdo
> >> se v tom zas tak moc nevyzná. Nicméně tak jak to bylo původně
> >> napsáno, by to mělo fungovat také, funkce atoi() by měla pobrat jako
> >> argument const char* a vyhodit int hodnotu. Bude to chtít nějaký
> >> debug výpis té proměnné - jestli tam je vůbec něco, nějaký test parseru.
> >>
> >> Mrazík
> >>
> >> On 14. 09. 22 16:17, Jindroush wrote:
> >>> Co je za hodnotu v tom myObject["pm2.5_aqi"]?
> >>> Je to primo int 36 nebo je to retezec "36"?
> >>> Coz bych hledal v dokumentaci toho JSON.parse, jaka je pametova
> >>> reprezentace.
> >>> j.
> >>>
> >>>
> >> _______________________________________________
> >> HW-list mailing list  -  sponsored by www.HW.cz
> >> Hw-list na list.hw.cz
> >> http://list.hw.cz/mailman/listinfo/hw-list
> > _______________________________________________
> > HW-list mailing list  -  sponsored by www.HW.cz
> > Hw-list na list.hw.cz
> > http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20220915/fbb01ba0/attachment.htm>


Další informace o konferenci Hw-list