Spisu treści:
- Krok 1: Pobieranie danych Tilt w Pythonie
- Krok 2: Podłączanie urządzenia do chmury
- Krok 3: Wysyłanie danych do chmury
- Krok 4: Wynik końcowy
Wideo: Jak kontrolować temperaturę i grawitację fermentacji piwa ze smartfona: 4 kroki (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
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
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
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
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
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:
Jak kontrolować samouczek Arduino z serwomotorem: 4 kroki
Jak sterować serwomotorem Arduino Tutorial: Hej chłopaki! witam w moim nowym samouczku, mam nadzieję, że podobał Ci się mój poprzedni instruktażowy "Sterowanie dużym silnikiem krokowym". Dzisiaj 'publikuję ten samouczek informacyjny, aby nauczyć Cię podstaw dowolnego sterowania serwomotorem, już opublikowałem vid
Jak kontrolować duże ramię robota 4dof o dużej mocy za pomocą pilota Arduino i Ps2?: 4 kroki
Jak kontrolować ramię robota o dużej mocy 4dof o dużej mocy za pomocą pilota Arduino i Ps2?: ten zestaw wykorzystuje silnik o dużej mocy mg996, potrzebuje wysokiego prądu, przetestowaliśmy dużo poboru mocy. Działa tylko adapter 5 V 6a. Płytka arduino działa również na ramieniu robota 6dof. Koniec: napisz kup SINONING Sklep z zabawkami dla majsterkowiczów
Jak kontrolować MOSFET za pomocą Arduino PWM: 3 kroki
Jak kontrolować MOSFET za pomocą Arduino PWM: W tej instrukcji przyjrzymy się, jak kontrolować prąd przez MOSFET za pomocą sygnału wyjściowego Arduino PWM (modulacja szerokości impulsu). W tym przypadku manipulujemy kodem arduino, aby dać nam zmienny sygnał PWM na cyfrowym pinie 9 ardui
DuvelBot - Robot do serwowania piwa ESP32-CAM: 4 kroki (ze zdjęciami)
DuvelBot - robot serwujący piwo ESP32-CAM: po ciężkim dniu pracy nic nie może się równać z popijaniem ulubionego piwa na kanapie. W moim przypadku jest to belgijskie piwo blond „Duvel”. Jednak mimo wszystko, poza upadkiem, stajemy przed najpoważniejszym problemem: lodówka c
Jak kontrolować inteligentny przełącznik Sonoff Basic oparty na ESP8266 za pomocą smartfona: 4 kroki (ze zdjęciami)
Jak sterować inteligentnym przełącznikiem opartym na ESP8266 Sonoff Basic za pomocą smartfona: Sonoff to linia urządzeń dla inteligentnego domu opracowana przez ITEAD. Jednym z najbardziej elastycznych i niedrogich urządzeń z tej linii jest Sonoff Basic. Jest to przełącznik z obsługą Wi-Fi oparty na świetnym układzie ESP8266. W tym artykule opisano, jak skonfigurować Cl