라즈베리 파이를 이용한 라이프 로깅 시작

큐비보드, 비글보드 블랙을 거쳐 오랜 시행착오 끝네 라즈베리파이에 안착했다. 역시나 라즈베리파이를 만나고 나서 이쪽으로 강렬한 이끌림을 받았으며 이런 저런 창조력을 발휘발 생각에 매일 오감이 자극될 지경이다.
내가 관심 있어하는 것은 내가 흘리고 다니는 나의 데이터이다. 내가 흘리고 다니는 것이라 모두 안다고 치부하기에는 이 데이터는 너무 객관적인 데이터이라는 특징 있다.

여름이 왔으니 일단 실내 온도에 관심이 가서 집에서 놀고 있던 온습도 센서를 달았으며, 몇일 뒤에 모션센서를 달았다. 이것으로 아래와 같은 로깅을 하고 있다.

  1. 집으로 들어가는 게이트웨이 리눅스 서버에 mysql을 설치한다(이건 라즈베리파이보다 훨씬 좋은 사양의 베어본 PC).
  2. 라즈베리파이에 데비안을 설치하고 온습도센서, 모션센서 그리고 작은 스피커를 연결하고,USB wifi 동글을 싱크한다.
  3. R 스크립트로 온습도 센서를 5분에 한번씩 크론잡으로 실행해 다섯번의 샘플링을 수행해 평균값을 DB서버에 전송하고, Python 스크립트로 데몬을 띄워 모션센서로 출입자를 탐지하게 한다.

일단 3번의 경우 구글 TTS를 활용해 한국어로 문장을 읽게 해서 파이에 연결된 스피커로 전송하게 되며 이 이벤트가 트리거링 되는 소스는 모션센서가 된다. 구글 TTS기반 재생시 한국어가 나오게 하기 위해 약간의 시행착오가 있었는데, 이 부분은 나중에 기회되면 공유하겠다.

모션센서의 경우 방의 출입패턴만을 감지하고 있으며 누군가 방에서 있으면 항상 이 센서는 로깅하게 되어 있다.

온습도 센서가 센서중에서 가장 싼 축에 속하는 것이어서 습도는 절대적으로 믿을 수 없는 수치가 나오긴 한다. 내가 쓴 DHT11 센서의 Data Sheet를 보니 습도의 경우 정확한 측정을 위해서는 에이징과정이 필요하다고 하는데, 주기적으로 애이징 하기도 어렵고 해서 그냥 쓰고 있다. 하지만 온도는 어느정도 정확한 수치를 보여준다.

library(RMySQL)

con <- dbConnect(MySQL(), user = "root", password = "XX", db = "lifelogging")
library(ggplot2)
library(lubridate)
library(reshape2)

humitemp <- dbReadTable(con, "humitemp")

humitemp_small <- humitemp[seq(1, nrow(humitemp), by = 6), ]

humitemp_small$dt <- ymd_hms(humitemp_small$dt)

humitemp_long <- melt(humitemp_small, id.vars = "dt", variable.name = "type")

ggplot(humitemp_long, aes(dt, value, colour = type)) + geom_point() + geom_line()

plot of chunk pic

일단 DB에 접속해서 데이터를 가져와서 시각화를 해봤다.

습도의 경우는 13일 이후를 보면 될 것인데, 상대적인 변화만 의미가 있지 절대적인 값의 의미로 보기는 힘들다. 하지만 방안 온도의 경우 하루 약 2도의 변화정도를 보여줘 방안 내부 온도는 큰 변화가 있는것으로 보이진 않는다.
17일 새벽부터는 비가 왔는지 습도는 계속 상승중이며, 낮 최고 온도시 기온도 다소 떨어진 것으로 보인다.

앞으로 계획은 주문한 카메라 모듈이 도착하면 모션센서에 이은 영상 캡쳐를 시도해보고 가족 개인 식별도 좀 시도해볼 생각이다. 그리고 압력센서가 좀 비싼데, 구매가 가능하다면 가족의 체중 로깅도 해서 건강에 대한 이상 패턴도 감지해보는 작업도 생각하고 있다.

이런 저런 센서 로깅작업에 심취하다보니 나와 가족이 남기는 데이터가 굉장히 소중하게 느껴지곤 한다. 데이터도 사진처럼 나중에 보면 추억이 될까? 하는 의문은 들지만, 일단 과정 자체가 재미 있으니 계속 해볼 생각이다.

CC BY-NC 4.0 라즈베리 파이를 이용한 라이프 로깅 시작 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.