Innehållsförteckning:

Hur man kontrollerar öljäsningstemperatur och gravitation från din smartphone: 4 steg (med bilder)
Hur man kontrollerar öljäsningstemperatur och gravitation från din smartphone: 4 steg (med bilder)

Video: Hur man kontrollerar öljäsningstemperatur och gravitation från din smartphone: 4 steg (med bilder)

Video: Hur man kontrollerar öljäsningstemperatur och gravitation från din smartphone: 4 steg (med bilder)
Video: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024, Juli
Anonim
Hur man kontrollerar öljäsningstemperatur och gravitation från din smartphone
Hur man kontrollerar öljäsningstemperatur och gravitation från din smartphone

När öl jäser bör du övervaka dess gravitation och temperatur dagligen. Det är lätt att glömma att göra det, och omöjligt om du är borta.

Efter lite googling hittade jag flera lösningar för automatiserad gravitationskontroll (en, två, tre). En av dem, med ett mycket smart koncept, kallas Tilt. Tilt flyter i din öl och mäter sin egen lutningsvinkel. Denna vinkel beror på vätskans densitet och kan därför mäta gravitationen hos det jäsande ölet.

Tilt levereras med en mobilapp som ansluter till den och kan skicka data till alla webbtjänster. Problemet är att du måste vara inte långt från Tilt för att kunna göra det. Det finns också ett Raspberry Pi -program som fungerar med Tilt.

Steg 1: Hämta Tilt -data i Python

Skaffa Tilt -data i Python
Skaffa Tilt -data i Python

Jag använder redan Raspberry Pi för att övervaka källartemperaturen och en molnkontrollpaneltjänst cloud4rpi.io. Om Tilt kan prata med Raspberry Pi bör det vara möjligt att ansluta cloud4rpi till den. Tilt använder ett trådlöst protokoll, så du behöver Raspberry Pi med ett trådlöst chip (Rasbperry Pi 3 eller Zero W).

Lyckligtvis finns det en GitHub -repo för Tilt -programvara med några prover. Om du tittar på https://github.com/baronbrew/tilt-scan kan du se att Tilt ser ut för andra som BLE iBeacon, med "Färg" kodad i UUID, och temperatur och gravitation är i större och mindre byte.

Deras exempelkod är för Node.js, och jag har ett Python-kontrollprogram baserat på cloud4rpi-mall

Så jag måste hämta Tilt -data i Python. Efter lite googling hittade jag https://github.com/switchdoclabs/iBeacon-Scanner-- Python iBeacon-skanner. Detta är ett program, inte ett bibliotek, så jag ändrade det för att returnera en ordbok istället för sträng. Och jag skrev också Tilt-specifik modul för att få färg, temperatur och gravitation på den första Tilt som hittades (jag har bara en) och ett enkelt testprogram för att kontrollera om den kan se min Tilt:

import timeimport tilt

medan det är sant:

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

Kör och kontrollera att det fungerar. Nu kan jag ansluta den till mitt kontrollprogram. Jag har redan ett pythonprogram anslutet till cloud4rpi.io, men låt mig visa hur jag gör det från grunden.

Steg 2: Anslut enhet till molnet

Ansluter enhet till molnet
Ansluter enhet till molnet
Ansluter enhet till molnet
Ansluter enhet till molnet

Logga först in på cloud4rpi.io och skapa sedan en ny enhet.

Du får en enhetstoken och installationsinstruktioner. För Raspberry Pi, följ instruktionerna här https://docs.cloud4rpi.io/start/rpi/-se till att ditt system är uppdaterat:

sudo apt update && sudo apt upgrade

Installera förutsättningar:

sudo apt installera git python python-pip

Installera cloud4rpi python -paket:

sudo pip installera cloud4rpi

skaffa sedan ett exempel python -app för Raspberry Pi (i kontrollmappen):

git-klon https://github.com/cloud4rpi/cloud4rpi-raspberryp… kontroll

cd -kontroll

ändra control.py - ange enhetstoken i raden

DEVICE_TOKEN = ‘_YOUR_DEVICE_TOKEN_’

Ta bort onödiga poster från enhetsvariabeldeklarationer, lämna endast CPUTemp för att testa enhetens anslutning:

# Sätt variabla deklarationer här variabler = {'CPU Temp': {'type': 'numeric', 'bind': rpi.cpu_temp}}

Gör nu en testkörning:

sudo python control.py

Om allt är ok kommer din enhets sida omedelbart att uppdateras med diagnosdata.

Steg 3: Skicka data till molnet

Skicka data till molnet
Skicka data till molnet

Nu måste vi ändra control.py för att läsa och rapportera Tilt färg, temperatur och gravitation. Resultatet ser ut så här:

från os import unamefrom socket import gethostname import sys import tid import cloud4rpi import rpi import tilt

# Sätt din enhetstoken här. För att få token, # registrera dig på https://cloud4rpi.io och skapa en enhet. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

# Konstanter

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

ledstjärna = {}

def F2C (grader F):

retur (grader F - 32) / 1,8

def getTemp ():

returnera F2C (int (ledstjärna ['Temp'])) om ledsteg annars Ingen

def getGravity ():

returnera varningsljuset ['Gravity'] om fyren annars Ingen

def main ():

# Lägg variabla deklarationer här

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

diagnostik = {

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

enhet = cloud4rpi.connect (DEVICE_TOKEN)

device.declare (variabler) device.declare_diag (diagnostik)

device.publish_config ()

# Lägger till en fördröjning på 1 sekund för att säkerställa att enhetsvariabler skapas

tid. sover (1)

Prova:

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

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

time.sleep (POLL_INTERVAL)

diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL

utom KeyboardInterrupt:

cloud4rpi.log.info ('Tangentbordsavbrott mottaget. Stoppar …')

utom Undantag som e:

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

till sist:

sys.exit (0)

om _name_ == '_main_':

main ()

Kör det nu manuellt för att se om det fungerar:

sudo python control.py

Om allt är bra kommer du att se dina variabler online.

För att köra control.py vid systemstart, installera det som en tjänst. Cloud4rpi tillhandahåller ett installationsskript service_install.sh för att göra det. Jag har inkluderat det i min repo. Kör för att installera control.py som en tjänst

sudo bash service_install.sh control.py

Nu kan du starta | stoppa | starta om tjänsten genom att köra kommandot

sudo systemctl starta cloud4rpi.service

Tjänsten behåller sitt tidigare tillstånd vid uppstart, så om det kördes kommer det att köras efter omstart eller strömavbrott.

Steg 4: Slutresultat

Slutresultat
Slutresultat

Detta är det, nu har jag mina Tilt -parametrar skickade till molnet, så jag kan skapa en trevlig molnkontrollpanel för det. Gå till https://cloud4rpi.io/control-panels och skapa ny kontrollpanel, lägg till widget och välj/Gravity och Beer Temp som datakälla. Nu kan jag övervaka vad som händer även om jag är hemifrån.

Koden jag kopierade och skrev är tillgänglig här: https://github.com/superroma/tilt-cloud4rpi. Det är långt ifrån perfekt, det fungerar bara med en enda lutning, det bryr sig inte om "färg" på enheten, vad det än betyder, och jag är inte alls en Python -kille, så fixar, förslag eller gafflar är välkomna !

Rekommenderad: