livin' seberia

'DIY IOT - smart mirror project'에 해당되는 글 12건

  1. smart mirror project [day 11] 3
  2. smart mirror project [day 10] 6
  3. smart mirror project [day 9]
  4. smart mirror project [day 8]
  5. smart mirror project [day 7]
  6. smart mirror project [day 6]
  7. smart mirror project [day 5] 1
  8. smart mirror project [day 4]
  9. smart mirror project [day 3]
  10. smart mirror project [day 2] 5

smart mirror project [day 11]

DIY IOT - smart mirror project

덤으로 얹어가는 after service (...정말이니...)

5월 4일, 어쩌면 11일째.




(오늘은 팁 제공의 포스팅인만큼 -다 체 대신 -입니다 체로 가는 것으로...) 



► 지난 최종버전에서 달라진 사항 

1. 일단 화면은 하얗게, 글자는 검게 바꿔두었습니다마는, 더 나은 비주얼을 위해서라면 두 색의 반전이 있어야겠지요. (그리고 좀 더 잘 보이자고... 거울도 살짝 기울여놨...ㅎㅎㅎㅎㅎ 이런 꼼수를....ㅋㅋㅋㅋㅋㅋ)

2. 라즈베리파이 메뉴바는 아예 사라지진 않는 것 같습니다. 다만 메뉴에 있는 configuration setting을 통해 바를 아래쪽으로 내리고 색깔도 검게 만들 수는 있었습니다. 

3. 날씨와 뉴스 위치를 원래 디자인 한 대로 돌려두었습니다. 위치만 조절하고, 대신 오늘 하루 날씨 서머리는 뺐습니다. simple is the best...


그러다 제가 궁금해서 (또는 댓글로 달린 것 가운데) 질문과 답변을 살짝 리뷰도 할겸 정리해봤습니다!! 



Q. 자꾸만 라즈베리파이 화면이 꺼집니다!

A. 이건 개인적인 질문이었습니다. 잘 켜두고 있었는데 어느새 돌아보면 화면이 슬립모드로 들어가있더군요. 

구글에서 Raspberry pi sleep mode disabled 를 검색하면 "라즈베리파이는 원래 절전모드란게 없어 바보야!" 라는 메시지가 약 2012년쯤 대거 나옵니다마는, 어디에든 이걸 풀어둔 사람도 있더랬습니다!! ;ㅁ;

http://www.raspberry-projects.com/pi/pi-operating-systems/raspbian/gui/disable-screen-sleep




......(10시 51분 현재 추가)

......뭐...뭐죠  아직도 화면이 꺼지네요. 마우스 들이대면 다시 살아나는 거 보니 shut down은 아니고... 말그대로 슬립모드인데, 음. 다시 좀 봐야겠습니다. 


역시 사람은 글을 끝까지 읽어봐야.....ㅎㅎㅎ 일단 dpms앞에 -를 추가해놨으니 한 5분 뒤에도 안 꺼지면 그게 맞는 걸로...

(5분 뒤) 아, 그래도 꺼지네요... xscreensaver를 확인해봐야할듯.ㅎ

그래서 현재 sudo apt-get update 
sudo apt-get install xscreensaver

를 돌려둔 상태입니다. 또 몇 분 뒤에 살펴보지요....


현재까지는 괜찮아 보입니다. 



xscreensaver를 일단 apt-get한 상태에서 터미널에 xset s off 를 입력했는데, 오오, 신기하게도 먹힙니다. 아마 되려는 모양입니다....? 오 안 되네요. 

그래서 xset 이 뭐하는 명령어인지 그냥 한 번 쳐봤더니, 여러 기능이 나옵니다. 

아까 말했던 dpms 라는 녀석의 정체도 밝혀졌고요. electricity saver라고 합니다. 이 앞에 '-'를 붙이면 saver가 꺼지는 것이지요. 그래서 xset -dpms 를 일단 쳐둔 상탭니다. 되면, 저는 뭔가 해결한 게 되겠지요. (이렇게 지금 한시간 반 가량을 기다렸다, 설정했다, 좌절했다를 반복중...) 



흡!!!!!! ㅠ_ㅠ 14분이 흐른 지금까지 꺼지지 않아요!

그 말인즉 xset -dpms 와 xset s off 가 모두 통한 것이 아닐지!!!! 저기만 볼드체좀 써야겠습니다. 합합합. (아마도)문제 해결!!



Q. 뉴욕타임즈 api가 안 됩니다. 

A. http://developer.nytimes.com/signup  에 들어가서 api key를 받기 위해 회원 가입을 합니다. 



엌. 설명을 하려는데 오늘(5월4일 오전 10시 38분 현재) 뉴욕타임즈 api console 서버가 다운됐는지 어쩌는지 (제 컴에서만 이러나요?) 화면이 전부 뜨질 않네요. ㄷㄷ 


앜 너 왜그래 ㅠ ㅠ


