기존 데이터를 모두 갈아엎고 - 조금 작성했다 다시 갈아엎고 를 반복하다가
다시 원점에서부터 시작했습니다.
1. 과도한 chatGPT 의존.
제가 코드와 구성을 잘 모르는 채로 대충 맡기니 문제가 있어도 원인을 찾기 어렵고 결과가 제가 원하는 형식대로 나오질 않네요. 구성은 제가 짜고 세부 항목만 따로 물어보면서 코드를 구성해야 할 것 같네요
2. 너무 긴 휴식과 너무 짧은 작업시간
제가 이 프로젝트만 하는게 아닌데다 다른 작업도 하고 가끔 이 프로젝트를 하다 보니 연속성이 없어 자꾸 같은자리에서 맴돌게 됩니다. 코드를 문서화시키고 버전관리를 확실히 해야 할 필요가 있더군요.
3. 문서화 부족.
위에도 썼지만 어느정도 진행된 코드를 나중에 보면 뭔소린지 모르겠습니다. 문서화의 중요성을 다시 한번 느낍니다.
다시 문서를 보고 찬찬히 정리해 봅니다.
단기예보 API
API이름 | API 설명 | 입력 데이터 | 출력 데이 |
getUltraSrtNcst | 초단기실황조회 | serviceKey, numOfRows, pageNo, dataType, base_date, base_time, nx, ny | baseDate, baseTime, category, obsrValue, nx, ny |
getUltraSrtFcst | 초단기예보조회 | serviceKey, numOfRows, pageNo, dataType, base_date, base_time, nx, ny | baseDate, baseTime, category, fcstDate, fcstTime, fcstValue, nx, ny |
getVilageFcst | 단기예보조회 | serviceKey, numOfRows, pageNo, dataType, base_date, base_time, nx, ny | baseDate, baseTime, category, fcstDate, fcstTime, fcstValue, nx, ny |
getFcstVersion | 예보버전조회 | serviceKey, numOfRows, pageNo, dataType, ftype, basedatetime | version, filetype, numOfRows, pageNo, totalCount, resultCode, resultMsg |
입력 데이터와 출력 데이터 설명
단기예보 입출력 데이터
입력 데이터 | 설명 | 출력 데이터 | 설명 |
serviceKey | 공공데이터포털에서 발급받은 인증키 (URL 인코딩 필요). | baseDate | 발표일자. |
numOfRows | 한 페이지 결과 수 (기본값: 10). | baseTime | 발표시각. |
pageNo | 페이지 번호 (기본값: 1). | category | 자료 구분 코드 (TMP, PTY, SKY 등). |
dataType | 응답 자료 형식 (XML 또는 JSON). | obsrValue | 실황 값 (초단기 실황조회에서 사용). |
base_date | 발표일자 (YYYYMMDD). | fcstDate | 예보일자. |
base_time | 발표시각 (HHMM, 초단기 실황: 40분 이후, 초단기/단기 예보: 정각 기준). | fcstTime | 예보시간. |
nx, ny | 예보지점 좌표 (격자 X/Y 좌표). | fcstValue | 예보 값 (해당 코드에 따른 값). |
ftype | 파일 구분 (ODAM, VSRT, SHRT, 예보버전조회에 사용). | version | 예보 버전 (예보버전조회에서 사용). |
basedatetime | 발표 일시 (예보버전조회에 사용, YYYYMMDDHHMM). | filetype | 파일 구분 (ODAM, VSRT, SHRT). |
중기예보 API
API 이름 | API 설명 | 입력 데이터 | 출력 데이터 |
getMidFcst | 중기전망조회 | serviceKey, numOfRows, pageNo, dataType, stnId, tmFc | wfSv (기상전망), numOfRows, pageNo, totalCount, resultCode, resultMsg |
getMidLandFcst | 중기육상예보조회 | serviceKey, numOfRows, pageNo, dataType, regId, tmFc | regId, rnSt3Am, rnSt3Pm, wf3Am, wf3Pm (날씨/강수 확률 3~10일치 데이터) |
getMidTa | 중기기온조회 | serviceKey, numOfRows, pageNo, dataType, regId, tmFc | regId, taMax3, taMin3, ... (최고/최저 기온 데이터, 3~10일치 데이터) |
getMidSeaFcst | 중기해상예보조회 | serviceKey, numOfRows, pageNo, dataType, regId, tmFc | regId, wf3Am, wf3Pm (3~10일치 해상 날씨 및 파고 데이터) |
중기예보 입출력 데이터
입력 데이터 | 설명 | 출력 데이터 | 설명 |
serviceKey | 공공데이터포털에서 발급받은 인증키 (URL 인코딩 필요). | wfSv | 중기전망 기상 정보. |
numOfRows | 한 페이지 결과 수 (기본값: 10). | regId | 예보구역코드. |
pageNo | 페이지 번호 (기본값: 1). | rnSt3Am, rnSt3Pm | 3일 후 오전/오후 강수 확률. |
dataType | 응답 자료 형식 (XML 또는 JSON). | wf3Am, wf3Pm | 3일 후 오전/오후 날씨 예보. |
regId | 예보 구역 코드 (중기 육상, 기온, 해상 예보에 사용). | taMax3, taMin3 | 3일 후 최고/최저 기온. |
tmFc | 발표 시각 (YYYYMMDDHHMM, 중기 예보 데이터 기준). | wf6Am, wf6Pm | 6일 후 오전/오후 해상 날씨 예보. |
stnId | 지점 번호 (중기전망조회에 사용). | taMax10, taMin10 | 10일 후 최고/최저 기온. |
보다시피 데이터가 상당히 많은데, 저는 다양한 크기의 전자잉크를 갖고 있기에 나중에 데이터를 정리하더라도 일단은 모든 데이터를 긁어오도록 할 계획입니다.
단기예보 조회
getUltraSrtNcst 초단기실황조회
getUltraSrtFcst 초단기예보조회
getVilageFcst 단기예보조회
getFcstVersion 예보버전조회
중기예보 조회
getMidFcst 중기전망조회
getMidLandFcst 중기육상예보조회
getMidTa 중기기온조회
getMidSeaFcst 중기해상예보조회
모두 호출 형태가 다르고, 호출된 데이터도 다릅니다.
단기예보 발표시간 - baseDate, baseTime
중기예보 발표시간 - tmFc
초단기 실황조회
http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst
http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst?serviceKey=3BXdtOYTQgwY%2FncPf6kCtZiX8FDuzXs8Pd66HbbAcSpsYrF%2BRz3gmttlkhF3oCOyESziNpJ5kCeBNk%2Bg1%2BC1pA%3D%3D&numOfRows=10&pageNo=1&dataType=JSON&base_date=20241201&base_time=0500&nx=61&ny=127
http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst?serviceKey=3BXdtOYTQgwY%2FncPf6kCtZiX8FDuzXs8Pd66HbbAcSpsYrF%2BRz3gmttlkhF3oCOyESziNpJ5kCeBNk%2Bg1%2BC1pA%3D%3D&numOfRows=10&pageNo=1&dataType=JSON&base_date=20241201&base_time=1600&nx=61&ny=127
http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst?serviceKey=3BXdtOYTQgwY%2FncPf6kCtZiX8FDuzXs8Pd66HbbAcSpsYrF%2BRz3gmttlkhF3oCOyESziNpJ5kCeBNk%2Bg1%2BC1pA%3D%3D&numOfRows=10&pageNo=1&dataType=JSON&base_date=20241201&base_time=0800&nx=61&ny=127
http routing error 04
https://redfox.tistory.com/154
https://www.data.go.kr/bbs/dnb/selectDeveloperNetworkView.do?reqestSn=QUES_000000000002570
01 - APPLICATION ERROR
요청 파라미터 오류.
02 - DB ERROR
데이터베이스 문제.
03 - NO DATA
데이터 없음.
04 - HTTP ROUTING ERROR
잘못된 URL/라우팅 문제.
05 - SERVICE KEY IS NOT REGISTERED
잘못된/등록되지 않은 서비스 키.
10 - INVALID REQUEST PARAMETER
잘못된 파라미터 형식.
20 - NO MANDATORY PARAMETERS
필수 파라미터 누락.
22 - DEPRECATED OPENAPI
지원 종료된 API 사용.
30 - SERVICE ACCESS DENIED
접근 권한 없음.
'Making > ESP32 날씨 표시기' 카테고리의 다른 글
ESP32 날씨 표시기 #5 - ChatGPT 코드 정리. (0) | 2024.05.29 |
---|---|
ESP32 날씨 표시기 #4 - 공공 데이터 포털. (0) | 2024.05.29 |
ESP32 날씨 표시기 #3 - openweathermap 데이터 분류와 정리. (0) | 2024.05.12 |
ESP32 날씨 표시기 #2 - openweathemap에서 날씨 받아오기 (0) | 2024.05.12 |
ESP32 날씨 표시기 #1 (2) | 2024.05.06 |