Мониторинг температуры помещения на Raspberry Pi с графиками Gnuplot и email-алертами
В среде высокопроизводительных вычислений поддержание оптимальной окружающей температуры критично. Следующее руководство объясняет, как построить надёжную систему мониторинга температуры в реальном времени с использованием Raspberry Pi, USB-датчика температуры/влажности, Gnuplot для визуальной аналитики и Gmail для автоматизированных алертов.
Шаг 1: Подключение железа
Подключите USB-датчик температуры/влажности напрямую к USB-порту Pi. Для низкопотребляющих датчиков нативного 5-В питания Pi достаточно; для более прожорливых устройств используйте активный хаб, чтобы не перегрузить Pi.
Датчик стримит последовательную строку вроде:
temperature=20.9°C humidity=62.7% dewpoint=13.0°C
Python-скрипт читает эти данные каждые пять минут, добавляет таймстамп и пишет в три кольцевых лога: daily.dat, 24hour.dat и 48hour.dat. Эти файлы кормят Gnuplot для генерации актуальных визуализаций.
Шаг 2: Софт — веб-сервер и зависимости
Установите Apache для хостинга дашборда мониторинга:
sudo apt-get install apache2
Установите необходимые Python-пакеты:
sudo apt-get install python-serial python-gnuplot
Разместите HTML-файлы дашборда в /var/www/html. Страница подтягивает последние PNG-изображения (daily.png, 24hour.png, 48hour.png), генерируемые Gnuplot.
Шаг 3: Настройка email-алертов
Создайте отдельный Gmail-аккаунт для алертов (любой SMTP-сервер подойдёт с правильными настройками порта). В Python-скрипте настройте SMTP-детали:
from_address = "[email protected]" username = "[email protected]" password = "your_email_password"
Определите получателей:
to_addresses = ["recipient1@example.com", "recipient2@example.com"]
Когда температура превышает заданный порог, скрипт шлёт email с прикреплённым Gnuplot-графиком, чтобы получатели мгновенно увидели серьезность ситуации.
Шаг 4: Парсинг последовательных данных и логирование
Настройте последовательный порт под 9600 бод, 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())
# Append to files
Шаг 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: Дашборд и логика алертов
HTML-страница, отдаваемая Apache, обновляет PNG-изображения каждую минуту, давая живой визуальный снимок. Python-скрипт проверяет последнюю температуру; если она превышает пользовательский лимит, триггерит SMTP-email с последним графиком во вложении.
Эта установка предлагает дешёвое open-source решение для непрерывного экологического мониторинга, обеспечивающее как мгновенные алерты, так и визуализацию исторических данных.
Производственный процесс
- Интегрированная система контроля доступа с QR, RFID и верификацией температуры
- Подключение нескольких DS18B20 1-Wire датчиков к Raspberry Pi для точного мониторинга температуры
- Эффективный мониторинг температуры серверных с Raspberry Pi и Nagios
- Как считывать температуру с DS18B20 на Raspberry Pi 2
- Домашний монитор температуры и влажности на Raspberry Pi с веб-дашбордом — удаленный трекинг в реальном времени
- Профессиональный мониторинг температуры на Raspberry Pi с датчиком DS18B20
- Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Домашний энергетический центр: мониторинг солнечных панелей, тепловых коллекторов и температуры комнат на Ra…
- Бесшовный мониторинг температуры и влажности на Raspberry Pi с EzTemp