livin' seberia

smart mirror project [day 2]

DIY IOT - smart mirror project

2월 17일 둘째날

오늘의 목표. 책을 살펴보니 라즈베리파이로 소리 정도는 재생 해보고 싶고, 날씨API를 끌어다 쓸 적절한 코드를 짜고자 한다. (시각화는 내일쯤...)


오늘은 소리를 재생했다. 스피커 케이블을 찾을 길이 없어 고민하고 있는데 연구실 오빠가 "이어폰을 쓰면 됨"이라고 알려주었다. 역시 길은 어디에나 있다. 느려터진 랜선을 부둥켜 안고 good morning wav 파일을 검색해 다운을 받았다. 그리고 돌려봤는데...... "good bye"란다. (음....?) 음원이 이상하다.


이어 날씨api를 받아 파이썬으로 코드를 작성해보았다. 이곳 저곳 뒤져봤는데, 많은 이들은 open weather api를 쓴다. (구글 웨더 api도 있었지만, 2010년대 초반 이후로 서비스가 중단됐다고 한다)

하지만 내가 제일 좋아하는 사이트(앱으로 즐겨찾기도 해뒀더랬다)는 forecast.io 다. 물론 당연히 이곳도 api를 제공한다! 심지어 언어별로 라이브러리도 친절하게 잘 형성돼있다. 

나는 파이썬을 쓰므로, 파이썬에 맞는 라이브러리 두 개를 찾았다. 

깃헙의 https://github.com/ZeevG/python-forecast.io     이걸 참고할 수 있고, 
참고로 파이썬 켜기 전에 pip install python-forecastio 를 돌려줘야 forecastio를 import 할 수 있다. 
또 다른 하나는 https://github.com/dvdme/forecastiopy    다. 이 또한 pip install forecastiopy를 해줘야 한다. 
개인적으로는 후자가 매우 마음에 들었다. 

위와 같은 결과가 나오고(개인적으로 저 마이구미를 꼭 화면에 담고 싶었으므로 걍 나이브하게 사진을 찍어 올림.....) 

나는 저 데이터들 가운데 temperature min - max 와 humidity, summary 를 뽑아낼 예정이다. 더불어 icon을 가져다 실제 예쁜 아이콘들과 매칭해 출력할 것이다. 


내친김에 뉴스api도 좀 썼다. ap news나 reuter보단 nytimes에 좀 더 마음이 가서... (물론 한국어를 파싱할 수 있는 네이버 개발자 툴을 활용할 수도 있지만... 한글화 작업은 다음에 해보기로... 더구나 나는 외신을 더 많이 보므로...)


결과적으로 top stories의 제목만 용케 잘 뽑아 왔다. 욝 타임즈의 api는 여기를 참고하면 된다. 

http://developer.nytimes.com/docs/top_stories_api/

물론 스택오버플로에 올라온 것도 활용했다. http://stackoverflow.com/questions/16431120/nytimes-api-python

처음엔 섹션을 science만 설정했는데, 오늘자 top stories에 해당 분야가 없었는지 출력값이 [ ]로 나와버렸다. 맞춤형 콘텐츠를 실시간으로 받아보는 일은 결국 콘텐츠 생산자에게 달려있으니...


그러고보니 시계를 안 했다. (ㅋㅋㅋㅋㅋㅋㅋ 미러의 핵심인데...)

이 글에서 맨 마지막에 나온 코드로는 팝업으로 뜨는 디지털 시계만 나온다. 맨 마지막줄 root.mainloop()을 후에 잘 활용하면 될 듯. 
내 라즈베리파이가 영 이상한 시간을 가리키고 있어서 사진은 저리 나왔다. 음, 영 이상한 시간은 아니고 GMT 기준시다. 세계기준시인 타임티커에서 데이터를 가져온 것으로 보이고, 이걸로라면 날짜도 바로 따올 수 있을 것 같다(???!)



....늘 그렇듯 안 예쁜 건 예쁘게 만들면 된다. (아마도 그럴거다...) 그리고 마이구미는 몹시 귀엽다.



이제 시각화 작업을 하면 된다.

(그럼 이제 다시 js와 css를 펼쳐야 하는 것인가...?...)



'DIY IOT - smart mirror project' 카테고리의 다른 글

smart mirror project [day 5]  (1) 2016.02.23
smart mirror project [day 4]  (0) 2016.02.22
smart mirror project [day 3]  (0) 2016.02.19
smart mirror project [day 1]  (0) 2016.02.17
smart mirror project [intro]  (0) 2016.02.17