Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Создайте домашний монитор температуры на Raspberry Pi с MCP9808, InfluxDB и Grafana

После приобретения Raspberry Pi и изучения руководства Эбена Аптона по Raspberry Pi — особенно разделов о GPIO — я приступил к первому проекту: системе мониторинга температуры дома. Этот пост детализирует первую итерацию с Raspberry Pi, платой Adafruit MCP9808, старым Mac Mini, InfluxDB, Grafana, Python и супервизором процессов runit.

Железо датчика

Для датчика температуры я выбрал плату MCP9808 от Adafruit. Выбор обусловлен:

Сборка схемы

Плата MCP9808 поставляется почти собранной; единственная пайка — прикрепление 8-пинового хедера. Я использовал GPIO breakout и макетную плату для подключения Pi к датчику, упрощая проводку и облегчая будущие правки. Основные соединения:

Остальные выводы — для выбора адреса и алертов — оставлены неподключенными для этой конфигурации с одним устройством.

Хранилище данных

Захват данных во времени позволяет анализировать тренды и коррелировать с внешними событиями. Я выбрал InfluxDB за фокус на временных рядах и интуитивный язык запросов. База работает на раннем 2009 Mac Mini (OS X 10.10) под Homebrew:

brew install influxdb

Настройка базы InfluxDB

После установки создал базу и выделенного пользователя через веб-консоль (порт 8083 по умолчанию). Также настроил базу mcp9808_test для хранения показаний датчика.

Конфигурация Raspberry Pi

Включение I²C

Pi не загружает модули I²C по умолчанию. Добавьте в /etc/modules и перезагрузитесь:

i2c-bcm2708
i2c-dev

Проверьте обнаружение датчика:

sudo i2cdetect 1

Программное обеспечение датчика

Использовал Python-обертку Adafruit для MCP9808, которая также подтягивает слой абстракции I²C.

Установка зависимостей сборки

sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus

Установка обертки Adafruit MCP9808

cd ~/Downloads
git clone https://github.com/adafruit/Adafruit_Python_MCP9808
cd Adafruit_Python_MCP9808
sudo python setup.py install

Чтение, отчет, повторение

Ниже скрипт poll.py, читающий температуру каждую минуту и пишущий в InfluxDB:

#!/usr/bin/python
import time
import Adafruit_MCP9808.MCP9808 as MCP9808
from influxdb import InfluxDBClient

# Подготовка payload для InfluxDB
def temperature_data(degrees_c):
    return [{
        'points': [[c_to_f(degrees_c)]],
        'name': 'Temperature Readings',
        'columns': ['degrees_f']
    }]

# Конвертация Цельсия в Фаренгейты
def c_to_f(c):
    return c * 9.0 / 5.0 + 32.0

# Инициализация датчика
sensor = MCP9808.MCP9808()
sensor.begin()

# Интервал захвата в секундах
capture_interval = 60.0

# Подключение к InfluxDB (замените плейсхолдеры на реальные значения)
influxClient = InfluxDBClient('', 8086, 'mcp9808', '', 'mcp9808_test')

# Непрерывный цикл
while True:
    temp_c = sensor.readTempC()
    print('Temperature {0:0.3} F'.format(c_to_f(temp_c)))
    influxClient.write_points(temperature_data(temp_c))
    time.sleep(capture_interval)

Запустите скрипт от root для доступа к GPIO:

sudo python /path/to/poll.py

Супервизия процесса с runit

Чтобы poll.py оставался живым после перезагрузок и циклов питания, настроил runit как супервизор процессов. Подробные шаги в оригинальной документации проекта.

Итог

С датчиком, базой данных и стеком мониторинга на месте, у вас теперь надежный, дешевый домашний логгер температуры. Используйте Grafana для визуализации данных, настройки алертов и получения действенных инсайтов об окружении.

Производственный процесс

  1. Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
  2. Точный температурный профиль Raspberry Pi с Python, SQLite и LabVIEW
  3. Подключение нескольких DS18B20 1-Wire датчиков к Raspberry Pi для точного мониторинга температуры
  4. Raspberry Pi сетевой монитор температуры и влажности — руководство по DIY сборке
  5. Как считывать температуру с DS18B20 на Raspberry Pi 2
  6. Профессиональный мониторинг температуры на Raspberry Pi с датчиком DS18B20
  7. Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
  8. ИК-датчик температуры TMP006 с Raspberry Pi: библиотека Python и руководство по настройке
  9. Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
  10. Создание метеостанции на Raspberry Pi с ежедневными email-отчётами о погоде