라즈베리 파이 기반 실내 온도 모니터링: Gnuplot 그래프와 이메일 알림
고성능 컴퓨팅 환경에서 최적의 주변 온도 유지는 필수적입니다. 다음 가이드는 라즈베리 파이, USB 온습도 센서, 시각 분석용 Gnuplot, 자동 알림용 Gmail을 사용해 신뢰할 수 있는 실시간 온도 모니터링 시스템을 구축하는 방법을 설명합니다.
1단계: 하드웨어 설정
USB 온습도 센서를 파이의 USB 포트에 직접 연결하세요. 저전력 센서는 파이의 기본 5V 전원으로 충분하며, 고전력 장치는 파이 과부하 방지를 위해 파워드 허브를 사용하세요.
센서는 다음과 같은 시리얼 문자열을 스트리밍합니다:
temperature=20.9°C humidity=62.7% dewpoint=13.0°C
파이썬 스크립트가 5분마다 이 데이터를 읽고 타임스탬프를 찍어 세 개의 롤링 로그(daily.dat, 24hour.dat, 48hour.dat)에 기록합니다. 이 파일들이 Gnuplot에 공급돼 최신 시각화를 생성합니다.
2단계: 소프트웨어 – 웹 서버 및 의존성
모니터링 대시보드 호스팅용 Apache 설치:
sudo apt-get install apache2
필수 파이썬 패키지 설치:
sudo apt-get install python-serial python-gnuplot
대시보드 HTML 파일을 /var/www/html에 배치하세요. 페이지는 Gnuplot이 생성한 최신 PNG 이미지(daily.png, 24hour.png, 48hour.png)를 불러옵니다.
3단계: 이메일 알림 설정
알림용 전용 Gmail 계정 생성 (올바른 포트 설정으로 아무 SMTP 서버나 작동). 파이썬 스크립트에서 SMTP 세부 정보 구성:
from_address = "[email protected]"
username = "[email protected]"
password = "your_email_password"
수신자 정의:
to_addresses = ["recipient1@example.com", "recipient2@example.com"]
온도가 사전 정의된 임계값을 초과하면 관련 Gnuplot 이미지를 첨부해 이메일을 발송하므로 수신자가 심각성을 즉시 파악할 수 있습니다.
4단계: 시리얼 파싱 및 데이터 로깅
센서의 9600bps, 8-N-1 형식에 맞춰 시리얼 포트 설정:
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
"temperature" 키워드를 찾아 숫자 값을 추출해 들어오는 문자열을 파싱하세요. 타임스탬프가 찍힌 판독값을 세 로그 파일에 저장:
from time import strftime, localtime
timestamp = strftime("%d%b%Y %H:%M:%S", localtime())
# 파일에 추가
5단계: Gnuplot 그래프 생성
Gnuplot으로 로그 파일을 PNG 이미지로 변환하세요. 일일 그래프 예제 스크립트:
import Gnuplot
p = Gnuplot.Gnuplot(debug=0)
p('cd "{path}"')
p('set xdata time')
p('set timefmt "%d%b%Y %H:%M:%S"')
p('set format x "%H:%M\n%d%b"')
p('set title "Daily Current Temperature Display"')
p('set key off')
p('set grid')
p('set xlabel "Time\nDate"')
p('set yrange [15:35]')
p('set ylabel "Temperature (°C)"')
p('set datafile missing "NaN"')
p('set terminal png size 800,400')
p('set output "daily.png"')
p('plot "daily.dat" using 1:($3) with lines')
적절한 파일명으로 24시간, 48시간 뷰도 동일하게 반복하세요.
6단계: 대시보드 및 알림 로직
Apache가 서빙하는 HTML 페이지가 PNG 이미지를 매분 새로고침해 실시간 시각적 스냅샷을 제공합니다. 파이썬 스크립트는 최신 온도를 확인하고 사용자 정의 한계를 넘으면 최신 그래프를 첨부해 SMTP 이메일을 트리거합니다.
이 설정은 지속적인 환경 모니터링을 위한 저비용 오픈소스 솔루션으로 즉각적인 알림과 과거 데이터 시각화를 모두 보장합니다.