안녕하세요. 

"생각의 웹"입니다.


지난 AppIN 세미나를 통해 소개했던 Do IoT Yourself 프로젝트를 기반으로 

thermistor 대신 온습도 센서(DHT11)를 달아 며칠 간 안방의 온습도 트랜드를 측정해 보았습니다.


먼저, 검색해 보니 계절 별로 생활하기 적정한 온/습도에 관련 내용이 있더군요.


실내 적정 온도와 습도


 지금과 같이 겨울철에는 적정온도 18~21도, 습도 40% (알레르기 비염환자의 경우 50%)라고 하는군요.



사실, 이 프로젝트를 적극적으로 시작한 계기는 

제 아내와 아이들이 알레르기 비염 증상이 있어 잠자는 도중에 재채기를 심하게 하는 경우가 많아서 입니다.

(가끔 저도 같은 증상을 겪기도 했습니다.)


비염을 예방하기 위해서 가.성.비가 탁월하다는 공기청정기를 구매해 사용하니 

방 안 먼지 때문에 나오는 재채기는 줄어 들었으나 

잠자는 도중 하는 재채기가 줄어들지 않더군요.


따라서 잠자는 도중 하는 재채기의 원인을 온,습도의 변화로 지목하고

제 때 물 갈기가 귀찮아서 사놓고 방치했던 가습기를 켠 상태에서 

방 안의 온, 습도를 모니터링하기로 결정했습니다.


다음은 날짜 별로 온습도 변경 기록 및 요약입니다.




11월 18일



- 시스템 설치 첫 날 오후 2시 경부터 온습도 기록을 시작했습니다. 온도는 23도에서 +- 2도 정도의 변화를 보였습니다. 

   보일러의 목표 온도가 22도로 맞추어져 있기 때문에 추워지면 보일러가 돌아간 것으로 보입니다. 


- 가습기의 목표 습도를 50%로 설정하고 잠자리에 들기 전부터 가동했습니다.


- 가습기를 가동한 저녁부터 습도가 34%에서 37%로 증가했습니다.

  가습기 자체에 습도계가 있어 목표 습도인 50%가 되면 습기량이 줄어들고 

  습도가 다시 낮아지면 습기량이 느는 동작을 반복합니다.


- 다행히도 가습기를 튼 당일부터 잠자는 도중 하던 재채기가 사라졌습니다. 

  적용 첫날부터 효과가 있는 걸로 보아 기침의 원인은 습도였나 봅니다. ^^




11월 19일



- 밤, 새벽 시간 온도는 22도 수준을 유지하다 낮에는 24도 수준으로 올라갔습니다.


- 가습기가 동작하던 오전 9시 경까지 습도가 36~37%를 유지하다 가습기를 끈 낮에는 34% 수준으로 떨어졌습니다.


- 가습기가 동작한 저녁 8시부터 습도가 다시 2% 정도 증가했습니다. (여전히 목표 습도는 50% 입니다.)



11월 20일


- 11월 19일과 유사한 환경에서 오전만 측정했습니다. 

   (오후에는 시스템 개선 작업을 진행하느라 잠시 꺼두었습니다. ^^a )


- 밤 12시에 24도에서 점차 떨어져 새벽 6시 경에는 21도가 되었다가 해가 뜨니 25도까지 올랐습니다.


- 가습기가 동작한 밤에는 습도가 37% 수준에서 유지되다가 아침에 가습기를 끄니 34% 수준으로 떨어졌습니다.



11월 21일


- 온도가 밤부터 새벽 시간에는 23도에서 머무르다 낮이 되니 25도까지 올랐다가 다시 밤에는 23도로 돌아왔습니다.


- 가습기가 동작할때의 습도는 35~37%, 가습기를 끄면 34%까지 내려갑니다. 

  안방의 습도는 34% 수준에서 평형을 유지하는가 봅니다. 



11월 22일


- 온도가 밤부터 아침까지 22도에서 24도로 올랐다가 낮에 25도가 되었습니다.

  그날 따뜻했는지 21일보다 1도 정도가 더 높네요.


- 습도는 가습기가 동작하는 밤에는 37%였다가 가습기를 꺼두어도 35~36% 수준을 유지했습니다.