음...... 일단 코드가 뭔가 석연찮으시다면 (https://github.com/NYTimes) 여길 확인해보셔도 좋고, 뉴욕타임즈 홈피가 뜨면 활용 방법이 나옵니다. 참고로 섹션별로 내가 가져갈 수 있는 것만 고를 수 있기 때문에 (이를테면 나는 top-stories만 뽑겠다! 하시면 그 섹션의 api를 받아야 합니다) api를 분야별로 제대로 받았는지 꼭 한 번 확인해보셔요! 

*참고로 저같은 경우엔 tech&science 섹션만 받아오려고 했는데, 아무리 돌려봐도 화면에 그 무엇도 뜨지 않더라고요. 알고보니 그날 tech&science 섹션의 top stories가 전혀 없어서... 안 뜬 거였다는...ㅎㅎ 가장 속 편하게 속보 또는 그날의 topic을 고르는 게 나을 것 같습니다. 경험상... 다만 단점이 있다면, 뉴스가 비슷비슷한 것들이 줄곧 나온다는 것이지요. 지금 이 시간만 해도 테드 크루즈가 막 경선을 포기했기 때문에 테드 크루즈 얘기만 벌써 세 줄이나 찼습니다. ㅠ ㅠ

많은 분들은 ap통신 api를 활용하시는데, 음, 저는 개인적으로 뉴욕타임즈를 전부터 봐서...(오 좀 있어보임..) 뭐, 그렇습니다. 





Q. forecast.io api 콜이 문제가 있는 듯 합니다.

A. 사실 이 날씨 사이트는 어떤 유능한 개발자께서!! 제게 소개해준 곳이랍니다. 음, 날씨 정확도가 정말 귀신같이 잘 맞아 떨어지더랬지요. 기상청 api는 개인적으로 정말 절차도 복잡하고(...하아...) 뭔가 이것저것 따지고 드는 게 기분도 나빠(...하아...) 그냥 이쪽으로 망명했습니다. 후후. 훨씬 편하기도 하고요.


파란색으로 체크한 부분이 바로 제가 발급받은 API Key랍니다. 그리고 

https://api.forecast.io/forecast/API키가 들어가는 곳이랍니당/37.8267,-122.423

여기 보면 뒤에 좌표가 나오죠? 이 부분에 자신이 있는 지역(서울, 수원, 부산, 대구, 대전, 전주 등등등) 좌표값을 넣으면 끝!

좌표값은... 음 예전에 어디 정부부처에서 정리해둔 것이 있었는데, 못 찾겠네요. 

일단 제가 찾은 것 가운데 방법을 공유하자면, http://blog.naver.com/songws72/50077099849  여기 나온 것처럼 구글 맵을 활용할 수도 있고 

http://seongilman.tistory.com/137 여기 나온 것처럼 지오코더(geocoder)를 활용할 수도 있습니다.

하지만, forecast.io가 이 모든 좌표값들을 인식하지는 않는 것 같습니다. 따라서 대도시를 중심으로 찾는 게 낫지 않을까..하는 개인적인 생각이 ㅠㅠ

저도 집은 세종이지만, 주요 활동지는 서울 인근이라서 그냥 서울로 해둔 ㅠㅠㅠㅠㅠ 



Q.... 그래서 앞으로 뭐하나요

A. 저도 고민입니다마는, 라즈베리파이가 무리해서 뽀사지는(!) 그 순간까지 열심히 굴릴 수 있도록 새로운 무언가를 설치해봐야겠지요. ㅎㅎ 아, 근데 저 유리로 해놓고 모니터 겹겹이 비춰가며 코드 짜려니 힘들어서... 아무래도 ssh로 접속해 활용해야할 듯 합니다. (뭐..뭐라고요? 다들 이미 그리하고 있다고요?ㅠ)





....이렇게 된 거 html-js 코드로 다시 이쁘장하게 해볼까.............







 

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

smart mirror project [day 10]  (6) 2016.04.28
smart mirror project [day 9]  (0) 2016.04.18
smart mirror project [day 8]  (0) 2016.04.12
smart mirror project [day 7]  (0) 2016.03.28
smart mirror project [day 6]  (0) 2016.02.25

smart mirror project [day 10]

DIY IOT - smart mirror project

이제는 day 10이라고 하기엔 너무 민망할 정도로 꽤 오래 끌긴 했습니다마는... (이보게 처음 착수한 게 두 달 전일세...) 

띄엄띄엄 하다보니 4월 28일, 열흘째. 


...어쩌면 이것이 완성이라고 할 수도 있는, 뭐 그런 것일까? 




드디어 모든 재료를 득템하시었다. 일단 거울 뒤에 두꺼운 하드보드지(;;;)를 대기로 했고 흰색, 노란색, 검정색을 모두 대조해봤다. 

결과적으로 온전히 거울의 역할을 하기엔 역시 검정색이 제격인 걸로 판단! 노란색 1500원짜리 하드보드지여 안녕. 기분 우울할 때 노란색을 보면 좋다던데, 이 하드보드지는 그런 용도로 쓰기로...


그리고 조립... 혹은 일종의 시공 같은 것이 시작되었다. 이렇게. 그러니까 이분들은 거울의 뒷면이 되는 셈이다.

참고로 말씀드리자면, 생각보다 뭔가 잘 안 붙는다. 공간도 뜨고. 어쩌면 전기과 내지 기계과 나온 분들이 '전선을 저렇게 붙이다니'라면서 학을 뗄 지도... (비판을 겸허히 받아들일테니 이사람에게 댓글로 조언을...ㅎㅎ 어찌 고정+정리하오리까..)

라즈베리파이는 보드판을 대서 내사랑 3M 고리걸이테이프- 일명 찍찍이로 고정했다. 엄청 찍찍해서(?) 절대 떨어질 친구가 아니다. 

아 이 번잡한 자태. 사실 부착을 어떻게 해야할지 몰라 꽤 고민했다. 아무튼 했고, 뭐 터질 일(?)만 없다면 이대로 냅두는 게 나을 것 같기도 하다...


그래서 앞면 드디어 개봉 박두!



놀랍게도 화면이 들어와있는 상태다. 세상에. 이건 거의 매직아이 수준인데, 내 눈엔 라즈베리파이 구동 화면이 보인다. ㅋㅋㅋ 가상현실 같나. 왜이런고 보니 모니터 밝기 자체가 50% 에 불과한 초기 모드여서, 이걸 100%까지 올렸다. 그리고 주변의 조명을 살짝 낮추고... (불을 완전히 끄면 참 잘 보일텐데, 그럼 내 얼굴이 안 보이겠지...)



이제 보이는가! 아, 이거 하느라 살이 다 빠져서 턱라인이 드러났... 은 농담이고, 어젯밤에 잠을 설쳤다. (근황은 필요없...)

아무튼, 색상이 여전히 연하디 연하여 아래의 뉴스와 날씨는 사실상 안 보인다고 봐야 한다. 따라서 이 모든 GUI 색상을 바꾸고, 화면 자체를 하얀색으로 바꾸는 것이 가장 효율적일 것 같다. 

더불어 완벽하게 전체화면이 된다면, 위에 라즈베리파이 바도 안 보이고 좋을텐데... 그러려면 html-javascript를 활용하는 편이 더 나았으려나 싶기도 하다. (나는 파이썬으로 해보고 싶었으니!)


이걸 어딘가 어둡고, 조명이 아래에서 비추며(영향이 있을까), 꽤 괜찮은 스팟에다가 설치해보려고 한다. 물론 코드도 바꿔야할테고. 아아, 무려 모니터가 절전모드까지 된다. 이건 어떻게 조절해야하지. 


이제, 코드를 공개한다. 

물론 여기서 아직도 고쳐야 할 게 많다. 위에서 말했듯 색깔도 그렇고, 아직 실시간으로 변하는 것이 제대로 작동하지 않는다. 더구나 최근 GUI배치를 이리저리 바꿨더니 별로 안 예뻐지기도 했다. UI도 넣을거다. 흐린 날은 예쁜 구름이 뜨고, 맑은 날은 햇님이 방긋 웃는 애니메이션도 첨가하고 싶다. 

이렇듯 아직도 하고 싶은 게 참 많다. 




일단 하긴 했다!!!! 




>> 비용 

나 같은 경우엔 위에도 썼다시피 연구실에 굴러다니는 것들(라즈베리파이 키트, 각종 케이블), 차후 구매 조건으로 받은 샘플 거울(실제로 구입도 했다) 등에서 돈을 꽤 아꼈다. 만일, 모든 것을 내가 샀다면, 아마 이정도 나오지 않았을까.

1. 라즈베리파이3 (요즘 나온 것을 사는 게 낫지 않겠나!) - 35불. 다만 초보자용 키트를 통째로 사는 게 좋을 것 같다. 스타트키트가 현재 10만원 선... 아 좀 비싸긴 비싸다. 파이2만 해도 7만원대였는데. 

2. 모니터 - 알*익스프레스에서 싼 것을 고른 것이 우리돈 4만원쯤 했다. (앞에 day 8을 보시라) 대신 오래 기다려야한다. 한 2~3주 잊고 지내면 온다.

3. 원웨이미러 - 두 가지 종류가 있다. 코팅이 거울 뒷면에 된 것, 앞 면에 된 것. 나는 앞면에 된 것을 골랐는데, 이게 뒷면 코팅보다 그나마 더 밝은 편이다. 참고로 앞면 코팅은 지문이 잘 묻어난다. 6만5000원에 운송비가 포함되는 경우도 있다. 유리라 택배로 배송이 안 돼 배송비가 상당히 비싸다. 공장에 가지러 간다고 하든 업체측과 잘 이야기를 해보든 하길 권한다. 

4. USB 허브, wifi 동글, 무선 마우스, 키보드 등등은 알아서... 

5. 각종 케이블과 재료들 (hdmi to hdmi, usb전원선, 모니터용 직류전원장치, 하드보드지, 접착용 테이프 등) - 이것저것하면 2~3만원 정도

------------------------------------------------------------------------------------------------------------------------------------
= 23만원 정도라고 생각하면 될 것 같다. 아이고 비싸다.


혹자는 이렇게 말했다. "장난감을 만드는 데엔 돈이 드는 법"이라고. 하지만 만들어 보는 것에는 분명 그만한 가치가 있다. 개인적으론 이런 저런 코드 짜보고 짱구 굴리고, 스파크 튀는 것도 구경하고(ㄷㄷ) 예쁘게 조립도 해보면서 꽤 많은 걸 배웠다. 일단 뭐든 완성은 해봐야한다. (그렇게 치면 이건 아직 미완오브 미완이지만 ㅠㅠ 차근차근 더 보완해갈테다!!!) 



>> 코드

여기저기서 가져오고 고치고 하느라 사실 크레딧 표시가 잘 안 됐다. 그저 이런 느낌으로 했다는 것만 참고해주시길. 

import wx

import time

from urllib2 import urlopen

from json import loads

import codecs

from forecastiopy import *


class Total(wx.Frame):

    def __init__(self, parent, id, title):

        super(Total, self).__init__(parent, id, title, size=(800, 600))

        

        font= wx.Font(24, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False,'Arial')   

        

        self.SetForegroundColour('#6DC9C9')

        self.SetBackgroundColour('#4A4A4A')

        

        self.Bind(wx.EVT_PAINT, self.OnPaint)

        

        self.Centre()

        self.Show()


        dt = wx.DateTime()

        self.seoul = wx.StaticText(self, -1, dt.FormatTime(), (20,20))

        self.seoul.SetFont(font)


        self.OnTimer(None)


        self.timer=wx.Timer(self)

        self.timer.Start(1000)

        self.Bind(wx.EVT_TIMER, self.OnTimer)

        self.Refresh()

        

    def OnPaint(self, event):

        dc = wx.PaintDC(self)

        

        r = dc.GetFullTextExtent('M')

        for i in xrange(3):

            px, py = 20, 180+r[1]*i

            dc.DrawText(title_list[i], px, py)

            font1 = wx.Font(16, wx.FONTFAMILY_DEFAULT, wx.NORMAL, wx.NORMAL)

            self.SetFont(font1)

            

        dc.EndDrawing()

       

        dc2 = wx.PaintDC(self)

        k = dc2.GetFullTextExtent('M')

        for j in xrange(3):

            px, py = 20, 100+k[0]*j

            dc2.DrawText(weatherlist[j], px, py)

        dc2.EndDrawing()

        

        

    def OnTimer(self, evt):

        self.dt = wx.DateTime() 

        now= self.dt.Now()

        self.seoul.SetLabel(' ' + str(now.Format(('%d %a %T'), wx.DateTime.GMT9)))  

        

#news again

def call_the_articles():

    url = 'http://api.nytimes.com/svc/topstories/v1/home.json?api-key=키는 본인이 받아서 쓰시길'

    return loads(urlopen(url).read())

articles = call_the_articles()


def x():

    l = []

    #if __name__ == '__main__':

    for story in articles['results']:

        l.append(story['title'].encode('utf-8', 'replace'))

    return l

title_list = x()    


#weather forecast again

apikey = ' 이건 본인이 받아서 쓰시길 ' 

Seoul = [37.335887, 126.584063]

fio = ForecastIO.ForecastIO(apikey,

                            units=ForecastIO.ForecastIO.UNITS_SI,

                            lang=ForecastIO.ForecastIO.LANG_ENGLISH,

                            latitude=Seoul[0], longitude=Seoul[1])

def call_forecast():

    a = []

    if fio.has_daily() is True:

        daily = FIODaily.FIODaily(fio)

        a.append('In 24hrs : ' + unicode(daily.icon))

    if fio.has_currently() is True:

        currently = FIOCurrently.FIOCurrently(fio)

        a.append('Now : ' + unicode(currently.icon) + '  ' + unicode(currently.temperature) + ' C')

        a.append(unicode(daily.summary))

        return a

weatherlist = call_forecast()


#call

def main():

    ex = wx.App()

    Total(None, -1, 'good')

    ex.MainLoop()

    


if __name__ == '__main__':

    main()


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

smart mirror project [day 11]  (3) 2016.05.04
smart mirror project [day 9]  (0) 2016.04.18
smart mirror project [day 8]  (0) 2016.04.12
smart mirror project [day 7]  (0) 2016.03.28
smart mirror project [day 6]  (0) 2016.02.25

smart mirror project [day 9]

DIY IOT - smart mirror project

4월 18일, 아홉번째 날. (세상에 2월에 시작했는데 이제 아홉번째 날이라니 뻔뻔스럽긴 합니다마는...)

오늘의 목표: 디스플레이를 설치하자!



드디어 그가 왔다. 

바로 디스플레이 패널!!! 

4월 초에 주문했으니 대략 2주 만에 온 셈이다. 나에게 참을성과 의지를 함께 가르쳐준 알리익스프레스 만세. ㅜㅜ  

하지만 늘 그렇듯 이번에도 문제가 있다. 우리 랩 박사과정 오빠 말에 따르면 "라스베리파이와 연결할 수 있는 게 없는 걸?"이라고... 가만보니 그렇다. 이것은 결국 '라스베리파이 전용 모니터 모듈'이라고 하긴 어렵고, 그냥 어디서나 통용되는 뭐 상용 모듈쯤으로 생각해야하는 셈이다. 

과연 내가 이걸 제대로 산 게 맞나 의심이 들어 판매 사이트를 다시 들어가보니 이제와 눈에 들어오는 댓글이 있다.


그렇다. 정말 다 잘 어울리는 그런 모니터였던 것이다. (뭐... 저런 뜻으로 올린 것이겠지? ㅎㅎ) 고로 해결책은... 지금 하는 것처럼 HDMI 케이블을 이용해 연결하는 것이 최선인 것 같다. ㅠ 거울 뒤가 복잡해지고 있다!!


참고로 구입 품목은 요거. 


사람들은 (이렇게 올 거면) 이 가격도 비싸다고 했었다. 허나 우리나라엔 없는걸.... 더구나 free shipping이 마음에 쏙 들었다는... 비록 늦게 오긴 했지만 그래도 알리익스프레스 만세! 마윈 만세! 


그리고 가만 살펴보니 사용설명서가 없다^^ 앞자리 앉은 박사과정님들께 이래저래 도움을 받아 조립을 시작했는데.... 뭐 모양 맞는 것들끼리 끼우니 끼워지기는 한다. (물론 극성을 잘 따져서 해야한다고 한다. 안 그러면 터진다고........)


문제는 전원을 넣는 것이었다.



설명서가 없어서 도대체 파워를 어떻게 넣어야할지 난감하던 차에 구글링.


집에선 두꺼비집 내려놓고 조명공사 알아서 하던 나지만... 역시 전기통하는 것은 너무나도 무섭. 주변의 도움을 얻어 디지털-전압(아마 터치 디스플레이 패널에 대한 것인듯)은 5볼트(마침 USB로 이어져있었다. USB가 5볼트인것은 또 처음 알았...), 아날로그는 10V로 짐작. 파워서플라이를 대령하라. (어떻게 생긴 줄 몰라 랩 안에서도 다른 기계만 만지작거리고 있었다...)



20볼트 넘어가니 불꽃이 튀던 너 ㅠㅠ


넘나 무서운 것ㅠㅠ 다행히 10V에서 안 터졌다! 그래 나는 제대로 다 끼운 것이었고, 설명서도 잘 찾아 읽은 것이렷다. ㅠㅠ 

랩에 있는 9V 짜리 직류전원장치와 HDMI to HDMI 케이블을 구해(내가 구한 건 아니고, 박사과정 오빠가 도와줌 ㅠㅠ 천군만마ㅠㅠ) 라스베리파이에 연결한 뒤 드디어 모니터 전원을 ON했는데, NO SIGNAL이라는 퍼런 화면만 나온다. 말인즉슨 라스베리파이가 연결이 안 됐다는 것이다.


너 설마 고장은 아니지? 그치? ㅠㅠ 라스베리파이뿐 아니라 컴퓨터를 연결해도 똑같다 ㅠㅠ



어떻게 극복할 것인가...

그리고 이 복잡한 이 상황을 어찌할 것인가...




라고 고민할 때쯤 페친 한 분이 힌트를 주셨다. "유투브에 성공사례가 있네요" 라고.

https://www.youtube.com/watch?v=hV2XsoWkWg8



아 저 영롱하디 붉디 붉은 라스베리시어 ㅠㅠ 드디어 영접.ㅠㅠ



터치 usb 부분을 라스베리파이에 끼웠더니 된다!!!! 이게 만일 전원공급이 함께 되는 거라면, 나중에 다운될 가능성도 있다만. 

암튼 연결되고 켜지기라도 한 게 어디 ㅠㅠ 일단 오늘은 여기까지만이라도 만족하련다. !!!!! 유투버님께도 감사를 ㅠㅠ




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

smart mirror project [day 11]  (3) 2016.05.04
smart mirror project [day 10]  (6) 2016.04.28
smart mirror project [day 8]  (0) 2016.04.12
smart mirror project [day 7]  (0) 2016.03.28
smart mirror project [day 6]  (0) 2016.02.25

smart mirror project [day 8]

DIY IOT - smart mirror project

4월 12일 여덟째 날이라고 하자.

사실 별 일 없는 날이지만 하루하루 알리익스프레스에 주문한 7인치 모니터를 기다리느라 목이 빠지고 있다는 걸 좀 남기고 싶어서.

왜 택배 트래킹도 안 되는 건지... 알리의 법칙은 '잊어버리고 있으면 언젠가 오기는 온다'는 것이라던데. (왜이래 아마추어같이. 이미 겪어봤잖아! 흐응. 그래도...) 

 

오늘은 더 나아가 MS의 Microsoft Cognitive Service를 한껏 이용해보고자 한다. 왜냐하면, 뭐, 이래저래 관심도 많고 중요한 부분이기도 하고 또... 어찌됐든 스마트미러와 아주 관계가 없다고 할 수만은 없을 것 같다! 참조: https://www.microsoft.com/cognitive-services/en-us/emotion-api


스마트미러를 그냥 설치만하고 퉁칠 것이었으면 애초부터 이건 시작하지도 않았다. 놀랍게도 (최근 전능해지신) MS는 이런저런 소스를 씨줄날줄 풀어헤치듯 공개해준 덕에 나는 그 아래서 낱알을 주워먹기로 마음을 먹었다. (뭔소리지) 


차근차근 하련다. 오늘은 결심을 하고 MS의 (한 두 달째 보고만 있는) 코드를 실제 파이썬에 넣어서 자동으로 마구 돌아가게 해야지. 




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

smart mirror project [day 10]  (6) 2016.04.28
smart mirror project [day 9]  (0) 2016.04.18
smart mirror project [day 7]  (0) 2016.03.28
smart mirror project [day 6]  (0) 2016.02.25
smart mirror project [day 5]  (1) 2016.02.23

smart mirror project [day 7]

DIY IOT - smart mirror project

3월 28일 (작업날짜로 굳이 친다면) 일곱번째 날 

오늘의 목표(?) 혹은 완료된 작업(?) : 거울을 찾았다. 그리고 모니터도 골랐다. 그리고....


......물론 마지막 코딩을 하고 뭐 어쩌고 한 지는 꽤 오랜 시간이 흘렀다만(무려 한 달이 넘었다ㅠㅠ 그러니까 굳이 핑계를 대자면 학기 시작하면서 좀 바빠서...), 며칠간의 리서치와 노가다 끝에 드디어 살 것(;;;)을 정했다는 소식을 전하기 위해 글을 남긴다. 

그러니까 지난 시간까지 한 건 코드를 짜는 일이었다. 


얼추 이정도 까지는 완성이 됐는데, 한 가지 '며칠째' 손을 댔다 뗐다를 반복하는 부분이, 바로 '뉴스와 날씨의 실시간 동기화'다. 온갖 것을 다 써보았다. tkinter, schedule, 뭐 또 여러가지. 

하지만 아직까지도 문제는 해결되지 않고 있고 오늘 밤에는 기필코 해낼 것이다 ㅠㅠ  

내 귀여운 USB허브. 그런데 팔뚝에 꽂거나 3개 이상 꽂으면(그 말이 그 말인가) 인식이 안 된다. 고장났다는 뜻이다. 두 개라도 쓰려고 일단 모셔놨다.


오늘은 드디어 며칠간 재고 고르고 하던 미러를 득템했다. 구입처 : (주)미라클글라스   http://www.미라클글라스.com

▲뒤에는 임시로 아이패드의 시계 화면을 띄운 모습. 상당히 잘 비추고, 또 잘 비친다.


이 거울은 샘플용으로 업체 팀장님이 들고 오신 것인데, 어차피 위에 필름이 조금 벗겨져 못 쓰는 거라며 주고 가셨다. (물론 나는 거울을 추가로 구매할 예정이다. 별도로 실험하는 게 있어서... 여기엔 자세히 쓸 수 없다만.)

참고로 이 거울은 '원웨이 미러(one-way mirror)'라는 특수유리다. 유리 한 면에 코팅을 씌운 것인데, 두 가지 종류가 있었다. 한 가지는 미러 바깥쪽(우리가 보는 쪽)에 반사 필름을 붙여 가공한 것이고 다른 한 가지는 반대면(모니터 유리와 맞닿는 곳)에 필름을 붙인 것이다. 각 장단을 따지자면, 미러 바깥쪽에 반사 필름을 붙이면 뒤쪽에서 비추는 화면이 좀 더 잘 보이고, 대신 지문이 상당히 잘 묻어난다. 반대로 반대면에 필름을 붙인 것은 지문이 거의 묻어나지 않는 반면, 뒤쪽에서 비추는 화면이 조금 더 어둡다. 더 푸른 빛깔로 비춘다고 생각하면 된다. 나는 어차피 지문을 묻히지 않을 것이라는 일념하에 전자를 선택했다. (위 사진도 전자다)

가격은 통상 큰 규모로 설치하는 경우에 따라 견적을 내기 때문에 1m*1m = 20만원(ㄷㄷ)이라고 했는데, 어차피 우리는 그보다 훨씬훨씬 작은 것이 필요하다. 나같은 경우엔 300*400(mm)를 문의했다가 A4사이즈인 210*270(mm)로도 견적을 냈는데, 사실상 가격은 6만 5000원으로 같았다. 유리 가장자리는 모두 공정해주실 예정이고, 다만 퀵비는 별도... (물론 나는 직접 찾으러 갈 수도 있다....!!!) 유리는 모두 수입산이고, 우리나라에선 더이상 제작하지 않는다고 했다. 

고로 주문은 내일 들어간다. (아아 내지갑... 혹자의 말마따나 '장난감을 만드는 데에는 돈이 드는 법이다'...)


그렇다면 화면은 어찌하느냐? 

한국내에서 찾으려든다면 역시나 몹시 비싸다. 7인치짜리 모니터 하나가 최저 8만원이다. 굳이 필요도 없는 터치스크린을 장착해서 그런가...

무려 'DIY 모니터 만드는 법'을 공유하는 카페까지 들어가본 결과, 많은 이들이 '어차피 라즈베리파이로 만들거라면, 이베이에서 모니터 모듈을 사라!'라는 가르침을 설파하고 있었다!! 그래서 굳이 이베이에 들어가서 봤더니, 읭? 죄다 메이드인 차이나인데다가 배송비도 제법 든다. 

다년간의 검색 실력을 곁들인 덕에 나는 '그렇다면 알리익스프레스가 짱'이라는 사실을 깨우쳤고, 결국 알리에 들어가 이와 같은 모니터를 발견하기에 이른다!


오늘 사려고 봤더니 내일부터 2불 가까이 깎아준대서 (우리돈으로 2천원이 넘지 않는가! ㅎㅎ) 내일 주문할 예정이다. 20불 짜리도 있었는데, 그 업체보다 여기가 좀 더 빠르게 배송해준다고(평이 좋아서) 해서 이쪽으로 주문하려고 한다. 

모두 온다면, 드디어 조립까지 할 수 있는 것이다 ㅠㅠ 



......그러고보니 날씨용 GUI랑 실시간 업뎃이랑...... 아직도 산넘어 산이다. 



(오늘밤엔 좀 해볼까...)







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

smart mirror project [day 9]  (0) 2016.04.18
smart mirror project [day 8]  (0) 2016.04.12
smart mirror project [day 6]  (0) 2016.02.25
smart mirror project [day 5]  (1) 2016.02.23
smart mirror project [day 4]  (0) 2016.02.22

smart mirror project [day 6]

DIY IOT - smart mirror project

2월 24일 여섯째날

오늘의 목표 : 정말로 오늘만큼은 이 모든 것들을 기필코 한 화면에 모으고야 말겠다.


아 빌어먹을.

사실은 요 이틀째 이게 제일 골치였다.



보시다시피 나는 시계와 날씨와 뉴스를 모두 한 코드에 넣었는데, 돌리고 또 돌려봐도 자꾸만 저 시계만 뜨는 것이다 .

물론 어떤 경우에는 시계는 사라지고 맨 마지막에 넣은 날씨만 살아남기도 했다!! 그리고 어떻게 해도 뉴스만 남는 법은 없었다. 


사태를 해결하기 위해 장장 수 시간을 쏟았고, 그 결과 



드디어!!! 내가 원하는 바를 이루고야 말았음 ㅠㅠ 엄마 보고싶어요 ㅠㅠ 너무 신나서 창 이름도 good으로... 


... 자 이게 어떻게 된 일인지, 비록 밤 12시를 넘긴 이 시각에 나홀로 연구실에 남아있긴 하다만 조금 썰을 풀어보도록 하겠다. 

문제의 발단은 늘 그렇듯 tree에 있다. 각자 따로 띄우면 멀쩡하게 잘만 출력되던 것들이, 합치면 돌연 실종되는 사태가 벌어진다? 그러면 이 코드 전체의 구조에 문제가 숨어있는 것이다. 물론 나도 그 사실은 이미 일찌감치 눈치채고 있었다. 

허나 wxpython의 구조는 뭔가 python 그 자체와는 또 상당히 달랐다. 

wxpython 웹페이지 만든 인간은 (물론 그가 wxpython도 개발했겠지만) 만나기만 해봐라 혼내줄테다. 

http://www.wxpython.org/docs/api/trees.html

이 사이트에 들어가보면 이유를 알 수 있다. 내가 찾는 트리 구조를 말그대로 줄줄줄 '나열'해준 덕에 내가 찾는 정보를 찾아 헤매느라 시간이 오히려 더 많이 걸렸다. wxpython은 앞서 말했듯 쓰는 사람이 별로 없는지 어쩌는지 라이브러리도 별로 없어서... 꺼이꺼이....


결론부터 말하자면, class안에 def를 달아 기능(function)을 만드는 데 끝나는 게 아니다. 나같은 경우엔 시계는 text 그 자체로 받아왔고(이미 시계를 텍스트로 전환하는 툴이 있었으므로) 기사와 날씨는 텍스트그리기 기능(그림판에서 A라고 쓰인 버튼이 수행하는 텍스트그리기 기능을 생각하면 된다)을 가져다 그 안에 데이터를 문자로 변환해 넣는 식으로 코드를 짰다. 이 텍스트그리기 기능이 PaintDC라는 것인데, 이 'DC'라는 것이 class-object-그리고 그 다음에나 있는 꼬랑지같은 녀석이었다. 아주 멀리멀리 떨어져있는 객체 오브 객체, 아주 작은 클래스인 셈이다.


그러니 시계 vs. 기사랑날씨 - 이 두 개의 이를테면 꾸러미 자체가 다른거다. 맨 바탕에 시계를 그려놨다면, 기사랑날씨는 맨 바탕에 올려둔 박스 안에 담아둔 셈이니까. 더구나 시계는 panel이라는 녀석이 받고 있었다. (그냥 맨바닥에 쓰되 그 맨바닥을 panel이라고 define했던 거다)


이게 바로 내가 이 모든 툴을 완성하기 전까지 코드를 공개할 수 없는 이유다. (ㅋㅋㅋㅋㅋ)


여차저차 기사랑 날씨는 같은 박스 안에 담아두고, 시계판과 공존할 수 있도록 열심히 잘 짜봤다. 

하지만 위에서 보다시피 폰트의 통일성까지는 도저히 구현할 수 없었다. (언젠가는 누군가 이 포스트를 보고 알려주겠지...) 박스 안에 폰트를 지정할라 치면 function은 font를 적용하지 못하네 어쩌네 잔말이 많다. 현재의 이 보통 폰트도 그냥 봐줄만해서 일단은 뒀다. (하지만 거울이 커지고 멀리서 거울을 봐야하는 사태가 벌어지면 폰트도 커져야 하고 색채와 글꼴도 바뀌어야하겠지...)



두 번째 난관. 

날씨 데이터가 너무 많아서 고르고 또 고르고, 하려고 봤더니 세상에, 일일이 입력하지 않는이상 오존정보부터 바람세기까지 다 거울에 비춰줘야 할 지경인 것이었다. 그래도 프로그래밍이라는 게 아날로그는 좀 최소화해야하지 않나 싶어서 최대한 짱구를 굴려봤다. for i in xrange(10)을 2,4,6,8,10으로 점핑해서 보여주는 방법을 써볼까해도 forecast.io에서 뱉어내는 순서가 내가 원하는 그런 순서도 아니었고... 

고로 날씨는 깔끔하게 '오늘 날씨', '현재기온', '체감기온', '현재 날씨'로만 구성해 '쳐 넣었다'.

코드로 살짝 말씀드리자면,


>> def call_forecast():

       a = []

      if fio.has_daily() is True:

daily = FIODaily.FIODaily(fio)

a.append('Today: ' + unicode(daily.icon))

if fio.has_currently() is True:

currently = FIOCurrently.FIOCurrently(fio)

a.append('Temperature: ' + unicode(currently.temperature))

a.append('ApparentTemperature: ' + unicode(currently.apparentTemperature))

a.append('Now: ' + unicode(currently.summary))

return a

>> weatherlist = call_forecast()


이런 식이다. 일일이 어펜드하는 정말 초보 수준이지만 언젠가는 극복할 수 있으리라 본다. (아니 뭐 사실 내가 필요한 정보가 뭐 이만큼인걸....)


세 번째 난관... 까지는 아니고 잠시 헤맨 내용

알다시피 망할 시계가 계속 이상한 시간을 가리키고 있었다. 그 이유를 살펴보니 GMT_9로 돼있었던 건데, 누군가가 일본을 기준으로 wxpython을 쓸 땐 GMT_9로 해야한다고 해서 그걸 그대로 가져다 썼더니만...

이후에 EST도 써보고 이것저것 굴려봤으나, 역시 우리의 wxpython은 자신만의 단어들을 보유하고 있었다! 대단혀유. 

참고 :  http://wxpython.org/Phoenix/docs/html/TZ.enumeration.html

GMT9 로 써야한다. 난 GMT+9로도 고쳐봤었는데... 어쩐지 안 먹더라니...




열심히 살고 있다고 광고나 할겸 지금 이 순간 내 책상이나 사진으로 찍어 올려야겠다. 


(책상이 어지러우면 간식을 더 먹는다는 연구결과도 있는데....)

아이템 1.  코끼리 바탕화면 맥북과 사자 얼굴 바탕화면의 데탑 모니터. 언젠가는 데탑모니터가 맥북을 잡아먹는다는 뜻은 아니고 그냥 심란할 때 동물 사진을 보면 뭔가 기분이 좋아진다. 마침 맥 기본 배경화면에 요놈들이 있길래...

아이템 2. 입학하고 손목이 안 좋아져서(나이를 먹어서) 예전에 사뒀던 파워볼을 다시 꺼내들었다. 손목은 모르겠고 팔꿈치 아래 근육이 점점 커지는 듯...

아이템 3. 알라딘굿즈 사은품으로 얻어내고야 만 Don't Panic 컵. 별로 살 책도 없었는데 굳이 사서 이 컵을 얻은 이유는 그냥 저 문구가 그렇게 와닿... 으흑흘그흐ㅡ흐그흑

아이템 4. 자색고구마와 썬업과 물과 호두과자. 운동도 안 하는데 살이나 찌지 말자며 물 두 병을 비우고 간식 대신 자색고구마를 먹겠다고 사둔 뒤, 오렌지향이 나는 쥬스와 천안에서 사온 지 12시간 된 마른(그러나 바삭한) 고칼로리 호두과자를 대신 비웠다. 점점 위장만 늘어난다.

아이템 5. 연구실 불이 아무리 밝아도 나는 나만의 로맨틱한, 마치 하버드 도서관같은 느낌의 주홍빛깔 조명을 쓰고야 말겠다며 얼마 전에 산 녀석인데 눈이 좀 부시다. 

아이템 6. 라식한 지 3년 만에 왼쪽 눈만 시력이 절반 이하로 뚝 떨어져 급히 수혈 중인 점안액... 아무리봐도 수술이 잘못된 것 같다... 


아 이거 쓸 시간에 잠을 자면 눈이 좋아지려나...



아무튼 이제 내게 남은 일은 크게 두 가지다. 

1. 오늘의 날씨는 sunny, cloudy, rain, snow등 몇 개 안 되니까 아이콘을 찾아 매칭을 시켜보자. 이건 어쩌면 잘 할 수도 있을 것 같다. 것보다, 뉴스와 날씨를 시시때때로 업데이트 해줘야하는데.... 아.... 그게 남은 거구나 어쩐지 뭔가 좀 빨리 끝났다 했다.........

2. 거울을 찾아야 한다. 그리고 그에 맞는 작은 모니터를 찾으면 된다. 모니터는 사실 라즈베리파이용 모니터를 구해다 쓸까 싶다. 너무 작나... 거울은 아마 청계천을 한 바퀴 돌아야 할 듯... 이 두 가지만 구하면 사실 다 끝난 거다. (뒤에 붙이는 거야 뭐!) 



음... 아무래도 3월을 넘기게 생겼다....



며칠 전 들은 말 중에 오늘 유독 힘이 됐던 한 마디! 

"터미널에 뜨는 오류메시지만큼 코딩 실력도 는다!"

................정말이쥬? ... 




-----------------------------------------------

새벽 1시 43분 현재 여지껏 잠이 오지 않아서 결국 위 '남은 일' 가운데 하나를 해치우기로 마음을 먹었다. 

일단 '한 시간에 한 번씩은 api 콜을 할 수 있도록 하는' 라이브러리를 찾았다. 

참고 :   https://pypi.python.org/pypi/schedule

MIT연구진이 만든 모양인데 참으로 감사하다. 



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

smart mirror project [day 8]  (0) 2016.04.12
smart mirror project [day 7]  (0) 2016.03.28
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 5]

DIY IOT - smart mirror project

2월 23일 화요일, 다섯째날

오늘의 목표: 한 화면에서 날씨도 나오고, 시간도 보이고, 뉴스도 출력하도록 해보자 ===> (오후에 변경) GUI에 데이터를 얹는거라도 완성하자 


아침부터 일단 ssh 연결 및 wifi 동글 활성화를 위해 라즈베리파이에 이것저것 설정을 했다. 

지난 번 나를 그토록 애먹였던 wifi 동글 설치는 의외로 아주 빠르게 잘 됐다. 뭐든 그렇지만 '차분하게' 따라하면 다 잘 풀린다. 드디어 랩 와이파이가 잡힌다 ㅠㅠ (물론 랜선을 연결해도 되긴 하지만......)

참고: http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_rpi&wr_id=18

   

더 욕심을 내서, 맥에서도 라즈베리파이 구동 화면을 검정화면 말고 풀 화면으로 모두 보기 위해 vnc viewer를 설치하기에 이르는데... 계속 host computer가 거부한다는 메시지만 뜬다. 그리고.... 이 서버는 내 맥을 외부에서 인식하기 위한... 그런 느낌을 준다... 이상한 일이지...

참고: http://jpub.tistory.com/286

일단은 넘어가기로... (이건 당장 중요한 일이 아니니까...) 내 바탕화면 코끼리의 자태가 살짝 보인다.


