Оглавление:

Влажность в облаке: 5 шагов
Влажность в облаке: 5 шагов

Видео: Влажность в облаке: 5 шагов

Видео: Влажность в облаке: 5 шагов
Видео: Урок 189. Влажность воздуха. Абсолютная и относительная влажность 2024, Ноябрь
Anonim
Влажность в облаке
Влажность в облаке

Приближается лето, и те, у кого нет кондиционера, должны быть готовы контролировать атмосферу в помещении вручную. В этом посте я описываю современный способ измерения самых важных параметров комфорта человека: температуры и влажности. Собранные данные отправляются в облако и там обрабатываются.

Запасы

Я использую плату Raspberry Pi и датчик DHT22. Вы можете сделать то же самое на любом компьютере, на котором есть Интернет, GPIO и Python. Более дешевый датчик DHT11 тоже работает нормально.

Шаг 1. Подготовка оборудования

Подготовка оборудования
Подготовка оборудования
Подготовка оборудования
Подготовка оборудования
Подготовка оборудования
Подготовка оборудования
Подготовка оборудования
Подготовка оборудования

Начнем с самого начала, так как я довольно давно не использовал свой Raspberry Pi.

Нам понадобится:

  • Плата Raspberry Pi (или другая платформа, ориентированная на IoT).
  • Карта SD или microSD (в зависимости от платформы).
  • 5V / 1A через кабель micro-USB. LAN, обеспечивающий выход в Интернет.
  • Дисплей HDMI, дисплей RCA или порт UART (для включения SSH).

Самый первый шаг - это загрузка Raspbian. Я выбрал облегченную версию, так как собираюсь использовать SSH вместо дисплея.

Ситуация изменилась с тех пор, как я это делал в последний раз: теперь есть отличное программное обеспечение для записи под названием Etcher, которое отлично работает и имеет потрясающий дизайн.

После завершения записи образа я вставил SD-карту в свой Pi, подключил LAN и кабели питания, и через некоторое время мой маршрутизатор зарегистрировал новое устройство.

Большой! Давайте продолжим и подключимся по SSH.

С безопасностью все в порядке, мне это нравится, но это немного усложняет задачу. Я воспользуюсь адаптером UART-USB для доступа к оболочке и включения SSH…

Использование дисплея вместо UART значительно упрощает задачу.

После перезагрузки наконец-то в деле.

Перво-наперво, давайте обновим:

sudo apt update && sudo apt upgrade -y

Теперь давайте подключим это новое устройство к облаку.

Шаг 2. Установка Cloud4RPi

Установка Cloud4RPi
Установка Cloud4RPi

Я решил попробовать облачную платформу Cloud4RPi, предназначенную для Интернета вещей.

Согласно документации, для его запуска нам понадобятся следующие пакеты:

sudo apt install git python3 python3-pip -y

Клиентскую библиотеку можно установить одной командой:

sudo pip3 установить cloud4rpi

Теперь нам нужен образец кода.

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python

Исполняемый скрипт - control.py.

Нам нужен токен, который позволяет Cloud4RPi связывать устройства с учетными записями. Чтобы получить его, создайте учетную запись на cloud4rpi.io и нажмите кнопку «Новое устройство» на этой странице. Замените строку _YOUR_DEVICE_TOKEN_ в файле control.py токеном вашего устройства и сохраните файл. Теперь мы готовы к первому запуску.

sudo python3 control.py

Откройте страницу устройства и проверьте наличие данных.

Теперь перейдем к реальным данным.

Шаг 3: Подключение датчика

Подключение датчика
Подключение датчика

Нам понадобится:

  • Датчик влажности DHT22 или DHT11
  • Подтягивающий резистор (5-10 кОм)
  • Провода

Датчик DHT22 одновременно измеряет температуру и влажность. Протокол связи не стандартизирован, поэтому нам не нужно включать его в raspi-config - простого вывода GPIO более чем достаточно.

Для сбора данных я буду использовать отличную библиотеку Adafruit для датчиков DHT, но она может не работать как есть. Однажды я обнаружил странную постоянную задержку в коде, которая не работала на моем оборудовании, и через два года мой запрос на перенос все еще ожидает обработки. Я также изменил константы обнаружения платы, потому что мой Raspberry Pi 1 с BCM2835 был неожиданно обнаружен как Raspberry Pi 3. Я бы хотел, чтобы это было правдой… Таким образом, я рекомендую использовать свою вилку. Если у вас возникнут проблемы с этим, попробуйте исходный репозиторий, возможно, он у кого-то работает, но я не один из них.

git clone https://github.com/Himura2la/Adafruit_Python_DHT.gitcd Adafruit_Python_DHT

Поскольку библиотека написана на C, она требует компиляции, поэтому вам понадобятся пакеты build-essential и python-dev.

sudo apt install build-essential python-dev -ysudo python setup.py install

Пока пакеты устанавливаются, подключите DHT22, как показано на рисунке.

И протестируем это:

cd ~ python -c "импортировать Adafruit_DHT как d; распечатать d.read_retry (d. DHT22, 4)"

Если вы видите что-то вроде (39.20000076293945, 22.600000381469727), знайте, что это влажность в процентах и температура в градусах Цельсия.

А теперь соберем все вместе!

Шаг 4: Отправка показаний датчика в облако

Отправка показаний датчика в облако
Отправка показаний датчика в облако
Отправка показаний датчика в облако
Отправка показаний датчика в облако

Я использую control.py в качестве основы и добавляю в него взаимодействие DHT22.

cp cloud4rpi-raspberrypi-python / control.py./cloud_dht22.pycp cloud4rpi-raspberrypi-python / rpi.py./rpi.pyvi cloud_dht22.py

Удалите образец кода, как на изображении выше.

Поскольку DHT22 возвращает и температуру, и влажность за один вызов, я собираюсь хранить их глобально и обновлять только один раз в запросе, предполагая, что задержка между ними составляет более 10 секунд. Рассмотрим следующий код, который получает данные DHT22:

импортировать Adafruit_DHT

temp, hum = None, None

last_update = time.time () - 20

def update_data ():

global last_update, hum, temp, если time.time () - last_update> 10: hum, temp = Adafruit_DHT.read_retry (Adafruit_DHT. DHT22, 4) last_update = time.time ()

def get_t ():

update_data () return round (temp, 2) if temp is not None else None def get_h (): update_data () return round (гул, 2) если гул не None else None

Вставьте этот код после существующего импорта и отредактируйте раздел переменных, чтобы он использовал новые функции:

переменные = {'DHT22 Temp': {'type': 'numeric', 'bind': get_t}, 'DHT22 Humidity': {'type': 'numeric', 'bind': get_h}, 'CPU Temp': {'тип': 'числовой', 'привязка': cpu_temp}}

Если вы сочтете эти манипуляции запутанными, возьмите финальную версию этого файла и нажмите красную кнопку, чтобы начать передачу данных:

Затем вы можете проверить страницу устройства.

python3 cloud_dht22.py

Затем вы можете проверить страницу устройства.

Вы можете оставить все как есть, но я предпочитаю иметь сервис для всего. Это гарантирует, что сценарий всегда выполняется. Создание сервиса с полностью автоматизированным скриптом, который у вас уже есть в каталоге cloud4rpi-raspberrypi-python:

service_install.sh cloud_dht22.py

Запуск службы:

sudo service cloud4rpi start

И проверяем это:

pi @ raspberrypi: ~ $ sudo service cloud4rpi status -l ● cloud4rpi.service - демон Cloud4RPi Загружено: загружено (/lib/systemd/system/cloud4rpi.service; enabled) Активно: активно (работает) с 17 мая 2017 г. 20: 22: 48 UTC; 1мин назад Основной PID: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 / usr / bin / python /home/pi/cloud_dht22.py

17 мая 20:22:51 raspberrypi python [560]: публикация iot-hub / messages: {'type': 'config', 'ts': '2017-05-17T20… y'}]}

17 мая 20:22:53 raspberrypi python [560]: публикация iot-hub / messages: {'type': 'data', 'ts': '2017-05-17T20: 2… 40'}} 17 мая, 20: 22:53 raspberrypi python [560]: публикация iot-хаба / сообщений: {'type': 'system', 'ts': '2017-05-17T20….4'}}

Если все работает, как ожидалось, мы можем продолжить и использовать возможности платформы Cloud4RPi для манипулирования данными.

Шаг 5: графики и сигналы тревоги

Графики и сигналы тревоги
Графики и сигналы тревоги
Графики и сигналы тревоги
Графики и сигналы тревоги
Графики и сигналы тревоги
Графики и сигналы тревоги

Прежде всего, давайте изобразим переменные, чтобы увидеть, как они меняются. Это можно сделать, добавив новую панель управления и поместив в нее необходимые диаграммы.

Еще одна вещь, которую мы можем сделать здесь, - это установить оповещение. Эта функция позволяет вам настроить безопасный диапазон для переменной. Как только диапазон выходит за рамки, он отправляет уведомление по электронной почте. На странице редактирования Панели управления вы можете переключиться на Оповещения и настроить их.

Сразу после этого влажность в моей комнате начала быстро падать без какой-либо заметной причины, и вскоре последовала тревога.

Вы можете использовать Cloud4RPi бесплатно с любым оборудованием, способным выполнять Python. Что касается меня, теперь я всегда знаю, когда включить увлажнитель воздуха, и я даже могу подключить его к реле для удаленного управления через Cloud4RPi. Я готов к жаре! Добро пожаловать, лето!

С Cloud4RPi вы можете управлять своим Raspberry Pi и другими устройствами Интернета вещей удаленно в режиме реального времени. Посетите наш сайт и подключите неограниченное количество устройств бесплатно.

Рекомендуемые: