Оглавление:
- Запасы
- Шаг 1. Подготовка оборудования
- Шаг 2. Установка Cloud4RPi
- Шаг 3: Подключение датчика
- Шаг 4: Отправка показаний датчика в облако
- Шаг 5: графики и сигналы тревоги
Видео: Влажность в облаке: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Приближается лето, и те, у кого нет кондиционера, должны быть готовы контролировать атмосферу в помещении вручную. В этом посте я описываю современный способ измерения самых важных параметров комфорта человека: температуры и влажности. Собранные данные отправляются в облако и там обрабатываются.
Запасы
Я использую плату 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, предназначенную для Интернета вещей.
Согласно документации, для его запуска нам понадобятся следующие пакеты:
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 и другими устройствами Интернета вещей удаленно в режиме реального времени. Посетите наш сайт и подключите неограниченное количество устройств бесплатно.
Рекомендуемые:
M5STACK Как отображать температуру, влажность и давление на M5StickC ESP32 с помощью Visuino - легко сделать: 6 шагов
M5STACK Как отображать температуру, влажность и давление на M5StickC ESP32 с помощью Visuino - легко: в этом руководстве мы узнаем, как запрограммировать ESP32 M5Stack StickC с Arduino IDE и Visuino для отображения температуры, влажности и давления с помощью датчика ENV (DHT12, BMP280, BMM150)
Температура и влажность с использованием ESP32-DHT22-MQTT-MySQL-PHP: 7 шагов
Температура и влажность с использованием ESP32-DHT22-MQTT-MySQL-PHP: Моя девушка хотела оранжерею, поэтому я сделал ее. Но мне нужен был датчик температуры и влажности внутри теплицы. Итак, я поискал примеры в Google и начал экспериментировать. Я пришел к выводу, что все найденные мной примеры не совсем то
Автоматизация теплицы с помощью LoRa! (Часть 1) -- Датчики (температура, влажность, влажность почвы): 5 шагов
Автоматизация теплицы с помощью LoRa! (Часть 1) || Датчики (температура, влажность, влажность почвы): в этом проекте я покажу вам, как я автоматизировал теплицу. Это означает, что я покажу вам, как я построил теплицу и как я подключил силовую и автоматическую электронику. Также я покажу вам, как программировать плату Arduino, которая использует L
Метеостанция Arduino с использованием BMP280-DHT11 - температура, влажность и давление: 8 шагов
Метеостанция Arduino с использованием BMP280-DHT11 - Температура, влажность и давление: в этом уроке мы узнаем, как создать метеостанцию, которая будет отображать ТЕМПЕРАТУРУ, ВЛАЖНОСТЬ И ДАВЛЕНИЕ на ЖК-дисплее TFT 7735Посмотрите демонстрационное видео
Как опубликовать данные ESP32 с отметкой времени NTP в облаке IoT: 5 шагов
Как опубликовать данные ESP32 с меткой времени NTP в облаке IoT: во многих приложениях пользователям необходимо отправлять свои данные вместе с локальной меткой времени значений, которые должны быть отправлены в полезной нагрузке, в облако AskSensors IoT. Формат метки времени - UNIX Epoch time: количество миллисекунд, прошедших с января