다시 시각화 작업을 시작해보자. 어젯밤에 나름 이런저런 고민과 실험을 한 끝에! gui 툴은 wxpython을 활용하기로 했다. 내가 생각한 python gui 라이브러리의 장단은 요렇다. 

 

Tkinter 

PyQT4 

wxpython 

 장점

굳이 설치할 필요가 없다. 파이썬 기본라이브러리로 내장돼있으니까.

정말 많은 용례가 있다. 참고할만한 사이트도 많고 소스도 많다. 

예쁘다. 뭔가 size 지정같은 것도 그렇고 얼핏보면 꽤 직관적인 것 같다. 라즈베리파이에선 설치도 아주 노말하게 잘 된다.

 단점

안 예쁘다.

설치가 겁나 빡세다. 

이상하게 내 맥에선 자꾸 설치가 튕긴다. 

너무 편파적인 분석일지도 모른다. 나는 원래 하나에 애정을 가지면 그냥 그것만 예뻐보이..ㅁ...


시각화


일단 wx.widget 라이브러리를 백번 활용해야겠다는 생각에 여기서 자체적으로 가지고 있는 시계 코드를 좀 써봤다. 

이 링크 최고다   http://zetcode.com/wxpython/in18/

잘 흘러가긴 하는데 시간이 살짝 맞지 않는다. 다시 잡아줘야할듯.