11월 23일


- 온도가 새벽 2시부터 올라 23도에서 26도까지 올랐습니다. 아침 10시경 외출했더니 낮임에도 불구하고 23도로 내려왔습니다.


- 가습기의 목표 습도를 60%로 설정하고 동작했음에도 습도는 35~6% 수준에서 

  머물러 있습니다. 



마무으리~로 지난 시험의 결과를 요약해 보면


- 방 안의 온도가 겨울철 적정 온도(18~21도)보다 3~5도가 높아서 너무 따뜻하게 지내는 것일 수 있을 듯 합니다.

  난방비를 생각해서 희망 온도를 22도에서 20도로 줄이는 걸 고려해 봐야 겠습니다.     


- 습도는 가습기를 동작시켜도 적정 습도인 40%에는 부족한 37% 수준까지만 올라갑니다. 

  희망 습도를 60%으로 올리더라도 습도 변화에 큰 차이가 없는 걸 보니 가습기의 습도계를 믿어선 안될 듯 싶네요.

  비염 환자를 위한 적정 습도인 50%까지 올리려면 지속적으로 가습기를 켜 두어야 할 것 같습니다.


이 측정을 하기 전에는 

바닥에서 자는 아내가 새벽에 코가 시릴 정도로 춥다고 해서 난방 온도를 올리는 방향으로 결정했으나 

측정 결과, 난방 온도를 올리면 상대적으로 습도가 낮아지고 온도 차에 의한 순환 때문에 외풍이 부는 것처럼 느껴지는게 아닐까 하는 의심이 들었습니다.


따라서, 오늘 밤부터는 난방을 줄이고 가습을 더 하는 방향으로 시험해서 체감 온도를 느껴봐야 겠습니다.


이처럼 단순히 온도 (+습도)를 측량하는 간단한 D.IoT.Y 기기만으로도 작지만 의미있는 일들을 

(가정에서 부터) 시작할 수 있습니다.


여러 분들도 손쉽게 D.IoT.Y 하시면서 비용도 줄이고 건강도 챙기는 일석이조의 효과 얻기를 바랍니다.

여기까지 읽어 주셔서 감사합니다.


행복한 (그리고 건강한) 겨울철 보내시길!


"생각의 웹"입니다.


지난 Do IoT Yourself 강연 시 가장 널리 알려진 MySQL를 이용해서 data logging를 했으나 

프로그래밍에 문외한인 분들에게 교육하기 어려운 점과 

MySQL과 같은 RDMS (관계형 데이터 베이스 시스템)과 JavaScript의 궁합이 썩 맞지 않는 면들이 있었습니다.

불편한 점들을 나열하면 다음과 같습니다.


- MySQL 설치가 까다롭다.

- database를 설정하고 schema를 만드는 과정에서 실수하기 쉽다. (error-prone)

- JavaScript 객체 (JSON)의 속성들을 일일히 DB 스키마에 맞춰 저장한 뒤 읽어 들일 때 JSON 객체로 만들어 주는 과정이 필요하다.

- JavaScript Date 객체와 DB의 Date 객체는 호환되지 않는다.

 


따라서, NoSQL 중 하나인 mongoDB를 대안으로 사용하기로 결정했습니다. 그 이유는 다음과 같습니다.


- database를 설정하고 schema를 만드는 과정이 필요 없다.

- JSON 객체로 저장하고 읽어 들인다.


제 개발환경인 windows 8.1에서는 msi 형태의 설치 파일을 통해 별도의 설정 없이 손쉽게 설치가 가능했으나 

실행 환경인 raspberry PI는 조금 복잡하고 오랜 과정이 필요했습니다.


다음은 설치 과정을 정리한 포스팅입니다.


http://c-mobberley.com/wordpress/2013/10/14/raspberry-pi-mongodb-installation-the-working-guide/


영어의 압박이 있어 보이지만 순서대로 따라하면 큰 무리 없이 설치가 가능합니다.

다만, 어디서나 mongo 콘솔을 사용할 수 있도록 설정하는 부분이 빠진 것 같아 다음과 같이 추가합니다.


