Pemantauan Suhu Ruangan Berbasis Raspberry Pi dengan Grafik Gnuplot dan Peringatan Email
Di lingkungan komputasi berkinerja tinggi, mempertahankan suhu lingkungan yang optimal sangat penting. Panduan berikut menjelaskan cara membangun sistem pemantauan suhu real-time yang andal menggunakan Raspberry Pi, sensor suhu/kelembaban USB, Gnuplot untuk analitik visual, dan Gmail untuk peringatan otomatis.
Langkah 1: Pengaturan Hardware
Sambungkan sensor suhu/kelembaban USB langsung ke port USB Pi. Untuk sensor daya rendah, suplai 5 V bawaan Pi cukup; untuk perangkat daya lebih tinggi gunakan hub yang dipasok daya untuk menghindari membebani Pi.
Sensor mem-stream string serial seperti:
temperature=20.9°C humidity=62.7% dewpoint=13.0°C
Skrip Python membaca data ini setiap lima menit, mencatat stempel waktu, dan menulis tiga log rolling: daily.dat, 24hour.dat, dan 48hour.dat. Berkas ini memberikan masukan ke Gnuplot untuk menghasilkan visualisasi terbaru.
Langkah 2: Perangkat Lunak – Web Server & Dependensi
Instal Apache untuk hosting dasbor pemantauan:
sudo apt-get install apache2
Instal paket Python yang diperlukan:
sudo apt-get install python-serial python-gnuplot
Letakkan berkas HTML dasbor di /var/www/html. Halaman menarik gambar PNG terbaru (daily.png, 24hour.png, 48hour.png) yang dihasilkan oleh Gnuplot.
Langkah 3: Konfigurasi Peringatan Email
Buat akun Gmail khusus untuk peringatan (server SMTP apa pun juga berfungsi dengan pengaturan port yang benar). Dalam skrip Python, konfigurasikan detail SMTP:
from_address = "[email protected]"
username = "[email protected]"
password = "kata_sandi_email_Anda"
Definisikan penerima:
to_addresses = ["recipient1@example.com", "recipient2@example.com"]
Ketika suhu melebihi ambang yang telah ditentukan, skrip mengirim email yang berisi gambar Gnuplot yang relevan sehingga penerima segera melihat tingkat keparahan.
Langkah 4: Pemrosesan Serial & Pencatatan Data
Konfigurasikan port serial untuk mencocokkan format 9600 bps, 8-N-1 sensor:
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
Parse string yang masuk dengan menemukan kata kunci “temperature” dan mengekstrak nilai numerik. Simpan pembacaan dengan stempel waktu ke dalam tiga berkas log:
from time import strftime, localtime
timestamp = strftime("%d%b%Y %H:%M:%S", localtime())
# Tambahkan ke berkas
Langkah 5: Pembuatan Grafik Gnuplot
Gunakan Gnuplot untuk mengonversi berkas log menjadi gambar PNG. Skrip contoh untuk grafik harian:
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')
Ulangi dengan nama berkas yang sesuai untuk tampilan 24‑jam dan 48‑jam.
Langkah 6: Dasbor & Logika Peringatan
Halaman HTML yang disajikan oleh Apache me-refresh gambar PNG setiap menit, memberikan snapshot visual langsung. Skrip Python memeriksa suhu terbaru; jika melebihi batas yang ditentukan pengguna, ia memicu email SMTP dengan grafik terbaru sebagai lampiran.
Pengaturan ini menawarkan solusi hemat biaya dan open-source untuk pemantauan lingkungan berkelanjutan, memastikan peringatan segera dan visualisasi data historis.