오후 2시 45분 현재.

이번엔 wxPython에 뉴스를 띄워보기로 한다. 전에 만들어둔 것을 복붙해서 요리조리 굴려보는 것이다. 하지만 이 코드 하나 가지고 지금 약 두 시간 정도를 헤매고 있다. 어찌보면 이거 하나 해결되면, 날씨도 쉽게 할 수 있을 듯도 한데...

(아무리봐도 정말 원시적으로 붙여넣는 코드화면....)

화면 속 노란색, 저 txt가 문제다. txt = dataread()를 하면, 그건 dataread()를 통해 얻는 텍스트데이터를 가져가는 게 아니라 dataread()라는 클래스(기능)을 가져갈 뿐이다. 즉, drawtext를 할 수 있는 string(문자)으로서 부적합한 셈이다. 

여기에 한 줄만 넣어 바꾸거나, 혹은 drawtext가 아닌, 말그대로 텍스트를 출력하는 게 가능하면 좋겠는데... gui라는 것이 그래픽 부분이니... 당췌 가능할지 모르겠다. (엉엉) 계속 찾아보던 중 방법을 알아냈다. (사실은 옆자리 태영이랑 앞자리 진한이가 도와줬다!!)

방법은 생각보다 간단했다. list 생성해 -> append를 하는 것... 그럼 type = list가 되니까, 거기서 요소를 추려내면 그건 txt!

나는 리스트까지만 생성하고, 어펜드는.... 하지 못했다.... 이게 바로 겉핥고 뛰어넘기의 한계 ㅠㅠ 


결과적으로 이와 같은 아름다운 결과가 드디어 나왔다 ㅠㅠ 



물론 날씨도 이렇게 잘 나온다. 



이렇게 데이터들을 GUI에 얹었다. 정말 행복한 하루다. 이제 이들을 한 화면으로 모아다가 예쁘게 배열도 좀 하고 정보도 좀 고르고 해야하는데...... to be continued....




 

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

smart mirror project [day 7]  (0) 2016.03.28
smart mirror project [day 6]  (0) 2016.02.25
smart mirror project [day 4]  (0) 2016.02.22
smart mirror project [day 3]  (0) 2016.02.19
smart mirror project [day 2]  (5) 2016.02.17

smart mirror project [day 4]

DIY IOT - smart mirror project

금토일 꿀맛휴가를(반타의적으로) 보낸 뒤 컴백.


2월 22일 월요일, 나흘째. 

지난이야기 : SSH 설정을 잘못하는 바람에 라즈베리파이가 집에선 돌아가지 않았고, 시각화 코드나 짤까 했으나 결국 이래저래 의욕도 꺾이고 졸립고 피곤하고 놀고싶고 신랑도 징징대고 그래서 나또한 같이 딩가딩가 놀아서 아무 것도 못 했다는 건설적인 이야기.

나도 블로그하는 사람들처럼 중간에 이모티콘도 넣고 예쁘게 좀 써볼까 싶어...


오늘의 목표 : 1. 파이썬 코드를 어떻게 화면 전체에 예쁘게 잘 구현하지? 검정화면(터미널) 말고 말야.   2. 이쁜 날씨 이모티콘들을 연동할테야. .... 0. 일단 SSH를 제대로 완성해 저 느려터진 마이구미 말고 내 맥에서 잘 한 번 써보자. 



0순위인 맥 ssh 연결이 연구실에선 잘 된다. 즉, ddns의 문제인가보다. 집에서 내가 라즈베리파이를 쓸 일이 있을까? 집은 쉬는 곳.........

일단 ssh 문제는 이정도로 그냥 만족하고 해보기로 한다. 



그래 나는 빠르게 일을 추진하는 걸 좋아하니까. 



그리고 첫번째 미션을 수행하기 위해 지난 주말에 살짝 찾아보기만 했던 그 코드를 꼼꼼히 살펴보기로 한다.

https://github.com/szantaii/mirror-pi

젠장. 이건 사실상 스마트미러를 완성할 수 있을법한 라이브러리다! 아 이건 내 취지에 맞지 않다.

...하지만 살짝 참고하기로 한다.


apt-get을 사용해 뭘 설치하든, 요즘은 죄다 ftp.kaist.ac.kr 미러에서 막힌다. 내가 좀 울었더니 연구실에서 "요즘 거기 안 돌아감" 이라고 한다. 고로 국가 자체를 변경해 우회해서 다운 받아야 할 지경. 

[라즈베리파이 리눅스 미러 변경하는 방법] http://www.berrycracker.net/archives/538       (개인적으로 이 포스팅이 가장 도움이 됐다. 여기 소개된 wget은 굳이 안 해도 괜찮음.)

[어렵고 복잡하고 키도 잘 안먹어 속이 정말 터지기 일보 직전인 vim 편집기에 대한 키 설명은 요기]    https://kldp.org/node/102947


