Оглавление:

Как контролировать температуру и плотность брожения пива со смартфона: 4 шага (с изображениями)
Как контролировать температуру и плотность брожения пива со смартфона: 4 шага (с изображениями)

Видео: Как контролировать температуру и плотность брожения пива со смартфона: 4 шага (с изображениями)

Видео: Как контролировать температуру и плотность брожения пива со смартфона: 4 шага (с изображениями)
Видео: Контроль температуры брожения в домашних условиях 2024, Июль
Anonim
Как контролировать температуру и плотность брожения пива с помощью смартфона
Как контролировать температуру и плотность брожения пива с помощью смартфона

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

Погуглив, я нашел несколько решений для автоматического мониторинга силы тяжести (раз, два, три). Один из них, с очень умной концепцией, называется Tilt. Наклон плавает в вашем пиве и измеряет собственный угол наклона. Этот угол зависит от плотности жидкости и, следовательно, может измерять плотность бродящего пива.

Tilt поставляется с мобильным приложением, которое подключается к нему и может отправлять данные в любой веб-сервис. Проблема в том, что для этого вам нужно находиться недалеко от Tilt. Также существует программа Raspberry Pi, которая работает с Tilt.

Шаг 1. Получение данных наклона в Python

Получение данных наклона в Python
Получение данных наклона в 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, поэтому исправления, предложения или вилки приветствуются. !

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