Inhaltsverzeichnis:

So steuern Sie die Fermentationstemperatur und die Schwerkraft von Bier über Ihr Smartphone - Gunook
So steuern Sie die Fermentationstemperatur und die Schwerkraft von Bier über Ihr Smartphone - Gunook

Video: So steuern Sie die Fermentationstemperatur und die Schwerkraft von Bier über Ihr Smartphone - Gunook

Video: So steuern Sie die Fermentationstemperatur und die Schwerkraft von Bier über Ihr Smartphone - Gunook
Video: Die Kunst der Fermentation - Webinar mit Olaf Schnelle 2024, Juli
Anonim
So steuern Sie die Fermentationstemperatur und die Schwerkraft von Bier von Ihrem Smartphone aus
So steuern Sie die Fermentationstemperatur und die Schwerkraft von Bier von Ihrem Smartphone aus

Wenn Bier gärt, sollten Sie seine Schwerkraft und Temperatur täglich überwachen. Es ist leicht, dies zu vergessen, und unmöglich, wenn Sie nicht da sind.

Nach einigem googeln fand ich mehrere Lösungen für die automatisierte Schwerkraftüberwachung (eins, zwei, drei). Einer von ihnen, mit sehr cleverem Konzept, heißt Tilt. Tilt schwebt in Ihrem Bier und misst seinen eigenen Neigungswinkel. Dieser Winkel hängt von der Dichte der Flüssigkeit ab und kann daher die Schwerkraft des gärenden Bieres messen.

Tilt wird mit einer mobilen App geliefert, die sich damit verbindet und Daten an jeden Webservice senden kann. Das Problem ist, dass Sie dazu nicht weit von Tilt entfernt sein müssen. Es gibt auch ein Raspberry Pi-Programm, das mit Tilt funktioniert.

Schritt 1: Abrufen von Neigungsdaten in Python

Abrufen von Neigungsdaten in Python
Abrufen von Neigungsdaten in Python

Ich verwende bereits Raspberry Pi, um die Kellertemperatur zu überwachen, und einen Cloud-Systemsteuerungsdienst cloud4rpi.io. Wenn Tilt mit Raspberry Pi kommunizieren kann, sollte es möglich sein, cloud4rpi damit zu verbinden. Tilt verwendet ein drahtloses Protokoll, daher benötigen Sie Raspberry Pi mit einem drahtlosen Chip (Rasbperry Pi 3 oder Zero W).

Glücklicherweise gibt es ein GitHub-Repository für Tilt-Software mit einigen Beispielen. Wenn Sie sich https://github.com/baronbrew/tilt-scan ansehen, können Sie sehen, dass Tilt für andere als BLE iBeacon aussieht, wobei „Color“in UUID codiert ist und Temperatur und Schwerkraft in Major- und Minor-Bytes sind.

Ihr Beispielcode ist für Node.js, und ich habe ein Python-Steuerungsprogramm basierend auf der cloud4rpi-Vorlage

Ich muss also Tilt-Daten in Python abrufen. Nach einigem googeln fand ich https://github.com/switchdoclabs/iBeacon-Scanner- - Python iBeacon Scanner. Dies ist ein Programm, keine Bibliothek, also habe ich es so geändert, dass es ein Wörterbuch anstelle eines Strings zurückgibt. Und ich habe auch ein Tilt-spezifisches Modul geschrieben, um Farbe, Temperatur und Schwerkraft des ersten gefundenen Tilts zu erhalten (ich habe nur einen), und ein einfaches Testprogramm, um zu überprüfen, ob es meinen Tilt sehen kann:

Zeit importieren Neigung importieren

während Wahr:

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

Führen Sie aus und überprüfen Sie, ob es funktioniert. Jetzt kann ich es an mein Steuerungsprogramm anschließen. Ich habe bereits ein Python-Programm, das mit cloud4rpi.io verbunden ist, aber lassen Sie mich von Grund auf zeigen, wie es geht.

Schritt 2: Gerät mit der Cloud verbinden

Gerät mit der Cloud verbinden
Gerät mit der Cloud verbinden
Gerät mit der Cloud verbinden
Gerät mit der Cloud verbinden

Melden Sie sich zuerst bei cloud4rpi.io an und erstellen Sie dann ein neues Gerät.

Sie erhalten einen Geräte-Token und eine Installationsanleitung. Für Raspberry Pi folgen Sie den Anweisungen hier https://docs.cloud4rpi.io/start/rpi/ - stellen Sie sicher, dass Ihr System auf dem neuesten Stand ist:

sudo apt-Update && sudo apt-Upgrade

Installationsvoraussetzungen:

sudo apt installieren git python python-pip

Installieren Sie cloud4rpi-Python-Pakete:

sudo pip install cloud4rpi

Holen Sie sich dann eine Beispiel-Python-App für Raspberry Pi (in den Kontrollordner):

Git-Klon https://github.com/cloud4rpi/cloud4rpi-raspberryp… control

CD-Steuerung

modify control.py - geben Sie Ihr Geräte-Token in der Zeile an

DEVICE_TOKEN = ‘_IHR_DEVICE_TOKEN_’

Entfernen Sie unnötige Einträge aus Gerätevariablendeklarationen, lassen Sie nur CPUTemp, um die Geräteverbindung zu testen:

# Variablendeklarationen hier einfügen variables = { 'CPU Temp': { 'type': 'numeric', 'bind': rpi.cpu_temp } }

Führen Sie nun einen Testlauf durch:

sudo python control.py

Wenn alles in Ordnung ist, wird Ihre Geräteseite sofort mit Diagnosedaten aktualisiert.

Schritt 3: Daten an die Cloud senden

Senden von Daten an die Cloud
Senden von Daten an die Cloud

Jetzt müssen wir control.py ändern, um die Farbe, Temperatur und Schwerkraft von Tilt zu lesen und zu melden. Ergebnis sieht so aus:

from os import unamefrom socket import gethostname import sys import time import cloud4rpi import rpi import Tilt

# Legen Sie hier Ihren Geräte-Token ab. Um das Token zu erhalten, # unter https://cloud4rpi.io anmelden und ein Gerät erstellen. DEVICE_TOKEN = '_IHR_DEVICE_TOKEN_'

# Konstanten

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

Leuchtfeuer = {}

def F2C (Grad F):

zurück (GradF - 32) / 1.8

def getTemp():

F2C(int(beacon['Temp'])) zurückgeben wenn Beacon sonst Keine

def getGravity():

return beacon['Gravity'] if beacon else None

def main():

# Variablendeklarationen hier einfügen

Variablen = { 'Gravity': { 'type': 'numeric', 'bind': getGravity }, 'Bier Temp': { 'type': 'numeric', 'bind': getTemp } }

Diagnose = {

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

Gerät = cloud4rpi.connect(DEVICE_TOKEN)

device.declare(Variablen) device.declare_diag(Diagnose)

device.publish_config()

# Fügt eine Verzögerung von 1 Sekunde hinzu, um sicherzustellen, dass Gerätevariablen erstellt werden

Zeit. Schlaf(1)

Versuchen:

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

außer KeyboardInterrupt:

cloud4rpi.log.info('Tastatur-Interrupt empfangen. Stoppt…')

außer Ausnahme wie e:

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

Endlich:

sys.exit(0)

if _name_ == '_main_':

hauptsächlich()

Führen Sie es nun manuell aus, um zu sehen, ob es funktioniert:

sudo python control.py

Wenn alles in Ordnung ist, sehen Sie Ihre Variablen online.

Um control.py beim Systemstart auszuführen, installieren Sie es als Dienst. Cloud4rpi stellt dazu ein Installationsskript service_install.sh bereit. Ich habe es in mein Repo aufgenommen. Um control.py als Dienst zu installieren, führen Sie

sudo bash service_install.sh control.py

Jetzt können Sie diesen Dienst starten|stoppen|neu starten, indem Sie den Befehl ausführen

sudo systemctl start cloud4rpi.service

Der Dienst behält seinen vorherigen Status beim Einschalten bei. Wenn er also ausgeführt wurde, wird er nach einem Neustart oder Stromausfall ausgeführt.

Schritt 4: Endergebnis

Endergebnis
Endergebnis

Das ist es, jetzt werden meine Tilt-Parameter an die Cloud gesendet, damit ich ein schönes Cloud-Control-Panel dafür einrichten kann. Gehen Sie zu https://cloud4rpi.io/control-panels und erstellen Sie ein neues Control Panel, fügen Sie ein Widget hinzu und wählen Sie /Gravity und Beer Temp als Datenquelle. Jetzt kann ich überwachen, was vor sich geht, auch wenn ich nicht zu Hause bin.

Der Code, den ich kopiert und geschrieben habe, ist hier verfügbar: https://github.com/superroma/tilt-cloud4rpi. Es ist alles andere als perfekt, es funktioniert nur mit einem einzigen Tilt, es kümmert sich nicht um die „Farbe“des Geräts, was auch immer es bedeutet, und ich bin überhaupt kein Python-Typ, also sind Korrekturen, Vorschläge oder Forks willkommen !

Empfohlen: