#include <LiquidCrystal_I2C.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ArduinoHttpClient.h>
#include <ArduinoJson.h>
#define SENSORDATA_JSON_SIZE (JSON_OBJECT_SIZE(500))
char ssid[] = "iptime";
char pass[] = "";
const char http_site[] = "openapi.seoul.go.kr";
const int http_port = 8088;
WiFiClient client;
HttpClient httpClient = HttpClient(client, http_site, http_port);
LiquidCrystal_I2C lcd(0x27,16,2); //LCD address : 0x27
void setup()
{
Serial.begin(115200);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
lcd.init();
lcd.backlight();
}
void loop()
{
httpClient.get("/sample/json/RealtimeCityAir/1/5/");
int statusCode = httpClient.responseStatusCode();
Serial.println(statusCode);
if(statusCode == 200) {
String response = httpClient.responseBody();
StaticJsonBuffer<SENSORDATA_JSON_SIZE> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(response);
root.prettyPrintTo(Serial);
if (root.success()) {
JsonArray& rows = root["RealtimeCityAir"]["row"].asArray();
int size = rows.size();
JsonObject& row = rows.get(size-1); //last one
float pm10 = row["PM10"]; //미세먼지
float ppm = row["O3"]; //오존
lcd.setCursor(0, 0);
lcd.print("Dust:");
lcd.print(pm10);
lcd.print(" ug/m2");
lcd.setCursor(0, 1);
lcd.print(" O3 :");
lcd.print(ppm);
lcd.print(" ppm");
}
}
delay(30*60*1000);
}
▼
강의자료
▼
▼
