Índice:

Como controlar a temperatura e a gravidade da fermentação da cerveja em seu smartphone: 4 etapas (com fotos)
Como controlar a temperatura e a gravidade da fermentação da cerveja em seu smartphone: 4 etapas (com fotos)

Vídeo: Como controlar a temperatura e a gravidade da fermentação da cerveja em seu smartphone: 4 etapas (com fotos)

Vídeo: Como controlar a temperatura e a gravidade da fermentação da cerveja em seu smartphone: 4 etapas (com fotos)
Vídeo: A Dieta da Mente David Perlmutter Audiobook Completo 2024, Dezembro
Anonim
Como controlar a temperatura e a gravidade da fermentação da cerveja em seu smartphone
Como controlar a temperatura e a gravidade da fermentação da cerveja em seu smartphone

Quando a cerveja está fermentando, você deve monitorar sua gravidade e temperatura diariamente. É fácil esquecer de fazer isso e impossível se você estiver ausente.

Depois de pesquisar no Google, encontrei várias soluções para monitoramento automatizado da gravidade (um, dois, três). Um deles, com conceito muito inteligente, se chama Tilt. A inclinação está flutuando na cerveja e medindo seu próprio ângulo de inclinação. Este ângulo depende da densidade do líquido e, portanto, pode medir a gravidade da cerveja em fermentação.

O Tilt vem com um aplicativo móvel que se conecta a ele e pode postar dados em qualquer serviço da web. O problema é que você não precisa estar longe do Tilt para fazer isso. Também existe um programa Raspberry Pi que funciona com o Tilt.

Etapa 1: obter dados de inclinação em Python

Obtendo dados de inclinação em Python
Obtendo dados de inclinação em Python

Já estou usando o Raspberry Pi para monitorar a temperatura da adega e um serviço de painel de controle em nuvem cloud4rpi.io. Se o Tilt puder falar com o Raspberry Pi, deve ser possível conectar o cloud4rpi a ele. O Tilt está usando um protocolo sem fio, então você precisará do Raspberry Pi com um chip sem fio (Rasbperry Pi 3 ou Zero W).

Felizmente, existe um repositório GitHub para o software Tilt com alguns exemplos. Olhando em https://github.com/baronbrew/tilt-scan, você pode ver que o Tilt parece para os outros como um iBeacon BLE, com “Cor” codificado em UUID, e a temperatura e a gravidade estão em bytes maiores e menores.

Seu código de amostra é para Node.js, e eu tenho um programa de controle Python baseado no modelo cloud4rpi

Portanto, preciso obter dados do Tilt em Python. Depois de pesquisar no Google, encontrei https://github.com/switchdoclabs/iBeacon-Scanner- - scanner Python iBeacon. Este é um programa, não uma biblioteca, então eu o modifiquei para retornar um dicionário em vez de uma string. E também escrevi um módulo específico do Tilt para obter a cor, temperatura e gravidade do primeiro Tilt encontrado (tenho apenas um), e um programa de teste simples para verificar se consegue ver o meu Tilt:

importar timeimport tilt

enquanto verdadeiro:

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

Execute e verifique se funciona. Agora posso conectá-lo ao meu programa de controle. Já tenho um programa python conectado a cloud4rpi.io, mas deixe-me mostrar como fazer isso do zero.

Etapa 2: Conectando o dispositivo à nuvem

Dispositivo de conexão à nuvem
Dispositivo de conexão à nuvem
Dispositivo de conexão à nuvem
Dispositivo de conexão à nuvem

Primeiro, faça login em cloud4rpi.io e, em seguida, crie um novo dispositivo.

Você receberá um token de dispositivo e instruções de instalação. Para Raspberry Pi, siga as instruções aqui https://docs.cloud4rpi.io/start/rpi/ - certifique-se de que seu sistema está atualizado:

sudo apt update && sudo apt update

Pré-requisitos de instalação:

sudo apt install git python python-pip

Instale os pacotes python cloud4rpi:

sudo pip install cloud4rpi

em seguida, obtenha um aplicativo Python de amostra para Raspberry Pi (na pasta de controle):

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

controle de cd

modificar control.py - especifique o token do seu dispositivo na linha

DEVICE_TOKEN = ‘_YOUR_DEVICE_TOKEN_’

Remova entradas desnecessárias de declarações de variáveis de dispositivo, deixe apenas CPUTemp para testar a conexão do dispositivo:

# Coloque as declarações de variáveis aqui variables = {'CPU Temp': {'type': 'numeric', 'bind': rpi.cpu_temp}}

Agora faça um teste:

sudo python control.py

Se tudo estiver bem, a página do seu dispositivo será atualizada imediatamente com os dados de diagnóstico.

Etapa 3: Envio de dados para a nuvem

Envio de dados para a nuvem
Envio de dados para a nuvem

Agora precisamos modificar control.py para ler e relatar a cor, temperatura e gravidade do Tilt. O resultado é assim:

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

# Coloque o token do seu dispositivo aqui. Para obter o token, # inscreva-se em https://cloud4rpi.io e crie um dispositivo. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

# Constantes

DATA_SENDING_INTERVAL = 60 # s DIAG_SENDING_INTERVAL = 600 # s POLL_INTERVAL = 0,5 # 500 ms

beacon = {}

def F2C (grausF):

retorno (grausF - 32) / 1,8

def getTemp ():

return F2C (int (beacon ['Temp'])) se beacon else Nenhum

def getGravity ():

return beacon ['Gravity'] se beacon else Nenhum

def main ():

# Coloque as declarações de variáveis aqui

variáveis = {'Gravity': {'type': 'numeric', 'bind': getGravity}, 'Beer Temp': {'type': 'numeric', 'bind': getTemp}}

diagnósticos = {

'Temp da CPU': rpi.cpu_temp, 'Endereço IP': rpi.ip_address, 'Host': gethostname (), 'Sistema operacional': "".join (uname ())}

device = cloud4rpi.connect (DEVICE_TOKEN)

device.declare (variables) device.declare_diag (diagnostics)

device.publish_config ()

# Adiciona um atraso de 1 segundo para garantir que as variáveis do dispositivo sejam criadas

time.sleep (1)

Experimente:

data_timer = 0 diag_timer = 0 enquanto True: if data_timer <= 0: beacon global beacon = tilt.getFirstTilt () device.publish_data () data_timer = DATA_SENDING_INTERVAL

se diag_timer <= 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL

time.sleep (POLL_INTERVAL)

diag_timer - = POLL_INTERVAL data_timer - = POLL_INTERVAL

exceto KeyboardInterrupt:

cloud4rpi.log.info ('Interrupção de teclado recebida. Parando…')

exceto exceção como e:

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

finalmente:

sys.exit (0)

if _name_ == '_main_':

a Principal()

Agora execute-o manualmente para ver se funciona:

sudo python control.py

Se tudo estiver bem, você verá suas variáveis online.

Para executar control.py na inicialização do sistema, instale-o como um serviço. Cloud4rpi fornece um script de instalação service_install.sh para fazer isso. Eu o incluí em meu repositório. Para instalar control.py como um serviço, execute

sudo bash service_install.sh control.py

Agora você pode iniciar | parar | reiniciar este serviço executando o comando

sudo systemctl start cloud4rpi.service

O serviço mantém seu estado anterior ao ligar, portanto, se estava em execução, ele será executado após a reinicialização ou perda de energia.

Etapa 4: Resultado final

Resultado final
Resultado final

É isso, agora tenho meus parâmetros de inclinação sendo enviados para a nuvem, então posso configurar um painel de controle de nuvem legal para ele. Acesse https://cloud4rpi.io/control-panels e crie um novo painel de controle, adicione o widget e selecione / Gravity e Beer Temp como fonte de dados. Agora posso monitorar o que está acontecendo, mesmo estando longe de casa.

O código que copiei e escrevi está disponível aqui: https://github.com/superroma/tilt-cloud4rpi. Está longe de ser perfeito, funciona apenas com um único Tilt, não liga para a “cor” do dispositivo, seja o que for, e eu não sou um cara do Python, então correções, sugestões ou bifurcações são bem-vindas !

Recomendado: