Оглавление:
- Шаг 1. Получение данных наклона в Python
- Шаг 2. Подключение устройства к облаку
- Шаг 3. Отправка данных в облако
- Шаг 4: окончательный результат
Видео: Как контролировать температуру и плотность брожения пива со смартфона: 4 шага (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:54
Во время брожения следует ежедневно следить за его плотностью и температурой. Об этом легко забыть, а если вас нет - невозможно.
Погуглив, я нашел несколько решений для автоматического мониторинга силы тяжести (раз, два, три). Один из них, с очень умной концепцией, называется Tilt. Наклон плавает в вашем пиве и измеряет собственный угол наклона. Этот угол зависит от плотности жидкости и, следовательно, может измерять плотность бродящего пива.
Tilt поставляется с мобильным приложением, которое подключается к нему и может отправлять данные в любой веб-сервис. Проблема в том, что для этого вам нужно находиться недалеко от Tilt. Также существует программа Raspberry Pi, которая работает с Tilt.
Шаг 1. Получение данных наклона в Python
Я уже использую Raspberry Pi для мониторинга температуры подвала и службу облачной панели управления cloud4rpi.io. Если Tilt может разговаривать с Raspberry Pi, возможно, к нему подключится cloud4rpi. Tilt использует беспроводной протокол, поэтому вам понадобится Raspberry Pi с беспроводным чипом (Rasbperry Pi 3 или Zero W).
К счастью, есть репозиторий GitHub для программного обеспечения Tilt с некоторыми примерами. Посмотрев на https://github.com/baronbrew/tilt-scan, вы увидите, что Tilt выглядит для других как BLE iBeacon, с «Color», закодированным в UUID, а температура и гравитация указаны в старших и второстепенных байтах.
Их пример кода предназначен для Node.js, и у меня есть управляющая программа Python на основе шаблона cloud4rpi
Итак, мне нужно получить данные о наклоне в Python. После некоторого поиска в Google я нашел https://github.com/switchdoclabs/iBeacon-Scanner- - Python iBeacon scanner. Это программа, а не библиотека, поэтому я модифицировал ее, чтобы она возвращала словарь вместо строки. И я также написал специальный модуль для наклона, чтобы получить цвет, температуру и плотность первого найденного наклона (у меня есть только один), и простую тестовую программу, чтобы проверить, видит ли он мой наклон:
время импорта
в то время как True:
res = tilt.getFirstTilt () время печати res.sleep (2)
Запускаем и проверяем, что работает. Теперь я могу подключить его к своей управляющей программе. У меня уже есть программа на Python, подключенная к cloud4rpi.io, но позвольте мне показать, как это сделать с нуля.
Шаг 2. Подключение устройства к облаку
Сначала войдите в cloud4rpi.io, затем создайте новое устройство.
Вам будет предоставлен токен устройства и инструкция по установке. Для Raspberry Pi следуйте инструкциям здесь https://docs.cloud4rpi.io/start/rpi/ - убедитесь, что ваша система обновлена:
sudo apt update && sudo apt upgrade
Установите необходимые компоненты:
sudo apt install git python python-pip
Установите пакеты python cloud4rpi:
sudo pip установить cloud4rpi
затем получите образец приложения Python для Raspberry Pi (в папку управления):
git clone https://github.com/cloud4rpi/cloud4rpi-raspberryp… контроль
cd control
изменить control.py - указать токен вашего устройства в строке
DEVICE_TOKEN = ‘_YOUR_DEVICE_TOKEN_’
Удалите ненужные записи из объявлений переменных устройства, оставьте только CPUTemp для проверки подключения устройства:
# Поместите сюда объявления переменных variables = {'CPU Temp': {'type': 'numeric', 'bind': rpi.cpu_temp}}
Теперь сделайте тестовый запуск:
sudo python control.py
Если все в порядке, страница вашего устройства будет немедленно обновлена диагностическими данными.
Шаг 3. Отправка данных в облако
Теперь нам нужно изменить control.py, чтобы читать и сообщать о цвете, температуре и силе тяжести Tilt. Результат выглядит так:
from os import unamefrom socket import gethostname import sys import time import cloud4rpi import rpi import tilt
# Поместите сюда токен вашего устройства. Чтобы получить жетон, # зарегистрируйтесь на https://cloud4rpi.io и создайте устройство. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'
# Константы
DATA_SENDING_INTERVAL = 60 # секунд DIAG_SENDING_INTERVAL = 600 # секунд POLL_INTERVAL = 0,5 # 500 мс
маяк = {}
def F2C (градусыF):
возврат (градусыF - 32) / 1,8
def getTemp ():
вернуть F2C (int (beacon ['Temp'])), если beacon else None
def getGravity ():
возвратный маяк ['Гравитация'] если маяк иначе Нет
def main ():
# Поместите сюда объявления переменных
переменные = {'Gravity': {'type': 'numeric', 'bind': getGravity}, 'Beer Temp': {'type': 'numeric', 'bind': getTemp}}
диагностика = {
'CPU Temp': rpi.cpu_temp, 'IP Address': rpi.ip_address, 'Host': gethostname (), 'Operating System': "".join (uname ())}
device = cloud4rpi.connect (DEVICE_TOKEN)
device.declare (переменные) device.declare_diag (диагностика)
device.publish_config ()
# Добавляет задержку в 1 секунду, чтобы гарантировать создание переменных устройства
время сна (1)
пытаться:
data_timer = 0 diag_timer = 0 while True: if data_timer <= 0: глобальный beacon beacon = tilt.getFirstTilt () device.publish_data () data_timer = DATA_SENDING_INTERVAL
если diag_timer <= 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL
time.sleep (POLL_INTERVAL)
diag_timer - = POLL_INTERVAL data_timer - = POLL_INTERVAL
кроме KeyboardInterrupt:
cloud4rpi.log.info («Получено прерывание клавиатуры. Остановка…»)
кроме исключения как e:
error = cloud4rpi.get_error_message (e) cloud4rpi.log.error («ОШИБКА!% s% s», ошибка, sys.exc_info () [0])
наконец:
sys.exit (0)
если _name_ == '_main_':
главный()
Теперь запустите его вручную, чтобы проверить, работает ли он:
sudo python control.py
Если все в порядке, вы увидите свои переменные в Интернете.
Чтобы запустить control.py при запуске системы, установите его как службу. Cloud4rpi предоставляет для этого установочный скрипт service_install.sh. Я включил его в свое репо. Чтобы установить control.py как службу, запустите
sudo bash service_install.sh control.py
Теперь вы можете запустить | остановить | перезапустить эту службу, выполнив команду
sudo systemctl start cloud4rpi.service
Сервис сохраняет свое предыдущее состояние при включении питания, поэтому, если он был запущен, он будет работать после перезагрузки или потери питания.
Шаг 4: окончательный результат
Вот и все, теперь мои параметры наклона отправляются в облако, поэтому я могу настроить для него красивую облачную панель управления. Перейдите на https://cloud4rpi.io/control-panels и создайте новую панель управления, добавьте виджет и выберите / Gravity and Beer Temp в качестве источника данных. Теперь я могу следить за происходящим, даже если меня нет дома.
Код, который я скопировал и написал, доступен здесь: https://github.com/superroma/tilt-cloud4rpi. Он далек от совершенства, он работает только с одним наклоном, его не волнует «Цвет» устройства, что бы это ни значило, и я совсем не парень Python, поэтому исправления, предложения или вилки приветствуются. !
Рекомендуемые:
Лампа Minecraft Ore - настраиваемый размер и плотность пикселей: 4 шага
Minecraft Ore Lamp - настраиваемый размер и плотность пикселей: мой семилетний ребенок одержим Minecraft, поэтому я решил построить что-то похожее для него. В поисках вариантов есть классный проект лампы от Дэна Дж. Хамера в Thingiverse, но, немного подправив его, я решил начать свой собственный проект (вы
DuvelBot - Робот для раздачи пива ESP32-CAM: 4 шага (с изображениями)
DuvelBot - робот для раздачи пива ESP32-CAM: после тяжелого рабочего дня ничто не сравнится с тем, чтобы потягивать любимое пиво на диване. В моем случае это бельгийский светлый эль "Duvel". Однако после всего этого, кроме развала, мы сталкиваемся с серьезнейшей проблемой: продолжением холодильника
Как использовать датчик температуры DHT11 с Arduino и температуру печати и температуру: 5 шагов
Как использовать датчик температуры DHT11 с Arduino и печатью Температура и влажность: Датчик DHT11 используется для измерения температуры и влажности. Они очень популярные любители электроники. Датчик влажности и температуры DHT11 позволяет очень легко добавлять данные о влажности и температуре в ваши проекты электроники своими руками. Это за
Как: контролировать скорость двигателя ?: 5 шагов (с изображениями)
Как: управлять скоростью двигателя ?: Если у вас есть пара двигателей постоянного тока, первый вопрос приходит на ум: как я буду контролировать скорость этих двигателей! Итак, в этой инструкции я покажу, насколько легко это сделать! Вам лень смотреть видео на моем канале Также Huge Tha
ESP8266: Как контролировать температуру и влажность: 12 шагов
ESP8266: как контролировать температуру и влажность: в сегодняшнем руководстве мы будем использовать ESP-01, который является ESP8266 в конфигурации 01 (только с 2 GPIO), для показаний температуры и влажности датчика DHT22. Я покажу вам электрическую схему и часть программирования ESP с Arduino