[강좌] 에어큐브 공기센서에서 직접 값을 읽어오기 (환기자동화 2편)

모바일 페이지

안녕하세요,

아래에서 진행했던 환기자동화를 조금 더 진행해보았습니다. 

http://ift.tt/2nE2fvU

 

지난번에는 하루 연차를 받아서 홈네트워크 환기를 PC로 제어하는 데까지는 성공했지만,

시간 맞춰서 환기를 가동하는 방식에 불과했고 CO2나 미세먼지 수치에 반응하는 방식은 아니었습니다.

 

처음엔 USB 형태의 이산화탄소 센서를 구입해서 측정할까 했는데 30만원 이상의 높은 가격이라 바로 포기했고

아두이노나 라즈베리파이를 사용하기에도 비용이나 배송시간이 만만치 않았습니다.

 

돈도 없고 지난번처럼 하루 연차 안에 끝을 본다는 생각으로

전부터 쓰고 있던 에어큐브 SN-100C를 사용해보기로 마음을 먹었습니다.

 

에어큐브는 SKT에서 판매하는 휴대가능 기기인데, CO2와 미세먼지 수치를 전용앱으로 보여줍니다.

CO2 센서중에서는 가격이 저렴한편이어서 작년 6월에 큰맘먹고 구입했는데 그때 9만원 정도 줬던 것이 지금은 17만원이네요;;

 

 

위와 같이 생긴 제품이고, 전용앱이 있어서 일견 보기 좋게 표시가 되지만

데이터 로깅 기능이 없기 때문에 환기 자동화에 필요한 CO2 및 미세먼지 농도값을 수치로 뽑아올 수가 없습니다.

 

처음엔 블루투스 기기이기 때문에 PC에 꽂혀있는 블루투스 USB동글에서 검색해보면 장비가 인식되지 않을까 했는데

스캔해봐도 뜨지 않더라구요. 구글링해보니 Bluetooth Low Energy (줄여서 BLE) 기기라 구형 동글로는 안되는 것이었습니다.

 

다시 BLE 동글을 사려니 찾아보니 국내마켓에서는 가격도 상당했고 인식 범위가 PC 주변으로만 한정되는 문제가 있었습니다.

저는 애들하고 자는 방에 센서를 두고 있기 때문에 PC를 그쪽으로 옮기거나 라즈베리파이 같은 추가 기기를 써야하는 상황이 되더라구요.

관둘까 하다가 집에 화면이 깨져서 방치중인 안드폰이 있어서 그놈을 사용하면 어떨까 하고 뒤져봤습니다.

 

다행히 안드로이드는 BLE 지원이 굉장히 잘돼있어서 "nRF Connect"라는 앱을 깔면 아래와 같이 자세한 정보를 볼 수 있었습니다.

(nRF Connect for mobile: http://ift.tt/2oCPcZh )

 

아래 이미지는 구글플레이에서 가져온 이미지라 무슨 장비에 연결했는지는 모르겠습니다만은,

앱을 실행하고 에어큐브 장비에 연결을 하면 아래와 비슷하게 "NOTIFY"라는 기능을 쓸 수 있습니다.

 

 nRF Connect for Mobile- 스크린샷

 

NOTIFY라는 이름에서도 알 수 있지만 이 기능을 쓰면 CO2 수치를 직접 휴대폰에서 읽을 수 있었고,

앱자체에 남은 Log를 살펴보니 대략 아래와 같이 바로 알아볼 수 있는 형태로 데이터가 날아왔습니다.

...

A 22:30:27.575 "S#C1004" received  -> 이산화탄소 1004 ppm

A 22:30:27.575 "S#B3.66" received  -> 미세먼지 3.66 ug/m3

A 22:30:27.575 "S#T33.2,24.7" received  -> 습도 33.2%, 온도 24.7도

...

 

어차피 안쓰던 폰이니까 USB 충전기에 전원을 연결한 뒤

화면을 최대한 어둡게 해서 발열을 줄인채로 방구석에 거치했습니다.

 

이제 이렇게 얻은 데이터를 PC에 전송할 방법이 필요했는데 아쉽게도 앱자체에는 로그 저장기능이 부실해서

좀 무식하지만 Tasker의 AutoInput을 사용해서 UI 메뉴에 있는 Save 버튼을 5분에 한번씩 눌러주게 했습니다.

(해당 앱은 소스가 공개돼있기 때문에 능력자께서 Data logging 하는 기능을 추가해주시면 좋을 것 같습니다..)

 

그렇게 안드로이드 내부에 파일로 저장된 로그들을 DropSync라는 앱으로 드롭박스에 동기화했습니다.

(DropSync: http://ift.tt/1urrnPo )

 

제 PC에서도 마찬가지로 5분에 한번씩 DropBox에 있는 파일을 긁어올 필요가 있는데,

Node.js를 이용해서 DropBox에 있는 파일중 가장 최신 파일을 받을 수 있도록 했습니다.

(Node.js Dropbox SDK: http://ift.tt/1LBve6o )

 

데이터가 미묘하게 바뀌어서 5분마다 환기가 계속 껐다 켜진다던가 하면 번잡스러우니

과거 25~30분 분량의 데이터와 현재 수치를 비교해서 환기를 켤지 끌지 결정하도록 했습니다.

추가로 최근 CO2 증가폭이 빠른지 아닌지, 현재 환기를 해도 상관없을 정도의 온도나 미세먼지 수치인지,

습도가 너무 높은 건 아닌지 등등을 판단해서 어느 정도 유예처리도 하고... 제 맘에 쏙드는 로직을 사용했습니다 ^^

 

점심 먹고 작업 완료하고 하루 종일 운용해봤는데

환기 시간이 줄어들어서 전보다 방이 좀 덜 추웠던 것 같긴 합니다.

그래도 날씨가 따뜻해지고 있어서 그런지 멍청하게 타이머로 작동시킬때랑 크게 차이는 없었네요;;

 

 



March 31, 2017 at 01:07AM