Inhaltsverzeichnis:
- Schritt 1: Abrufen von Neigungsdaten in Python
- Schritt 2: Gerät mit der Cloud verbinden
- Schritt 3: Daten an die Cloud senden
- Schritt 4: Endergebnis
Video: So steuern Sie die Fermentationstemperatur und die Schwerkraft von Bier über Ihr Smartphone - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
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
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
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
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
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:
Arduino- und Apple HomeKit-Integration - Steuern Sie Ihr Zuhause von Siri aus! IoT ist hier: 6 Schritte
Arduino- und Apple HomeKit-Integration - Steuern Sie Ihr Zuhause von Siri aus! IoT ist hier: Dieses Instructable bietet Ihnen eine schnelle und einfache Möglichkeit, ein Arduino-Board zu Apples HomeKit auf einem iOS-Gerät hinzuzufügen. Es eröffnet alle möglichen Möglichkeiten, einschließlich Skripte, die auf dem Server ausgeführt werden, kombiniert mit Apples HomeKit "Szenen", es macht
Steuern Sie Geräte über das Internet über den Browser. (IoT): 6 Schritte
Steuern Sie Geräte über das Internet über den Browser. (IoT): In diesem Instructable zeige ich Ihnen, wie Sie Geräte wie LEDs, Relais, Motoren usw. über das Internet über einen Webbrowser steuern können. Und Sie können über jedes Gerät sicher auf die Bedienelemente zugreifen. Die Webplattform, die ich hier verwendet habe, ist RemoteMe.org visit
Steuern Sie Ihren ESP6266 über das Internet? Kostenlos und einfach: 7 Schritte
Steuern Sie Ihren ESP6266 über das Internet? Kostenlos und einfach: Wie oft haben wir nicht nach einer einfachen Möglichkeit gesucht, mit unseren Geräten über das Internet ohne Komplikationen und / oder komplexe Zwischenanwendungen, DNS, IP-Adressen oder VPNs zu kommunizieren geführt, r
So erhalten Sie Musik von fast jeder (Haha) Website (solange Sie sie hören können, können Sie sie bekommen Okay, wenn sie in Flash eingebettet ist, können Sie es möglicherweise nicht) BEARBEITET!!!!! Hinzugefügte Informationen: 4 Schritte
So erhalten Sie Musik von fast jeder (Haha) Website (solange Sie sie hören können, können Sie sie bekommen … Okay, wenn sie in Flash eingebettet ist, können Sie es möglicherweise nicht) BEARBEITET!!!!! Zusätzliche Informationen: Wenn Sie jemals auf eine Website gehen und ein Lied abspielen, das Sie mögen und es wollen, dann ist hier das anweisbare für Sie, nicht meine Schuld, wenn Sie etwas durcheinander bringen (nur so wird es passieren, wenn Sie ohne Grund anfangen, Dinge zu löschen) ) Ich konnte Musik für
So finden Sie Ihr verlorenes Handy oder Ihr schnurloses Telefon – wikiHow
So finden Sie Ihr verlorenes Handy oder schnurloses Telefon: Szenario: Meine Frau und ich haben beide Mobiltelefone. Wir benutzen kein Heimtelefon mehr, da wir die ganze Zeit unterwegs sind. Warum für einen Festnetzanschluss bezahlen, den Sie kaum nutzen