Sadržaj:

Kako kontrolirati temperaturu i gravitaciju fermentacije piva sa vašeg pametnog telefona: 4 koraka (sa slikama)
Kako kontrolirati temperaturu i gravitaciju fermentacije piva sa vašeg pametnog telefona: 4 koraka (sa slikama)

Video: Kako kontrolirati temperaturu i gravitaciju fermentacije piva sa vašeg pametnog telefona: 4 koraka (sa slikama)

Video: Kako kontrolirati temperaturu i gravitaciju fermentacije piva sa vašeg pametnog telefona: 4 koraka (sa slikama)
Video: 蒸馒头 让馒头光滑细腻的4个技巧 2024, Novembar
Anonim
Kako kontrolirati temperaturu i gravitaciju fermentacije piva sa vašeg pametnog telefona
Kako kontrolirati temperaturu i gravitaciju fermentacije piva sa vašeg pametnog telefona

Kada fermentira pivo, trebali biste svakodnevno pratiti njegovu gravitaciju i temperaturu. Lako je zaboraviti to učiniti, a nemoguće ako ste odsutni.

Nakon guglanja, pronašao sam nekoliko rješenja za automatizirano praćenje gravitacije (jedno, dva, tri). Jedan od njih, s vrlo pametnim konceptom, zove se Tilt. Nagib pluta u vašem pivu i mjeri vlastiti kut nagiba. Ovaj kut ovisi o gustoći tekućine i stoga može mjeriti težinu fermentiranog piva.

Tilt dolazi s mobilnom aplikacijom koja se povezuje s njom i može objavljivati podatke na bilo kojoj web usluzi. Problem je u tome što morate biti nedaleko od Tilta da biste to mogli učiniti. Postoji i program Raspberry Pi koji radi sa Tilt -om.

Korak 1: Dobijanje podataka o nagibu u Pythonu

Dobivanje podataka o nagibu u Pythonu
Dobivanje podataka o nagibu u Pythonu

Već koristim Raspberry Pi za praćenje temperature podruma i uslugu oblačne kontrolne ploče cloud4rpi.io. Ako Tilt može razgovarati s Raspberry Pi, trebalo bi biti moguće povezati cloud4rpi s njim. Tilt koristi bežični protokol, pa će vam trebati Raspberry Pi s bežičnim čipom (Rasbperry Pi 3 ili Zero W).

Srećom, postoji GitHub repo za Tilt softver s nekim uzorcima. Gledajući https://github.com/baronbrew/tilt-scan možete vidjeti da Tilt drugima izgleda kao BLE iBeacon, s "Bojom" kodiranom u UUID-u, a temperatura i gravitacija su u velikim i sporednim bajtovima.

Njihov uzorak koda je za Node.js, a ja imam Python kontrolni program zasnovan na cloud4rpi predlošku

Zato moram nabaviti Tilt podatke u Pythonu. Nakon guglanja, našao sam https://github.com/switchdoclabs/iBeacon-Scanner-- Python iBeacon skener. Ovo je program, a ne biblioteka, pa sam ga izmijenio da umjesto rječnika vrati rječnik. Napisao sam i modul specifičan za nagib kako bih dobio boju, temperaturu i težinu prvog pronađenog nagiba (imam samo jedan) i jednostavan testni program za provjeru može li vidjeti moj nagib:

import timeimport nagib

dok je True:

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

Pokrenite i provjerite radi li. Sada ga mogu priključiti na svoj upravljački program. Već imam python program povezan s cloud4rpi.io, ali dopustite mi da vam pokažem kako to učiniti od nule.

Korak 2: Povezivanje uređaja s oblakom

Povezivanje uređaja s oblakom
Povezivanje uređaja s oblakom
Povezivanje uređaja s oblakom
Povezivanje uređaja s oblakom

Prvo se prijavite na cloud4rpi.io, a zatim stvorite novi uređaj.

Dobit ćete token uređaja i upute za instalaciju. Za Raspberry Pi slijedite upute ovdje https://docs.cloud4rpi.io/start/rpi/-provjerite je li vaš sistem ažuriran:

sudo apt ažuriranje && sudo apt nadogradnja

Preduvjeti za instaliranje:

sudo apt install git python python-pip

Instalirajte cloud4rpi python pakete:

sudo pip install cloud4rpi

tada nabavite uzorak python aplikacije za Raspberry Pi (u kontrolnu mapu):

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

cd kontrola

modify control.py - navedite token vašeg uređaja u redu

DEVICE_TOKEN = ‘_YOUR_DEVICE_TOKEN_’

Uklonite nepotrebne unose iz deklaracija varijabli uređaja, ostavite samo CPUTemp za testiranje veze uređaja:

# Ovdje stavite deklaracije varijabli varijable = {'CPU Temp': {'type': 'numeric', 'bind': rpi.cpu_temp}}

Sada napravite probni rad:

sudo python control.py

Ako je sve u redu, stranica vašeg uređaja bit će odmah ažurirana dijagnostičkim podacima.

Korak 3: Slanje podataka u oblak

Slanje podataka u oblak
Slanje podataka u oblak

Sada moramo izmijeniti control.py za čitanje i izvještavanje o Tilt -ovoj boji, temperaturi i gravitaciji. Rezultat izgleda ovako:

iz os uvoz uname iz utičnice uvoz gethostname uvoz sys vrijeme uvoza uvoz cloud4rpi uvoz rpi uvoz nagib

# Ovdje stavite žeton uređaja. Da biste dobili žeton, # prijavite se na https://cloud4rpi.io i kreirajte uređaj. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

# Konstante

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

svjetionik = {}

def F2C (stupnjeviF):

povratak (stepeniF - 32) / 1.8

def getTemp ():

vrati F2C (int (beacon ['Temp'])) ako je beacon else None

def getGravity ():

return beacon ['Gravity'] ako beacon nijedan None

def main ():

# Ovdje stavite deklaracije varijabli

varijable = {'Gravitacija': {'type': 'numeric', 'bind': getGravity}, 'Beer Temp': {'type': 'numeric', 'bind': getTemp}}

dijagnostika = {

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

uređaj = cloud4rpi.connect (DEVICE_TOKEN)

device.declare (varijable) device.declare_diag (dijagnostika)

device.publish_config ()

# Dodaje kašnjenje od 1 sekunde kako bi se osiguralo stvaranje varijabli uređaja

time.sleep (1)

probaj:

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

ako je diag_timer <= 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL

time.sleep (POLL_INTERVAL)

dijag_timer -= POLL_INTERVAL tajmer podataka -= POLL_INTERVAL

osim KeyboardInterrupt:

cloud4rpi.log.info ('Primljen prekid tastature. Zaustavljanje …')

osim izuzetka kao e:

greška = cloud4rpi.get_error_message (e) cloud4rpi.log.error ("GREŠKA! %s %s", greška, sys.exc_info () [0])

konačno:

sys.exit (0)

if _name_ == '_main_':

main ()

Sada ga ručno pokrenite da vidite radi li:

sudo python control.py

Ako je sve u redu, na internetu ćete vidjeti svoje varijable.

Da biste pokrenuli control.py pri pokretanju sistema, instalirajte ga kao uslugu. Cloud4rpi nudi instalacijsku skriptu service_install.sh za to. Uključio sam ga u svoj repo. Da biste instalirali control.py kao uslugu, pokrenite

sudo bash service_install.sh control.py

Sada možete pokrenuti | stop | ponovo pokrenuti ovu uslugu pokretanjem naredbe

sudo systemctl pokrenite cloud4rpi.service

Usluga zadržava prijašnje stanje pri uključivanju, pa ako je radila, radit će nakon ponovnog pokretanja ili gubitka napajanja.

Korak 4: Konačni rezultat

Final Result
Final Result

To je to, sada se moji parametri nagiba šalju u oblak, tako da mogu postaviti lijepu kontrolnu ploču u oblaku. Idite na https://cloud4rpi.io/control-panels i kreirajte novu kontrolnu ploču, dodajte widget i odaberite/Gravity and Beer Temp kao izvor podataka. Sada mogu pratiti šta se događa čak i ako sam daleko od kuće.

Kôd koji sam kopirao i napisao dostupan je ovdje: https://github.com/superroma/tilt-cloud4rpi. Daleko je od savršenog, radi samo s jednim nagibom, nije ga briga za "boju" uređaja, što god to značilo, a ja uopće nisam Python tip, pa su ispravci, prijedlozi ili viljuške dobrodošli !

Preporučuje se: