Точный мониторинг температуры в серверной на Raspberry Pi
Проблема
После ремонта домашнего офиса я выделил кладовку под всю электронику — серверы, NAS, AV-ресивер и прочее. Установил вытяжной вентилятор для отвода горячего воздуха в примыкающий офис, но температура в кладовке всё равно держится около 90 °F (32 °C) даже с работающим вентилятором. Хотя это в пределах допусков большинства оборудования, мне хотелось бы прохладнее. Чтобы понять, нужно ли дополнительное охлаждение, требовался надёжный способ записи изменений температуры в течение нескольких дней.
Использование Raspberry Pi для этой задачи идеально. Раньше я работал с аналоговым датчиком TMP36GZ на Arduino, но GPIO Pi только цифровые, поэтому аналоговый датчик не подходит без внешнего АЦП. Желалось простое решение, позволяющее сразу начать кодить.
Проблему решил цифровой датчик температуры DS18B20. Он общается по однопроводной шине, что идеально ложится на BCM GPIO4 (контакт 7) Pi. Датчик доступен прямо из Linux-терминала, и несколько DS18B20 могут делить одну линию данных.
Сборка
- Используйте короткий кусок витой пары CAT5e и припаяйте три вывода DS18B20: оранжевый = +3,3 В, коричневый = GND, зелёный = DATA.
- Установите подтягивающий резистор 4,7 кОм между 3,3 В и линией данных.
- Обитайте оголённую проводку изолентой и термоусадкой для защиты.
- На конце кабеля установите женские джамперные разъёмы для быстрого подключения к сплиттеру.
- Сделайте два Y-сплиттера 2 male → 1 female для объединения VDD, GND и DATA от двух датчиков в один контакт Pi.
- Подключите сплиттеры к Pi: 3,3 В — контакт 1, GND — контакт 6, DATA — контакт 7.
- Разместите датчики внутри кладовки — по разные стороны от вытяжного вентилятора — для улавливания температурных градиентов.
Ниже фото готовой сборки. Обратите внимание на три сплиттера, аккуратно вставленные в GPIO Pi.
Чтение датчика из терминала
После подключения DS18B20 их показания можно читать прямо из файловой системы. Следующие команды загружают нужные модули ядра, список устройств и выводят температуру выбранного датчика.
# Загрузка драйверов 1-Wire
sudo modprobe w1-gpio
sudo modprobe w1-therm
# Список подключенных устройств (например, 28-0000055f311a)
ls /sys/bus/w1/devices
# Чтение температуры с конкретного датчика
cat /sys/bus/w1/devices/28-0000055f311a/w1_slave
Файл w1_slave возвращает две строки. Первая содержит CRC-проверку; вторая заканчивается на t=XXXXX, где XXXXX — температура в тысячных долях градуса Цельсия. При необходимости конвертируйте в Фаренгейты.
С этой установкой можно логировать показания в CSV, отправлять данные на удалённый сервер или триггерить алерты при превышении порога. Точность DS18B20 ±0,5 °C — более чем достаточно для рутинного мониторинга железа.
Для детальных инструкций и примеров кода см. документацию Raspberry Pi GPIO и руководство Adafruit по DS18B20.
Производственный процесс
- Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
- Точный температурный профиль Raspberry Pi с Python, SQLite и LabVIEW
- Подключение нескольких DS18B20 1-Wire датчиков к Raspberry Pi для точного мониторинга температуры
- Эффективный мониторинг температуры серверных с Raspberry Pi и Nagios
- Raspberry Pi сетевой монитор температуры и влажности — руководство по DIY сборке
- Как считывать температуру с DS18B20 на Raspberry Pi 2
- Профессиональный мониторинг температуры на Raspberry Pi с датчиком DS18B20
- Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Домашний энергетический центр: мониторинг солнечных панелей, тепловых коллекторов и температуры комнат на Ra…