sudo ln -s /opt/mongo/bin/mongo /usr/bin/mongo


설치된 mongoDB 버전이 2.1.1 에 불과하다는 포스팅도 있으나 사용하고자 하는 기능에는 크게 무리가 없을 듯 합니다.


이번 포스팅은 여기까지 입니다.

감사합니다.



안녕하세요, "생각의 웹"입니다.


앞서 라즈베리 파이에 WiFi USB dongle 설치한 포스팅을 공유한 바 있습니다.

라즈베리 포럼을 뒤지다 당시 라즈베리안 커널 버전에 맞는 드라이버를 컴파일해서 dropbox로 제공해준 MrEngMan 덕분에 일단 사용할 수 있게 되었지요.


그러나, 문제는 커널이 업그레이드 될 때마다 해당 커널 버전으로 빌드한 드라이버를 구해서 수작업 설치를 해야 한다는 문제가 있었습니다.

무심코 아래와 같이 라즈베리파이의 커널 업그레이드 후 재부팅을 하니 더 이상 와이파이 동글이 사용할 수 없는 상태가 되어 버렸습니다. ㅠ.ㅠ.


sudo apt-get update
sudo apt-get upgrade
sudo reboot -t NOW


문제의 원인을 찾기 위해 로깅 메세지를 보니 MrEngMan이 제공한 드라이버가 커널과 호환되지 않았습니다.

당시엔 (지금도) 드라이버를 빌드하기 위해 필요한 절차를 이해하지 못하고 있었기 때문에 제가 할 수 있는 최선은 라즈베리파이 포럼에 해당 버전에 맞춰 드라이버를 컴파일해 달라는 읍소형 댓글을 다는 것 뿐이였습니다.


그런데 안타깝게도 몇 달이 지나도록 댓글이 달리지 않더군요.


결국 어쩔 수 없이 Ethernet으로 연결하여 사용하던 중 다시 와이파이가 필요한 상황이 되어 다시 한번 (용기를 내어) 구글링하기 시작했습니다.


그 결과, 다행히 N150UA에 사용된 WiFi 칩셋인 MediaTek-MT7601의 드라이버를 라즈베리파이에서 빌드하는 법을 정리한 포스팅을 발견해 기쁜 마음에 링크를 공유합니다.


http://groenholdt.net/Computers/RaspberryPi/MediaTek-MT7601-USB-WIFI-on-the-Raspberry-Pi/MediaTek-MT7601-USB-WIFI-on-the-Raspberry-Pi.html


상기 포스팅 내용을 한글로 재 정리하면 다음과 같습니다.

// root 계정으로 변경
sudo -s

// 최신 version download
apt-get update
apt-get upgrade
rpi-update

// 리눅스 커널 소스 코드 다운로드
cd /usr/src
git clone https://github.com/raspberrypi/linux.git
sudo ln -s /usr/src/linux /lib/modules/`uname -r`/build
cd linux

// 현재 수행 중인 시스템 커널 설정으로 지정
make mrproper
zcat /proc/config.gz > .config
cp .config .config.org
make modules_prepare


// 커널 모듈 심볼 다운로드 (커널 재 컴파일을 막기 위함)
wget https://raw.github.com/raspberrypi/firmware/master/extra/Module.symvers

// MT7601 USB 드라이버를 압축해제
cd ~ 
tar -xvjpf DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2 
cd DPO*


드라이버에서 엄청난 양의 로그를 뱉기 때문에 이를 막기 위해서 os/linux/rt_linux.c 파일에서 다음 문장을 수정합니다.

ULONG RTDebugLevel = RT_DEBUG_TRACE; 
ULONG RTDebugLevel = 0; // RT_DEBUG_TRACE; 

마지막으로 드라이버를 빌드하고 인스톨 합니다.

make
make install


혹시 이전 제 포스팅에서 설명한 방식대로 driver를 설치하신 분은 최종 설치 과정 (make install) 전에 이전 드라이버를 삭제해 주셔야 합니다.

제거 명령은 다음과 같습니다.


sudo rm -rf /etc/Wireless/RT2870STA

감사합니다.

+ Recent posts