Spisu treści:

Jak kontrolować temperaturę i grawitację fermentacji piwa ze smartfona: 4 kroki (ze zdjęciami)
Jak kontrolować temperaturę i grawitację fermentacji piwa ze smartfona: 4 kroki (ze zdjęciami)

Wideo: Jak kontrolować temperaturę i grawitację fermentacji piwa ze smartfona: 4 kroki (ze zdjęciami)

Wideo: Jak kontrolować temperaturę i grawitację fermentacji piwa ze smartfona: 4 kroki (ze zdjęciami)
Wideo: Najlepsze piwo świata warzymy Pszeniczne zacieranie, filtracja, wysładzanie, fermentacja część 1. 2024, Listopad
Anonim
Jak kontrolować temperaturę i grawitację fermentacji piwa za pomocą smartfona?
Jak kontrolować temperaturę i grawitację fermentacji piwa za pomocą smartfona?

Podczas fermentacji piwa należy codziennie monitorować jego wagę i temperaturę. Łatwo o tym zapomnieć, a jeśli jesteś daleko, jest to niemożliwe.

Po jakimś czasie googlowania znalazłem kilka rozwiązań do automatycznego monitorowania grawitacji (jeden, dwa, trzy). Jeden z nich, o bardzo sprytnej koncepcji, nazywa się Tilt. Tilt unosi się w twoim piwie i mierzy swój własny kąt nachylenia. Kąt ten zależy od gęstości cieczy i dlatego może mierzyć grawitację fermentującego piwa.

Tilt jest dostarczany z aplikacją mobilną, która łączy się z nim i może publikować dane w dowolnym serwisie internetowym. Problem polega na tym, że musisz znajdować się niedaleko od Tiltu, aby móc to zrobić. Istnieje również program Raspberry Pi współpracujący z Tilt.

Krok 1: Pobieranie danych Tilt w Pythonie

Pobieranie danych Tilt w Pythonie
Pobieranie danych Tilt w Pythonie

Używam już Raspberry Pi do monitorowania temperatury w piwnicy oraz usługi panelu sterowania w chmurze cloud4rpi.io. Jeśli Tilt może rozmawiać z Raspberry Pi, powinno być możliwe podłączenie do niego cloud4rpi. Tilt korzysta z protokołu bezprzewodowego, więc będziesz potrzebować Raspberry Pi z chipem bezprzewodowym (Rasbperry Pi 3 lub Zero W).

Na szczęście istnieje repozytorium GitHub dla oprogramowania Tilt z kilkoma przykładami. Patrząc na https://github.com/baronbrew/tilt-scan można zauważyć, że Tilt wygląda dla innych jak BLE iBeacon, z „Kolorem” zakodowanym w UUID, a temperatura i grawitacja są w bajtach większych i mniejszych.

Ich przykładowy kod jest dla Node.js, a ja mam program sterujący Pythona oparty na szablonie cloud4rpi

Więc muszę uzyskać dane Tilt w Pythonie. Po kilku googlowaniach znalazłem https://github.com/switchdoclabs/iBeacon-Scanner- - Python iBeacon Scanner. To jest program, a nie biblioteka, więc zmodyfikowałem go, aby zwracał słownik zamiast łańcucha. Napisałem również moduł dla Tilt, aby uzyskać kolor, temperaturę i grawitację pierwszego znalezionego Tiltu (mam tylko jeden) oraz prosty program testowy, aby sprawdzić, czy widzi mój Tilt:

czas importuimport tilt

podczas gdy prawda:

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

Uruchom i sprawdź, czy działa. Teraz mogę podłączyć go do mojego programu sterującego. Mam już program python podłączony do cloud4rpi.io, ale pokażę, jak to zrobić od podstaw.

Krok 2: Podłączanie urządzenia do chmury

Podłączanie urządzenia do chmury
Podłączanie urządzenia do chmury
Podłączanie urządzenia do chmury
Podłączanie urządzenia do chmury

Najpierw zaloguj się do cloud4rpi.io, a następnie utwórz nowe urządzenie.

Otrzymasz token urządzenia i instrukcje instalacji. W przypadku Raspberry Pi postępuj zgodnie z instrukcjami tutaj https://docs.cloud4rpi.io/start/rpi/ - upewnij się, że Twój system jest aktualny:

aktualizacja sudo apt i aktualizacja sudo apt

Wymagania wstępne instalacji:

sudo apt zainstaluj git python python-pip

Zainstaluj pakiety cloud4rpi Pythona:

sudo pip zainstaluj cloud4rpi

następnie pobierz przykładową aplikację Pythona dla Raspberry Pi (do folderu kontrolnego):

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

sterowanie cd

zmodyfikuj control.py - podaj swój token urządzenia w linii

DEVICE_TOKEN = „_TWOJE_TOKEN_URZĄDZENIA_”

Usuń niepotrzebne wpisy z deklaracji zmiennych urządzenia, pozostaw tylko CPUTemp do testowania połączenia urządzenia:

# Umieść tutaj deklaracje zmiennych zmienne = { 'CPU Temp': { 'typ': 'numeric', 'bind': rpi.cpu_temp } }

Teraz wykonaj test:

sudo python control.py

Jeśli wszystko jest w porządku, strona Twojego urządzenia zostanie natychmiast zaktualizowana danymi diagnostycznymi.

Krok 3: Wysyłanie danych do chmury

Wysyłanie danych do chmury
Wysyłanie danych do chmury

Teraz musimy zmodyfikować plik control.py, aby odczytywał i raportował kolor, temperaturę i grawitację Tiltu. Wynik wygląda tak:

z systemu operacyjnego import uname z gniazda import gethostname import sys import czasu import cloud4rpi import rpi import tilt

# Umieść tutaj swój token urządzenia. Aby otrzymać token, # zarejestruj się na https://cloud4rpi.io i utwórz urządzenie. DEVICE_TOKEN = '_TWOJE_TOKEN_URZĄDZENIA_'

# Stałe

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

latarnia = {}

def F2C(stopnieF):

powrót (stopnie F - 32) / 1,8

def pobierzTemp():

return F2C(int(beacon['Temp'])) if beacon inny Brak

def getGravity():

return beacon['Gravity'] jeśli beacon inny Brak

zdefiniuj główne():

# Umieść tutaj deklaracje zmiennych

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

diagnostyka = {

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

urządzenie = cloud4rpi.connect(DEVICE_TOKEN)

device.declare(zmienne) device.declare_diag(diagnostyka)

urządzenie.publish_config()

# Dodaje 1 sekundę opóźnienia, aby zapewnić utworzenie zmiennych urządzenia

czas.sen(1)

próbować:

data_timer = 0 diag_timer = 0 while True: if data_timer <= 0: globalny sygnał nawigacyjny = tilt.getFirstTilt() device.publish_data() data_timer = DATA_SENDING_INTERVAL

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

czas.snu(POLL_INTERVAL)

diag_timer -= POLL_INTERVAL licznik_danych -= POLL_INTERVAL

z wyjątkiem KeyboardInterrupt:

cloud4rpi.log.info('Odebrano przerwanie klawiatury. Zatrzymywanie…')

z wyjątkiem Wyjątku, jak e:

error = cloud4rpi.get_error_message(e) cloud4rpi.log.error("BŁĄD! %s %s", błąd, sys.exc_info()[0])

wreszcie:

sys.exit(0)

if _name_ == '_main_':

Główny()

Teraz uruchom go ręcznie, aby sprawdzić, czy działa:

sudo python control.py

Jeśli wszystko jest w porządku, zobaczysz swoje zmienne online.

Aby uruchomić control.py podczas uruchamiania systemu, zainstaluj go jako usługę. Cloud4rpi udostępnia w tym celu skrypt instalacyjny service_install.sh. Dołączyłem to do mojego repozytorium. Aby zainstalować control.py jako usługę, uruchom

sudo bash service_install.sh control.py

Teraz możesz uruchomić|zatrzymać|zrestartować tę usługę, uruchamiając polecenie

sudo systemctl start cloud4rpi.service

Usługa zachowuje swój poprzedni stan po włączeniu, więc jeśli była uruchomiona, będzie działać po ponownym uruchomieniu lub utracie zasilania.

Krok 4: Wynik końcowy

Ostateczny wynik
Ostateczny wynik

To wszystko, teraz moje parametry Tilt są wysyłane do chmury, więc mogę skonfigurować dla niego ładny panel sterowania w chmurze. Wejdź na https://cloud4rpi.io/control-panels i utwórz nowy panel sterowania, dodaj widżet i wybierz /Gravity i Beer Temp jako źródło danych. Teraz mogę monitorować, co się dzieje, nawet gdy jestem poza domem.

Kod, który skopiowałem i napisałem, jest dostępny tutaj: https://github.com/superroma/tilt-cloud4rpi. Daleko mu do ideału, działa tylko z jednym Tiltem, nie dba o „Kolor” urządzenia, cokolwiek to znaczy, a ja w ogóle nie jestem pythonem, więc poprawki, sugestie lub forki są mile widziane !

Zalecana: