Съдържание:

Как да контролирате температурата и тежестта на ферментацията на бирата от вашия смартфон: 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, с „Цвят“, кодиран в UUID, а температурата и гравитацията са в големи и малки байтове.

Примерният им код е за Node.js и аз имам програма за контрол на Python, базирана на шаблон cloud4rpi

Така че трябва да получа данни за Tilt в Python. След малко гугъл намерих https://github.com/switchdoclabs/iBeacon-Scanner-- скенер Python iBeacon. Това е програма, а не библиотека, затова я модифицирах, за да върна речник вместо низ. Написах и модул, специфичен за Tilt, за да получа цвета, температурата и тежестта на първия намерен Tilt (имам само един) и проста програма за тестване, за да проверя дали може да види моя Tilt:

време за импортиране импорт наклон

докато е вярно:

res = tilt.getFirstTilt () печат res time.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

Инсталирайте cloud4rpi python пакети:

sudo pip инсталирайте cloud4rpi

след това вземете примерно приложение на python за Raspberry Pi (в контролна папка):

git clone https://github.com/cloud4rpi/cloud4rpi-raspberryp… контрол

cd контрол

модифицирайте control.py - посочете маркера на вашето устройство в реда

DEVICE_TOKEN = ‘_YOUR_DEVICE_TOKEN_’

Премахнете ненужните записи от декларациите на променливите на устройството, оставете само CPUTemp за тестване на връзката с устройството:

# Поставете декларации на променливи тук променливи = {'CPU Temp': {'type': 'numeric', 'bind': rpi.cpu_temp}}

Сега направете пробно пускане:

sudo python control.py

Ако всичко е наред, страницата на вашето устройство веднага ще бъде актуализирана с диагностични данни.

Стъпка 3: Изпращане на данни в облака

Изпращане на данни в облака
Изпращане на данни в облака

Сега трябва да променим control.py, за да четем и докладваме цвета, температурата и гравитацията на Tilt. Резултатът изглежда така:

от os импортиране uname от гнездо импортиране gethostname импортиране sys време за импортиране внос cloud4rpi импортиране rpi импорт наклон

# Поставете маркера на устройството си тук. За да получите жетона, # регистрирайте се на https://cloud4rpi.io и създайте устройство. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

# Константи

DATA_SENDING_INTERVAL = 60 # секунди DIAG_SENDING_INTERVAL = 600 # секунди POLL_INTERVAL = 0,5 # 500 ms

маяк = {}

def F2C (градусиF):

връщане (градусиF - 32) / 1.8

def getTemp ():

връщане F2C (int (beacon ['Temp']))), ако beacon else None

def getGravity ():

return beacon ['Gravity'] ако маяк иначе Няма

def main ():

# Поставете декларации на променливи тук

variables = {'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 ())}

устройство = cloud4rpi.connect (DEVICE_TOKEN)

device.declare (променливи) device.declare_diag (диагностика)

device.publish_config ()

# Добавя закъснение от 1 секунда, за да гарантира създаването на променливи на устройството

time.sleep (1)

опитвам:

data_timer = 0 diag_timer = 0 while True: if data_timer <= 0: global 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:

грешка = cloud4rpi.get_error_message (e) cloud4rpi.log.error ("ГРЕШКА! %s %s", грешка, sys.exc_info () [0])

накрая:

sys.exit (0)

ако _name_ == '_main_':

main ()

Сега го стартирайте ръчно, за да видите дали работи:

sudo python control.py

Ако всичко е наред, ще видите вашите променливи онлайн.

За да стартирате control.py при стартиране на системата, инсталирайте го като услуга. Cloud4rpi предоставя скрипт за инсталиране service_install.sh, за да го направи. Включих го в моето репо. За да инсталирате control.py като услуга, стартирайте

sudo bash service_install.sh control.py

Сега можете да започнете | стоп | рестартирайте тази услуга, като изпълните команда

sudo systemctl стартира cloud4rpi.service

Услугата запазва предишното си състояние при включване, така че ако е работила, ще работи след рестартиране или загуба на захранване.

Стъпка 4: Краен резултат

Краен резултат
Краен резултат

Това е, сега изпращам параметрите на Tilt към облака, така че мога да настроя хубав облачен контролен панел за него. Отидете на https://cloud4rpi.io/control-panels и създайте нов контролен панел, добавете джаджа и изберете/Gravity and Beer Temp като източник на данни. Сега мога да наблюдавам какво се случва, дори ако съм далеч от дома.

Кодът, който копирах и написах, е достъпен тук: https://github.com/superroma/tilt-cloud4rpi. Той далеч не е перфектен, работи само с един наклон, не го интересува „Цветът“на устройството, каквото и да означава, и изобщо не съм човек на Python, така че поправки, предложения или вилици са добре дошли !

Препоръчано: