728x90
일몰시간에 맞춰 자동으로 켜지는 간접조명을 만드는 프로젝트의 일환으로, 일몰시간을 가져오는 방법을 찾아보았다.
2022.03.16 - [Arduino] - 간접조명을 만들고 일몰시간에 자동으로 켜지게 할 수 있을까? #1
공공데이터포털에서 API 제공을 해주고 있었고,
단지 API 리턴값이 xml인 관계로 파싱하는 작업이 추가로 필요하다.
처음에는 cheerio를 이용해서 간단히 xml 파싱을 하려고 했지만 생각보다 복잡해져서,
json 파싱으로 방법을 바꾸었다.
필요한 패키지는 xml-js, date-util 정도.
date-util: 원하는 날짜의 일몰시간을 가져와야 하므로 날짜를 원하는 포맷으로 만드는 용도
xml-js: xml로 리턴된 결과를 json으로 파싱해서 원하는 값만 추출하는 용도
샘플 소스
var request = require('request');
var convert = require('xml-js');
var date = require('date-utils');
var url = 'http://apis.data.go.kr/B090041/openapi/service/RiseSetInfoService/getAreaRiseSetInfo';
var queryParams = '?' + encodeURIComponent('serviceKey') + '개인별 서비스 키 입력'; /* Service Key*/
queryParams += '&' + encodeURIComponent('locdate') + '=' + encodeURIComponent(new Date().toFormat('YYYYMMDD')); /* */
queryParams += '&' + encodeURIComponent('location') + '=' + encodeURIComponent('서울'); /* */
request({
url: url + queryParams,
method: 'GET'
}, function (error, response, body) {
//console.log('Status', response.statusCode);
//console.log('Headers', JSON.stringify(response.headers));
//console.log('Reponse received', body);
var json = convert.xml2json(body, {compact: true, spaces: 4});
var data = JSON.parse(json).response.body.items.item;
var loc = data['location']._text;
var locdate = data['locdate']._text;
var sunrise = data['sunrise']._text;
var sunset = data['sunset']._text;
console.log('Location: ', loc);
console.log('Date: ', locdate);
console.log('Sunrise Time: ', sunrise);
console.log('Sunset Time: ', sunset);
});
결과값
Location: 서울
Date: 20220317
Sunrise Time: 0641
Sunset Time: 1841
이제 타이머로 하루 한번 돌면서 간접조명에 명령을 날리는 방법을 찾아봐야지~
728x90
'Raspberry pi' 카테고리의 다른 글
라즈베리파이 온도에 따라 냉각팬 조절하기 : nodejs (0) | 2022.07.29 |
---|---|
라즈베리파이 4 라즈비안 64bit 설치 : SSH 최초 접속 : 스펙 확인 (0) | 2022.07.27 |
AlexaPi - Bluetooth Speaker 연결하기 2 (2) | 2018.01.15 |
AlexaPi - Bluetooth Speaker 연결하기 1 (0) | 2018.01.13 |
Alexa Pi 설치 - Amazon Echo 만들기 (0) | 2018.01.04 |