Sommario:

Come Controllare la Temperatura e la Gravità di Fermentazione della Birra dal Tuo Smartphone: 4 Passaggi (Illustrato)
Come Controllare la Temperatura e la Gravità di Fermentazione della Birra dal Tuo Smartphone: 4 Passaggi (Illustrato)

Video: Come Controllare la Temperatura e la Gravità di Fermentazione della Birra dal Tuo Smartphone: 4 Passaggi (Illustrato)

Video: Come Controllare la Temperatura e la Gravità di Fermentazione della Birra dal Tuo Smartphone: 4 Passaggi (Illustrato)
Video: Ep. 70 - L'altra puntatazza con Chimicazza 2024, Novembre
Anonim
Come controllare la temperatura e la gravità di fermentazione della birra dal tuo smartphone
Come controllare la temperatura e la gravità di fermentazione della birra dal tuo smartphone

Quando la birra sta fermentando, dovresti controllarne la gravità e la temperatura ogni giorno. È facile dimenticare di farlo, e impossibile se sei lontano.

Dopo aver cercato su Google, ho trovato diverse soluzioni per il monitoraggio automatico della gravità (uno, due, tre). Uno di loro, con un concetto molto intelligente, chiamato Tilt. L'inclinazione galleggia nella tua birra e sta misurando il proprio angolo di inclinazione. Questo angolo dipende dalla densità del liquido e quindi può misurare la gravità della birra in fermentazione.

Tilt viene fornito con un'app mobile, che si connette ad essa e può inviare dati a qualsiasi servizio web. Il problema è che devi essere non lontano da Tilt per poterlo fare. C'è anche un programma Raspberry Pi che funziona con Tilt.

Passaggio 1: ottenere dati di inclinazione in Python

Ottenere dati di inclinazione in Python
Ottenere dati di inclinazione in Python

Sto già utilizzando Raspberry Pi per monitorare la temperatura della cantina e un servizio di pannello di controllo cloud cloud4rpi.io. Se Tilt può parlare con Raspberry Pi, dovrebbe essere possibile connettere cloud4rpi ad esso. Tilt utilizza un protocollo wireless, quindi avrai bisogno di Raspberry Pi con un chip wireless (Rasbperry Pi 3 o Zero W).

Fortunatamente, esiste un repository GitHub per il software Tilt con alcuni esempi. Guardando https://github.com/baronbrew/tilt-scan puoi vedere che Tilt guarda agli altri come BLE iBeacon, con "Color" codificato in UUID, e la temperatura e la gravità sono in byte maggiori e minori.

Il loro codice di esempio è per Node.js e ho un programma di controllo Python basato sul modello cloud4rpi

Quindi ho bisogno di ottenere i dati Tilt in Python. Dopo aver cercato su Google, ho trovato https://github.com/switchdoclabs/iBeacon-Scanner- - Scanner iBeacon Python. Questo è un programma, non una libreria, quindi l'ho modificato per restituire un dizionario invece di una stringa. E ho anche scritto un modulo specifico per Tilt per ottenere colore, temperatura e gravità del primo Tilt trovato (ne ho solo uno) e un semplice programma di test per verificare se può vedere il mio Tilt:

import timeimport tilt

mentre vero:

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

Esegui e verifica che funzioni. Ora posso collegarlo al mio programma di controllo. Ho già un programma Python connesso a cloud4rpi.io, ma lascia che ti mostri come farlo da zero.

Passaggio 2: connessione del dispositivo al cloud

Collegamento del dispositivo al cloud
Collegamento del dispositivo al cloud
Collegamento del dispositivo al cloud
Collegamento del dispositivo al cloud

Innanzitutto, accedi a cloud4rpi.io, quindi crea un nuovo dispositivo.

Ti verrà fornito un token del dispositivo e le istruzioni di installazione. Per Raspberry Pi segui le istruzioni qui https://docs.cloud4rpi.io/start/rpi/ - assicurati che il tuo sistema sia aggiornato:

sudo apt update && sudo apt upgrade

Prerequisiti di installazione:

sudo apt install git python python-pip

Installa i pacchetti Python di cloud4rpi:

sudo pip install cloud4rpi

quindi ottieni un'app Python di esempio per Raspberry Pi (nella cartella di controllo):

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

controllo cd

modifica control.py - specifica il token del tuo dispositivo nella riga

DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

Rimuovi le voci non necessarie dalle dichiarazioni delle variabili del dispositivo, lascia solo CPUTemp per testare la connessione del dispositivo:

# Inserisci qui le dichiarazioni delle variabili variabili = { 'CPU Temp': { 'type': 'numeric', 'bind': rpi.cpu_temp } }

Ora fai un test:

sudo python control.py

Se tutto è ok, la pagina del tuo dispositivo verrà immediatamente aggiornata con i dati di diagnostica.

Passaggio 3: invio di dati al cloud

Invio di dati al cloud
Invio di dati al cloud

Ora dobbiamo modificare control.py per leggere e riportare il colore, la temperatura e la gravità di Tilt. Il risultato è simile a questo:

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

# Inserisci qui il token del tuo dispositivo. Per ottenere il token, # registrati su https://cloud4rpi.io e crea un dispositivo. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

# Costanti

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

faro = {}

def F2C(gradiF):

ritorno (gradiF - 32) / 1.8

def getTemp():

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

def getGravity():

return beacon['Gravity'] if beacon else Nessuno

def principale():

# Inserisci qui le dichiarazioni delle variabili

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

diagnostica = {

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

dispositivo = cloud4rpi.connect(DEVICE_TOKEN)

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

device.publish_config()

# Aggiunge un ritardo di 1 secondo per garantire la creazione delle variabili del dispositivo

tempo.sonno(1)

Tentativo:

data_timer = 0 diag_timer = 0 mentre True: se data_timer <= 0: beacon globale beacon = tilt.getFirstTilt() device.publish_data() data_timer = DATA_SENDING_INTERVAL

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

time.sleep(POLL_INTERVAL)

diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL

tranne KeyboardInterrupt:

cloud4rpi.log.info('Interrupt di tastiera ricevuto. Arresto in corso…')

tranne Eccezione come e:

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

finalmente:

sys.exit(0)

if _name_ == '_main_':

principale()

Ora eseguilo manualmente per vedere se funziona:

sudo python control.py

Se tutto va bene, vedrai le tue variabili online.

Per eseguire control.py all'avvio del sistema, installalo come servizio. Cloud4rpi fornisce uno script di installazione service_install.sh per farlo. L'ho incluso nel mio repository. Per installare control.py come servizio, esegui

sudo bash service_install.sh control.py

Ora puoi avviare|arrestare|riavviare questo servizio eseguendo il comando

sudo systemctl start cloud4rpi.service

Il servizio mantiene il suo stato precedente all'accensione, quindi se era in esecuzione, sarà in esecuzione dopo il riavvio o l'interruzione dell'alimentazione.

Passaggio 4: risultato finale

Risultato finale
Risultato finale

Questo è tutto, ora ho i miei parametri di inclinazione inviati al cloud, quindi posso impostare un bel pannello di controllo cloud per questo. Vai su https://cloud4rpi.io/control-panels e crea un nuovo pannello di controllo, aggiungi widget e seleziona /Gravity e Beer Temp come origine dati. Ora posso monitorare cosa sta succedendo anche se sono lontano da casa.

Il codice che ho copiato e scritto è disponibile qui: https://github.com/superroma/tilt-cloud4rpi. È tutt'altro che perfetto, funziona solo con una singola inclinazione, non si preoccupa del "colore" del dispositivo, qualunque cosa significhi, e non sono affatto un ragazzo di Python, quindi correzioni, suggerimenti o fork sono i benvenuti !

Consigliato: