Arduino JSON

Miroslav Mraz mrazik na volny.cz
Čtvrtek Září 15 15:21:10 CEST 2022


Jen mi nešlo do hlavy, proč to původní nefungovalo. Ze zdrojáků té 
knihovny je to poměrně zřejmé - ty přetížené operátory v JSONVar si 
interně kontrolují typ proměnné a pokud je to číslo vrátí pro operator 
const char* () nullptr. Takže to samo sebou na atoi(nullptr) spadlo. Je 
na tom vidět, proč má hodně lidí k C++ odpor. Dají se s tím dělat 
kouzla, ale čert aby pochopil, jak to původní autor vlastně myslel.

Mrazík

On 15. 09. 22 9:41, Jan Půhoný wrote:
> 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://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 
> <mailto: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 <http://www.HW.cz>
>      >> Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>      >> http://list.hw.cz/mailman/listinfo/hw-list
>     <http://list.hw.cz/mailman/listinfo/hw-list>
>      > _______________________________________________
>      > HW-list mailing list  -  sponsored by www.HW.cz <http://www.HW.cz>
>      > Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>      > http://list.hw.cz/mailman/listinfo/hw-list
>     <http://list.hw.cz/mailman/listinfo/hw-list>
>     _______________________________________________
>     HW-list mailing list  -  sponsored by www.HW.cz <http://www.HW.cz>
>     Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>     http://list.hw.cz/mailman/listinfo/hw-list
>     <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ší informace o konferenci Hw-list