아 드디어 앱트겟(apt-get)이 겁나 빠른 속도로 잘 돌아간다 ㅎㅎ하하하핳하하하하하하하핳



.... 전반적으로 내가 새로 배워야 할 언어가 느는 느낌이다. 

고로 파이썬만으로 GUI(graphic user interface)를 구현할 수 있을 만한 것을 찾아보라는 조언을 받들어 얼마전 시계를 구현할 때 썼던 Tkinter를 활용하기로 했다. (어쩌면 나는 pyQT를 다시 보게 될 지도) 고로 간단하게 일단은 띄우는 것부터 해보기로 한다. 연구실 오빠들에 따르면 쟝고나 플라스크를 쓰면 여러 장단이 있다고 하나 그럼 내가 할 일이 너무 는다. 고로 나는 그냥 Tkinter를 쓴다. 

하지만 아무리봐도 디자인이 너무 예쁘지 않아 PyQt4를 쓰기로 마음먹는다. (갈대같은 내마음) 이또한 설치 빡세기로 유명한 라이브러리인지라, 오늘 밤은 이대로 설치나 하며 보내야할 듯 싶다. (밤 11시52분 현재) 그러다 결국 설치하다 (빡쳐)죽겠다는 생각이 들어 재빠르게 wxpython을 깔았다. 이게 가장 나은 것 같다. (심지어, 좀 작긴 하지만, 그래도 html툴을 활용할 수도 있다!) 신난다. 지금은 이거 연습 중이다. 참고 사이트는 http://wiki.wxpython.org/wxPython%20by%20Example




(하지만 이 또한 맥에선 잘 깔리지 않는다. 이놈의 맥 보안설정....)

(리눅스 짱)

(그..그래서 오늘도 딱히 한 일이 없는 게야???)

(어라... 저 위에 목표를 하나도 달성하지 못..했....)




http://zetcode.com/wxpython/layout/

여기서 wxpython 좀 더 배울 수 있을 듯!! 팁좀 많이 얻어가장 :D





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

smart mirror project [day 6]  (0) 2016.02.25
smart mirror project [day 5]  (1) 2016.02.23
smart mirror project [day 3]  (0) 2016.02.19
smart mirror project [day 2]  (5) 2016.02.17
smart mirror project [day 1]  (0) 2016.02.17

smart mirror project [day 3]

DIY IOT - smart mirror project

그러니까 2월 18일 목요일, 셋째날.

아침 랩미팅을 마치고, 오늘은 시각화 작업 전에 라즈베리파이 ssh 연결 및 와이파이 연결을 성사시켜야겠다는 생각이 들었다. 렉쳐에서 들은 아두이노가 뭔가 매력적이어서 귀를 쫑긋거리며 또다시 개발잼에 빠지는데.... 허나 며칠 잠을 못 자 컨디션이 바닥을 친 가운데, 오늘은 일단 요것만 하고 집에 가서 시각화 작업을 해야지 하고 시작을 했는데...

망할. 우리의 사랑스러운 마이구미 라즈베리파이가 처음엔 와이파이 동글을 인식하는듯 싶더니, 한 번 sudo ifdown wlan0 을 실행한 뒤론 줄곧 먹통인 것이다!!! sudo ifup wlan0이 안 돼!!! ifconfig만 몇 번을 쳤는지 모른다 ㅠㅠ

애증의 와이파이. 애증의 동글. 남들은 잘만 돌아간다는 ipTime N100mini 인데, 나는 당췌 무엇을 건드리고 만진 것인지 그 이후로 나의 라즈베리파이는 no wirless interfaces found라는 메시지만 던졌다... 더구나 호기심도 넘치고, 내 손으로 고치는 걸 좋아하는(허나 고친 적은 없는) 이놈의 성격 탓에 이런저런 파일들을 만지기 시작하는데... (conf 파일 하나도 파일명이 잘못 타이핑돼있길래 굳이 mv 실행해서 바꾸...ㅁ.... warning을 몇 번을 봤는지 모름....)



결국 만들어놓은 py 파일만 이메일로 전송한 채 라즈베리파이 sd카드를 포맷하기에 이른다. 하핳ㅎ하핳하ㅏㅎㅎ핳핳

다시 까는 데 오늘따라 왜이리 오래 걸리는지. 기왕 새로 까는 거 noobs lite가 아닌 noobs full ver. 을 설치해서 그런가. 결국 점심 안 먹고 빨랑 집에 가서 쉬다가 시각화를 하겠다는 모든 계획은 물거품이 됐다. 다시말해 밥도 못 먹고 day 1의 작업을 처음부터 다시 다 했다는 말씀 되시겠다. 덕분에 나는 리눅스의 명령어를 조금은 외울 수 있었을 수도 있고... (좋게 생각하자...)



그래서 ssh 연결은 성공했느냐고?

일단 wifi 동글 설치는 집에가서 하겠다는(미루고 미루고) 마음가짐으로 원격제어가 가능한 ssh부터 확인했다. 아, 내 아이피는 왜 남들과 달리 10.으로 시작할까. 신기해하면서. 그리고 분명 랩에선 '올 작동함 오올' 하고 감탄을 하고 집으로 가져왔는데,



안 됨ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 집 컴이 모두 맥이라 모니터 연결할 길도 없는데 망ㅋㅋㅋㅋㅋㅋ 이럴 줄 알았으면 hdmi 선 좀 랩에서 가져다가 집 tv에라도 연결해서 쓸 걸 망ㅋㅋㅋㅋㅋㅋ 더구나 랩에서 작동하는 걸 보고 신나는 마음에 키보드, 마우스 동글 모조리 빼고 왔는데ㅋㅋㅋ 기가 인터넷 빵빵 터지는 우리집 랜선도 잘 인식했고, 전원도 샤오미 배터리 풀충전 된놈으로 아주 잘 돌아가고 있었는데... 찾아보니 ddns 문제일 수도 있다고 한다. 

주말에 랩 나가야하나 심각하게 고민했으나 생각을 고쳐먹음. (경부선 타고 주말에 상경하기란 역시나 버거운 일. 아 물론 금욜에 갈 수도 있으나 이미 허약해진 심신...)



주말엔 라즈베리파이를 가방 속에 고이 모셔두고, 샤오미 배터리나 충전하며 코드를 짜야겠다는 결심을 합니다. 한 것도 없이 지나가버린 나의 day 3... (매일매일 (언제 현실이 될 지 모르는)아이디어만 샘솟....) 



...혹시 랩에서 나오기 전에 shutdown 어쩌고를 입력하는 바람에 이렇게 된 건 아닐까?.... 의심만 느는 중....





ps. 블로그 글도 하루 밀려 쓰게 됐는데, 이유인즉 그새 내 티스토리 비번을 잊어버려서 로그인 락이 걸렸기 때문ㅋㅋㅋㅋㅋㅋㅋㅋ 아니 어떻게 매일 쓰는 사이트인데도 비번을 그리 틀리는지...... 



'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 2]  (5) 2016.02.17
smart mirror project [day 1]  (0) 2016.02.17
smart mirror project [intro]  (0) 2016.02.17

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