Inhoudsopgave:

Hoe u de temperatuur en zwaartekracht van biergisting vanaf uw smartphone kunt regelen: 4 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe u de temperatuur en zwaartekracht van biergisting vanaf uw smartphone kunt regelen: 4 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"

Video: Hoe u de temperatuur en zwaartekracht van biergisting vanaf uw smartphone kunt regelen: 4 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"

Video: Hoe u de temperatuur en zwaartekracht van biergisting vanaf uw smartphone kunt regelen: 4 stappen (met afbeeldingen) Antwoorden op al uw
Video: Natuurkundige onthult tijdreisgeheimen van UFO's: Nimitz & Tic Tac 2024, November
Anonim
Hoe u de temperatuur en zwaartekracht van biergisting vanaf uw smartphone kunt regelen
Hoe u de temperatuur en zwaartekracht van biergisting vanaf uw smartphone kunt regelen

Wanneer bier aan het gisten is, moet u de zwaartekracht en temperatuur dagelijks controleren. Het is gemakkelijk om dit te vergeten, en onmogelijk als u weg bent.

Na wat googlen vond ik verschillende oplossingen voor geautomatiseerde zwaartekrachtmonitoring (een, twee, drie). Een van hen, met een heel slim concept, heet Tilt. Tilt drijft in je bier en meet zijn eigen tilthoek. Deze hoek is afhankelijk van de dichtheid van de vloeistof en kan daarom de zwaartekracht van het gistende bier meten.

Tilt wordt geleverd met een mobiele app die er verbinding mee maakt en gegevens op elke webservice kan posten. Het probleem is dat je niet ver van Tilt moet zijn om dit te kunnen doen. Er is ook een Raspberry Pi-programma dat werkt met Tilt.

Stap 1: Tilt-gegevens ophalen in Python

Tilt-gegevens ophalen in Python
Tilt-gegevens ophalen in Python

Ik gebruik al Raspberry Pi om de keldertemperatuur te bewaken en een cloud-bedieningspaneelservice cloud4rpi.io. Als Tilt met Raspberry Pi kan praten, zou het mogelijk moeten zijn om cloud4rpi ermee aan te sluiten. Tilt gebruikt een draadloos protocol, dus je hebt een Raspberry Pi met een draadloze chip nodig (Rasbperry Pi 3 of Zero W).

Gelukkig is er een GitHub-repo voor Tilt-software met enkele voorbeelden. Als je naar https://github.com/baronbrew/tilt-scan kijkt, kun je zien dat Tilt er voor anderen uitziet als BLE iBeacon, met "Color" gecodeerd in UUID, en temperatuur en zwaartekracht zijn in grote en kleine bytes.

Hun voorbeeldcode is voor Node.js en ik heb een Python-besturingsprogramma op basis van cloud4rpi-sjabloon

Dus ik moet Tilt-gegevens in Python krijgen. Na wat googlen vond ik https://github.com/switchdoclabs/iBeacon-Scanner- - Python iBeacon-scanner. Dit is een programma, geen bibliotheek, dus ik heb het aangepast om een woordenboek terug te geven in plaats van een string. En ik heb ook een Tilt-specifieke module geschreven om kleur, temperatuur en zwaartekracht van de eerste gevonden Tilt te krijgen (ik heb er maar één), en een eenvoudig testprogramma om te controleren of het mijn Tilt kan zien:

import tijdimport tilt

terwijl waar:

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

Uitvoeren en controleren of het werkt. Nu kan ik hem aansluiten op mijn besturingsprogramma. Ik heb al een python-programma aangesloten op cloud4rpi.io, maar laat me je laten zien hoe je dit vanaf het begin kunt doen.

Stap 2: Apparaat verbinden met de cloud

Apparaat verbinden met de cloud
Apparaat verbinden met de cloud
Apparaat verbinden met de cloud
Apparaat verbinden met de cloud

Meld u eerst aan bij cloud4rpi.io en maak vervolgens een nieuw apparaat.

U krijgt een apparaattoken en installatie-instructies. Volg de instructies voor Raspberry Pi hier https://docs.cloud4rpi.io/start/rpi/ - zorg ervoor dat uw systeem up-to-date is:

sudo apt update && sudo apt upgrade

Installatievereisten:

sudo apt install git python python-pip

Installeer cloud4rpi python-pakketten:

sudo pip installeer cloud4rpi

haal dan een voorbeeld python-app voor Raspberry Pi (in de controlemap):

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

cd-bediening

wijzig control.py - specificeer uw apparaattoken in de regel

DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

Verwijder onnodige vermeldingen uit declaraties van apparaatvariabelen, laat alleen CPUTemp over om de apparaatverbinding te testen:

# Zet hier variabele declaraties variabelen = { 'CPU Temp': { 'type': 'numeric', 'bind': rpi.cpu_temp } }

Doe nu een testrun:

sudo python control.py

Als alles in orde is, wordt uw apparaatpagina onmiddellijk bijgewerkt met diagnostische gegevens.

Stap 3: Gegevens naar de cloud verzenden

Gegevens naar de cloud verzenden
Gegevens naar de cloud verzenden

Nu moeten we control.py aanpassen om de kleur, temperatuur en zwaartekracht van Tilt te lezen en te rapporteren. Resultaat ziet er als volgt uit:

van os import unamefrom socket import gethostnaam import sys import tijd import cloud4rpi import rpi import tilt

# Plaats hier uw apparaattoken. Om het teken te krijgen, # meld je aan op https://cloud4rpi.io en maak een apparaat aan. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

# Constanten

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

baken = {}

def F2C(gradenF):

retour (gradenF - 32) / 1.8

def getTemp():

return F2C(int(baken['Temp'])) als baken anders Geen

def getGravity():

return baken['Gravity'] als baken anders Geen

def hoofd():

# Zet hier variabele declaraties

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

diagnose = {

'CPU Temp': rpi.cpu_temp, 'IP-adres': rpi.ip_address, 'Host': gethostname(), 'Besturingssysteem': " ".join(uname()) }

apparaat = cloud4rpi.connect(DEVICE_TOKEN)

device.declare(variabelen) device.declare_diag(diagnose)

apparaat.publish_config()

# Voegt een vertraging van 1 seconde toe om ervoor te zorgen dat er apparaatvariabelen worden gemaakt

tijd.slaap(1)

proberen:

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

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

tijd.slaap(POLL_INTERVAL)

diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL

behalve KeyboardInterrupt:

cloud4rpi.log.info('Toetsenbordonderbreking ontvangen. Stoppen…')

uitzondering Uitzondering als e:

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

Tenslotte:

sys.exit(0)

if _name_ == '_main_':

hoofd()

Voer het nu handmatig uit om te zien of het werkt:

sudo python control.py

Als alles goed is, zie je je variabelen online.

Om control.py uit te voeren bij het opstarten van het systeem, installeert u het als een service. Cloud4rpi biedt hiervoor een installatiescript service_install.sh. Ik heb het in mijn repo opgenomen. Om control.py als een service te installeren, voert u

sudo bash service_install.sh control.py

Nu kunt u deze service starten|stoppen|herstarten door het commando uit te voeren

sudo systemctl start cloud4rpi.service

Service behoudt zijn vorige status bij het opstarten, dus als het actief was, zal het worden uitgevoerd na opnieuw opstarten of stroomuitval.

Stap 4: Eindresultaat

Eindresultaat
Eindresultaat

Dit is het, nu heb ik mijn Tilt-parameters naar de cloud gestuurd, dus ik kan er een mooi cloud-bedieningspaneel voor opzetten. Ga naar https://cloud4rpi.io/control-panels en maak een nieuw configuratiescherm, voeg widget toe en selecteer /Gravity en Beer Temp als gegevensbron. Nu kan ik in de gaten houden wat er gebeurt, zelfs als ik niet thuis ben.

De code die ik heb gekopieerd en geschreven is hier beschikbaar: https://github.com/superroma/tilt-cloud4rpi. Het is verre van perfect, het werkt alleen met een enkele Tilt, het geeft niet om de "Kleur" van het apparaat, wat het ook betekent, en ik ben helemaal geen Python-man, dus oplossingen, suggesties of vorken zijn welkom !

Aanbevolen: