[C#] DATA.go.kr 에서 미세먼지 정보를 얻어서 값을 출력하는 프로그램
2023. 5. 1. 21:46ㆍIT/C#
안녕하세요. 쿠루가이입니다.
오늘은 C# 언어로 DATA.go.kr 에서 미세먼지 정보를 얻어서 값을 출력하는 프로그램을 소개해볼까 합니다.
JSON형식으로 데이터를 얻기 위해서는 인증키가 필요합니다. DATA.go.kr에 접속하셔서 인증키를 발급받은 신 후, 아래와 같은 코드를 사용하여 API를 호출할 수 있습니다.
using System;
using System.Collections.Generic;
using System.Net.Http;
using Newtonsoft.Json;
public class Body
{
public int totalCount { get; set; }
public List<Item> items { get; set; }
public int pageNo { get; set; }
public int numOfRows { get; set; }
}
public class Header
{
public string resultMsg { get; set; }
public string resultCode { get; set; }
}
public class Item
{
public string so2Grade { get; set; }
public object coFlag { get; set; }
public string khaiValue { get; set; }
public string so2Value { get; set; }
public string coValue { get; set; }
public object pm25Flag { get; set; }
public object pm10Flag { get; set; }
public string pm10Value { get; set; }
public string o3Grade { get; set; }
public string khaiGrade { get; set; }
public string pm25Value { get; set; }
public object no2Flag { get; set; }
public string no2Grade { get; set; }
public object o3Flag { get; set; }
public string pm25Grade { get; set; }
public object so2Flag { get; set; }
public string dataTime { get; set; }
public string coGrade { get; set; }
public string no2Value { get; set; }
public string pm10Grade { get; set; }
public string o3Value { get; set; }
}
public class Response
{
public Body body { get; set; }
public Header header { get; set; }
}
public class Root
{
public Response response { get; set; }
}
class Program
{
static async System.Threading.Tasks.Task Main(string[] args)
{
string apiKey = "여기에_인증키를_입력하세요";
string stationName = "측정소_이름";
var httpClient = new HttpClient();
var url = $"https://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?serviceKey={apiKey}&returnType=json&numOfRows=1&pageNo=1&stationName={stationName}&dataTerm=DAILY&ver=1.0";
var response = await httpClient.GetAsync(url);
var responseBody = await response.Content.ReadAsStringAsync();
var apiResponse = JsonConvert.DeserializeObject<Root>(responseBody);
if (apiResponse?.response != null && apiResponse.response.body.items.Count > 0)
{
var fineDust = apiResponse.response.body.items[0];
Console.WriteLine($"미세먼지 농도: {fineDust.pm10Value} μg/m³");
Console.WriteLine($"초미세먼지 농도: {fineDust.pm25Value} μg/m³");
}
else
{
Console.WriteLine("API 응답이 올바르지 않습니다.");
}
}
}
위 코드에서 apiKey 변수에 발급받은 인증키를 입력하고, stationName 변수에는 원하는 측정소의 이름을 입력하면 됩니다. 코드를 실행하면 해당 측정소의 최신 미세먼지 농도 정보를 출력합니다. (2023-05-01 기준)

참고로, 이 코드를 실행하려면 Newtonsoft.Json NuGet 패키지가 필요합니다. NuGet 패키지 관리자에서 Newtonsoft.Json을 검색하여 설치하면 됩니다.
이걸 가지고 MQTT로 데이터를 보내면, HomeAssistant에서도 이용 가능할 것으로 생각이 됩니다만 오늘은 여기까지!^^
'IT > C#' 카테고리의 다른 글
Entity Framework Core로 DB제어하기(dotnet core 2.1 환경) (0) | 2020.04.20 |
---|---|
라즈베리파이에 도커를 사용하여 닷넷코어 설치하기 (0) | 2020.04.09 |
[XAMARIN] Iconpack (0) | 2019.06.15 |
[XAMARIN] Entry, Editor, SearchBar DatePicker, TimePicker 사용 예제 (0) | 2019.06.08 |
[XAMARIN] Resource Dictionary 사용하기 (0) | 2019.06.02 |
[XAMARIN] ContentView 만들기와 Tapped 이벤트 처리 (0) | 2019.05.29 |
[XAMARIN] App Life cycle과 환경 변수 (0) | 2019.05.25 |
[XAMARIN] Button 이벤트 (0) | 2019.05.25 |