Obsah:

Jak ovládat teplotu a gravitaci piva pomocí smartphonu: 4 kroky (s obrázky)
Jak ovládat teplotu a gravitaci piva pomocí smartphonu: 4 kroky (s obrázky)

Video: Jak ovládat teplotu a gravitaci piva pomocí smartphonu: 4 kroky (s obrázky)

Video: Jak ovládat teplotu a gravitaci piva pomocí smartphonu: 4 kroky (s obrázky)
Video: Nesnáším loučení! 🥹 Arianka to už zvládá! 🙏 2024, Červenec
Anonim
Jak ovládat teplotu a gravitaci piva pomocí svého smartphonu
Jak ovládat teplotu a gravitaci piva pomocí svého smartphonu

Když pivo kvasí, měli byste denně sledovat jeho gravitaci a teplotu. Je snadné na to zapomenout a nemožné, pokud jste pryč.

Po nějakém googlování jsem našel několik řešení pro automatické monitorování gravitace (jedna, dvě, tři). Jeden z nich, s velmi chytrým konceptem, se jmenoval Tilt. Tilt se ve vašem pivu vznáší a měří svůj vlastní úhel náklonu. Tento úhel závisí na hustotě kapaliny, a proto může měřit gravitaci kvasícího piva.

Tilt je dodáván s mobilní aplikací, která se k němu připojuje a může odesílat data do jakékoli webové služby. Problém je v tom, že musíte být kousek od Tiltu, abyste to dokázali. Existuje také program Raspberry Pi, který pracuje s Tilt.

Krok 1: Získání dat náklonu v Pythonu

Získávání údajů o naklonění v Pythonu
Získávání údajů o naklonění v Pythonu

Ke sledování teploty ve sklepě již používám Raspberry Pi a službu cloudového ovládacího panelu cloud4rpi.io. Pokud Tilt může mluvit s Raspberry Pi, mělo by být možné k němu připojit cloud4rpi. Tilt používá bezdrátový protokol, takže budete potřebovat Raspberry Pi s bezdrátovým čipem (Rasbperry Pi 3 nebo Zero W).

Naštěstí existuje GitHub repo pro software Tilt s několika vzorky. Při pohledu na https://github.com/baronbrew/tilt-scan můžete vidět, že Tilt vypadá ostatním jako BLE iBeacon s „Color“kódovaným v UUID a teplota a gravitace jsou ve velkých a menších bajtech.

Jejich ukázkový kód je pro Node.js a mám řídicí program Pythonu založený na šabloně cloud4rpi

Potřebuji tedy získat data Tilt v Pythonu. Po chvilce googlování jsem našel https://github.com/switchdoclabs/iBeacon-Scanner-- skener Python iBeacon. Toto je program, ne knihovna, takže jsem ho upravil tak, aby místo řetězce vrátil slovník. A také jsem napsal modul specifický pro náklon, abych získal barvu, teplotu a gravitaci prvního nalezeného náklonu (mám pouze jeden) a jednoduchý testovací program pro kontrolu, zda vidí můj náklon:

importovat naklonění časového importu

zatímco pravda:

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

Spusťte a zkontrolujte, zda funguje. Nyní jej mohu připojit k mému řídicímu programu. Už mám program python připojený k cloud4rpi.io, ale dovolte mi ukázat, jak to udělat od začátku.

Krok 2: Připojení zařízení ke cloudu

Připojení zařízení ke cloudu
Připojení zařízení ke cloudu
Připojení zařízení ke cloudu
Připojení zařízení ke cloudu

Nejprve se přihlaste na cloud4rpi.io a poté vytvořte nové zařízení.

Dostanete token zařízení a pokyny k instalaci. Pro Raspberry Pi postupujte podle pokynů zde https://docs.cloud4rpi.io/start/rpi/-ujistěte se, že je váš systém aktuální:

sudo apt update && sudo apt upgrade

Nainstalujte předpoklady:

sudo apt install git python python-pip

Nainstalujte balíčky python cloud4rpi:

sudo pip install cloud4rpi

pak získejte ukázkovou aplikaci python pro Raspberry Pi (do ovládací složky):

git clone https://github.com/cloud4rpi/cloud4rpi-raspberryp… ovládání

ovládání CD

Upravit control.py - do řádku zadejte token svého zařízení

DEVICE_TOKEN = „_YOUR_DEVICE_TOKEN_“

Odstraňte nepotřebné položky z deklarací proměnných zařízení, ponechte pouze CPUTemp pro testování připojení zařízení:

# Sem vložte deklarace proměnných = {'CPU Temp': {'type': 'numeric', 'bind': rpi.cpu_temp}}

Nyní proveďte zkušební provoz:

sudo python control.py

Pokud je vše v pořádku, stránka vašeho zařízení bude okamžitě aktualizována diagnostickými daty.

Krok 3: Odesílání dat do cloudu

Odesílání dat do cloudu
Odesílání dat do cloudu

Nyní musíme upravit control.py, aby četl a hlásil Tiltovu barvu, teplotu a gravitaci. Výsledek vypadá takto:

z os import uname z socket import gethostname import sys import time import cloud4rpi import rpi import tilt

# Sem vložte token svého zařízení. Chcete -li získat token, # zaregistrujte se na https://cloud4rpi.io a vytvořte zařízení. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

# Konstanty

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

maják = {}

def F2C (stupně F):

návrat (stupně F - 32) / 1,8

def getTemp ():

vrátit F2C (int (beacon ['Temp'])), pokud beacon else None

def getGravity ():

return beacon ['Gravity'] if beacon else None

def main ():

# Sem vložte deklarace proměnných

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

diagnostika = {

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

zařízení = cloud4rpi.connect (DEVICE_TOKEN)

device.declare (proměnné) device.declare_diag (diagnostika)

device.publish_config ()

# Přidá 1sekundové zpoždění k zajištění vytváření proměnných zařízení

time.sleep (1)

Snaž se:

data_timer = 0 diag_timer = 0 while True: if data_timer <= 0: global beacon 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

kromě KeyboardInterrupt:

cloud4rpi.log.info ('Bylo přijato přerušení klávesnice. Zastavování …')

kromě výjimky jako e:

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

Konečně:

sys.exit (0)

if _name_ == '_main_':

hlavní()

Nyní spusťte ručně, abyste zjistili, zda funguje:

sudo python control.py

Pokud je vše v pořádku, uvidíte své proměnné online.

Chcete -li spustit control.py při spuštění systému, nainstalujte jej jako službu. Cloud4rpi k tomu poskytuje instalační skript service_install.sh. Zařadil jsem to do svého repo. Chcete -li nainstalovat control.py jako službu, spusťte

sudo bash service_install.sh control.py

Nyní můžete spustit | zastavit | restartovat tuto službu spuštěním příkazu

sudo systemctl start cloud4rpi.service

Služba udržuje svůj předchozí stav při zapnutí, takže pokud byla spuštěna, bude spuštěna po restartu nebo ztrátě napájení.

Krok 4: Konečný výsledek

Konečný výsledek
Konečný výsledek

To je ono, teď mám své parametry Tilt odesílané do cloudu, takže pro to mohu nastavit pěkný cloudový ovládací panel. Přejděte na https://cloud4rpi.io/control-panels a vytvořte nový ovládací panel, přidejte widget a jako zdroj dat vyberte/Gravity and Beer Temp. Nyní mohu sledovat, co se děje, i když jsem mimo domov.

Kód, který jsem zkopíroval a napsal, je k dispozici zde: https://github.com/superroma/tilt-cloud4rpi. Není to zdaleka dokonalé, funguje to pouze s jediným náklonem, nezáleží mu na „barvě“zařízení, ať už to znamená cokoli, a já nejsem žádný Python, takže opravy, návrhy nebo vidlice jsou vítány !

Doporučuje: