Tabla de contenido:

Cómo controlar la temperatura y la gravedad de la fermentación de la cerveza desde su teléfono inteligente: 4 pasos (con imágenes)
Cómo controlar la temperatura y la gravedad de la fermentación de la cerveza desde su teléfono inteligente: 4 pasos (con imágenes)

Video: Cómo controlar la temperatura y la gravedad de la fermentación de la cerveza desde su teléfono inteligente: 4 pasos (con imágenes)

Video: Cómo controlar la temperatura y la gravedad de la fermentación de la cerveza desde su teléfono inteligente: 4 pasos (con imágenes)
Video: La forma correcta de Macerar. Haz Cervezas Extraordinarias 2024, Noviembre
Anonim
Cómo controlar la temperatura y la gravedad de la fermentación de la cerveza desde su teléfono inteligente
Cómo controlar la temperatura y la gravedad de la fermentación de la cerveza desde su teléfono inteligente

Cuando la cerveza está fermentando, debe controlar su gravedad y temperatura diariamente. Es fácil olvidarse de hacerlo e imposible si no está.

Después de buscar en Google, encontré varias soluciones para el monitoreo automatizado de la gravedad (uno, dos, tres). Uno de ellos, con un concepto muy ingenioso, se llama Tilt. La inclinación está flotando en su cerveza y mide su propio ángulo de inclinación. Este ángulo depende de la densidad del líquido y, por lo tanto, puede medir la gravedad de la cerveza en fermentación.

Tilt viene con una aplicación móvil que se conecta y puede publicar datos en cualquier servicio web. El problema es que necesitas estar cerca de Tilt para poder hacerlo. También hay un programa Raspberry Pi que funciona con Tilt.

Paso 1: obtener datos de inclinación en Python

Obtener datos de inclinación en Python
Obtener datos de inclinación en Python

Ya estoy usando Raspberry Pi para monitorear la temperatura de la bodega y un servicio de panel de control en la nube cloud4rpi.io. Si Tilt puede hablar con Raspberry Pi, debería ser posible conectar cloud4rpi a él. Tilt utiliza un protocolo inalámbrico, por lo que necesitará una Raspberry Pi con un chip inalámbrico (Rasbperry Pi 3 o Zero W).

Afortunadamente, hay un repositorio de GitHub para el software Tilt con algunas muestras. Mirando https://github.com/baronbrew/tilt-scan, puede ver que Tilt ve a otros como BLE iBeacon, con el “Color” codificado en UUID, y la temperatura y la gravedad están en bytes mayores y menores.

Su código de muestra es para Node.js, y tengo un programa de control de Python basado en la plantilla de cloud4rpi

Entonces necesito obtener datos de Tilt en Python. Después de buscar en Google, encontré https://github.com/switchdoclabs/iBeacon-Scanner- - Escáner Python iBeacon. Este es un programa, no una biblioteca, así que lo modifiqué para devolver un diccionario en lugar de una cadena. Y también escribí un módulo específico de Tilt para obtener el color, la temperatura y la gravedad del primer Tilt encontrado (solo tengo uno), y un programa de prueba simple para verificar si puede ver mi Tilt:

tiempo de importación

mientras que es cierto:

res = tilt.getFirstTilt () imprimir res time.sleep (2)

Ejecutar y comprobar que funciona. Ahora puedo conectarlo a mi programa de control. Ya tengo un programa de Python conectado a cloud4rpi.io, pero déjame mostrarte cómo hacerlo desde cero.

Paso 2: conectar el dispositivo a la nube

Conexión del dispositivo a la nube
Conexión del dispositivo a la nube
Conexión del dispositivo a la nube
Conexión del dispositivo a la nube

Primero, inicie sesión en cloud4rpi.io y luego cree un nuevo dispositivo.

Se le entregará un token de dispositivo e instrucciones de instalación. Para Raspberry Pi, siga las instrucciones aquí https://docs.cloud4rpi.io/start/rpi/ - asegúrese de que su sistema esté actualizado:

actualización de sudo apt && actualización de sudo apt

Instalar requisitos previos:

sudo apt instalar git python python-pip

Instale los paquetes de python de cloud4rpi:

sudo pip instalar cloud4rpi

luego obtenga una aplicación de Python de muestra para Raspberry Pi (en la carpeta de control):

git clone https://github.com/cloud4rpi/cloud4rpi-raspberryp… control

control de cd

modificar control.py: especifica el token de tu dispositivo en la línea

DEVICE_TOKEN = "_YOUR_DEVICE_TOKEN_"

Elimine las entradas innecesarias de las declaraciones de variables de dispositivo, deje solo CPUTemp para probar la conexión del dispositivo:

# Ponga aquí las declaraciones de variables variables = {'CPU Temp': {'type': 'numeric', 'bind': rpi.cpu_temp}}

Ahora haz una prueba:

sudo python control.py

Si todo está bien, la página de su dispositivo se actualizará inmediatamente con datos de diagnóstico.

Paso 3: envío de datos a la nube

Enviando datos a la nube
Enviando datos a la nube

Ahora necesitamos modificar control.py para leer e informar el color, la temperatura y la gravedad de Tilt. El resultado se ve así:

from os import unamefrom socket import gethostname import sys import time import cloud4rpi import rpi import tilt

# Pon el token de tu dispositivo aquí. Para conseguir el token

# regístrese en https://cloud4rpi.io y cree un dispositivo. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

# Constantes

DATA_SENDING_INTERVAL = 60 # segundos DIAG_SENDING_INTERVAL = 600 # segundos POLL_INTERVAL = 0.5 # 500 ms

baliza = {}

def F2C (gradosF):

retorno (grados F - 32) / 1.8

def getTemp ():

return F2C (int (beacon ['Temp'])) si beacon else None

def getGravity ():

devolver baliza ['Gravedad'] si baliza más Ninguno

def principal ():

# Ponga aquí las declaraciones de variables

variables = {'Gravity': {'type': 'numeric', 'bind': getGravity}, 'Beer Temp': {'type': 'numeric', 'bind': getTemp}}

diagnostics = {

'CPU Temp': rpi.cpu_temp, 'Dirección IP': rpi.ip_address, 'Host': gethostname (), 'Operating System': "".join (uname ())}

dispositivo = cloud4rpi.connect (DEVICE_TOKEN)

device.declare (variables) device.declare_diag (diagnóstico)

device.publish_config ()

# Agrega un retraso de 1 segundo para garantizar que se creen las variables del dispositivo

hora de dormir (1)

tratar:

data_timer = 0 diag_timer = 0 while True: si data_timer <= 0: baliza global baliza = tilt.getFirstTilt () device.publish_data () data_timer = DATA_SENDING_INTERVAL

si diag_timer <= 0: dispositivo.publish_diag () diag_timer = DIAG_SENDING_INTERVAL

time.sleep (POLL_INTERVAL)

diag_timer - = POLL_INTERVAL data_timer - = POLL_INTERVAL

excepto KeyboardInterrupt:

cloud4rpi.log.info ('Se recibió una interrupción del teclado. Deteniendo …')

excepto la excepción como e:

error = cloud4rpi.get_error_message (e) cloud4rpi.log.error ("ERROR!% s% s", error, sys.exc_info () [0])

finalmente:

sys.exit (0)

if _name_ == '_main_':

principal()

Ahora ejecútelo manualmente para ver si funciona:

sudo python control.py

Si todo está bien, verá sus variables en línea.

Para ejecutar control.py al iniciar el sistema, instálelo como un servicio. Cloud4rpi proporciona un script de instalación service_install.sh para hacerlo. Lo he incluido en mi repositorio. Para instalar control.py como servicio, ejecute

sudo bash service_install.sh control.py

Ahora puede iniciar | detener | reiniciar este servicio ejecutando el comando

sudo systemctl iniciar cloud4rpi.service

El servicio mantiene su estado anterior al encender, por lo que si estaba en ejecución, lo estará después del reinicio o la pérdida de energía.

Paso 4: resultado final

Resultado final
Resultado final

Esto es todo, ahora tengo mis parámetros de Tilt enviados a la nube, por lo que puedo configurar un buen panel de control en la nube para ello. Vaya a https://cloud4rpi.io/control-panels y cree un nuevo panel de control, agregue un widget y seleccione / Gravity and Beer Temp como fuente de datos. Ahora puedo controlar lo que sucede incluso si estoy fuera de casa.

El código que copié y escribí está disponible aquí: https://github.com/superroma/tilt-cloud4rpi. Está lejos de ser perfecto, funciona solo con una sola inclinación, no le importa el "color" del dispositivo, lo que sea que signifique, y no soy un tipo de Python en absoluto, por lo que las correcciones, sugerencias o bifurcaciones son bienvenidas. !

Recomendado: