Πίνακας περιεχομένων:

Πώς να ελέγξετε τη θερμοκρασία και τη βαρύτητα ζύμωσης μπύρας από το smartphone σας: 4 βήματα (με εικόνες)
Πώς να ελέγξετε τη θερμοκρασία και τη βαρύτητα ζύμωσης μπύρας από το smartphone σας: 4 βήματα (με εικόνες)

Βίντεο: Πώς να ελέγξετε τη θερμοκρασία και τη βαρύτητα ζύμωσης μπύρας από το smartphone σας: 4 βήματα (με εικόνες)

Βίντεο: Πώς να ελέγξετε τη θερμοκρασία και τη βαρύτητα ζύμωσης μπύρας από το smartphone σας: 4 βήματα (με εικόνες)
Βίντεο: Τα μυστικά για ένα καλό κρασί ! 2024, Νοέμβριος
Anonim
Πώς να ελέγξετε τη θερμοκρασία και τη βαρύτητα της ζύμωσης μπύρας από το smartphone σας
Πώς να ελέγξετε τη θερμοκρασία και τη βαρύτητα της ζύμωσης μπύρας από το smartphone σας

Όταν η μπύρα ζυμώνει, θα πρέπει να παρακολουθείτε τη βαρύτητα και τη θερμοκρασία της καθημερινά. Είναι εύκολο να ξεχάσεις να το κάνεις, και αδύνατο αν λείπεις.

Μετά από λίγο googling, βρήκα αρκετές λύσεις για αυτοματοποιημένη παρακολούθηση της βαρύτητας (μία, δύο, τρεις). Ένα από αυτά, με πολύ έξυπνη ιδέα, ονομάζεται Tilt. Η κλίση επιπλέει στη μπύρα σας και μετρά τη δική της γωνία κλίσης. Αυτή η γωνία εξαρτάται από την πυκνότητα του υγρού και επομένως μπορεί να μετρήσει τη βαρύτητα της ζύμωσης της μπύρας.

Το Tilt συνοδεύεται από μια εφαρμογή για κινητά, η οποία συνδέεται με αυτήν και μπορεί να δημοσιεύσει δεδομένα σε οποιαδήποτε υπηρεσία ιστού. Το πρόβλημα είναι ότι πρέπει να βρίσκεστε όχι μακριά από το Tilt για να το καταφέρετε. Υπάρχει επίσης ένα πρόγραμμα Raspberry Pi που λειτουργεί με το Tilt.

Βήμα 1: Λήψη δεδομένων κλίσης στην Python

Λήψη δεδομένων κλίσης στην Python
Λήψη δεδομένων κλίσης στην Python

Χρησιμοποιώ ήδη το Raspberry Pi για την παρακολούθηση της θερμοκρασίας του κελαριού και μια υπηρεσία πίνακα ελέγχου cloud cloud4rpi.io. Εάν η Tilt μπορεί να μιλήσει με το Raspberry Pi, θα πρέπει να είναι δυνατή η σύνδεση του cloud4rpi σε αυτό. Το Tilt χρησιμοποιεί ασύρματο πρωτόκολλο, οπότε θα χρειαστείτε το Raspberry Pi με ασύρματο τσιπ (Rasbperry Pi 3 ή Zero W).

Ευτυχώς, υπάρχει ένα GitHub repo για το λογισμικό Tilt με μερικά δείγματα. Κοιτάζοντας το https://github.com/baronbrew/tilt-scan, μπορείτε να δείτε ότι το Tilt φαίνεται στους άλλους ως BLE iBeacon, με "Color" κωδικοποιημένο σε UUID και η θερμοκρασία και η βαρύτητα είναι σε μεγάλα και δευτερεύοντα byte.

Το δείγμα κώδικα είναι για το Node.js και έχω ένα πρόγραμμα ελέγχου Python βασισμένο στο πρότυπο cloud4rpi

Πρέπει λοιπόν να λάβω δεδομένα Tilt στην Python. Μετά από λίγο googling, βρήκα https://github.com/switchdoclabs/iBeacon-Scanner-- σαρωτή Python iBeacon. Αυτό είναι ένα πρόγραμμα, όχι μια βιβλιοθήκη, οπότε το τροποποίησα για να επιστρέψει ένα λεξικό αντί για συμβολοσειρά. Και έγραψα επίσης το Tilt-specific module για να πάρω το χρώμα, τη θερμοκρασία και τη βαρύτητα του πρώτου Tilt που βρέθηκε (έχω μόνο ένα) και ένα απλό πρόγραμμα δοκιμών για να ελέγξω αν μπορεί να δει την κλίση μου:

εισαγωγή κλίσης χρόνου εισαγωγής

ενώ True:

res = tilt.getFirstTilt () εκτύπωση res res.sleep (2)

Τρέξτε και ελέγξτε ότι λειτουργεί. Τώρα μπορώ να το συνδέσω στο πρόγραμμα ελέγχου μου. Έχω ήδη ένα πρόγραμμα python συνδεδεμένο με το cloud4rpi.io, αλλά επιτρέψτε μου να σας δείξω πώς να το κάνετε από την αρχή.

Βήμα 2: Σύνδεση συσκευής με το σύννεφο

Σύνδεση συσκευής με το σύννεφο
Σύνδεση συσκευής με το σύννεφο
Σύνδεση συσκευής με το σύννεφο
Σύνδεση συσκευής με το σύννεφο

Πρώτα, συνδεθείτε στο cloud4rpi.io και, στη συνέχεια, δημιουργήστε μια νέα συσκευή.

Θα σας δοθεί ένα διακριτικό συσκευής και οδηγίες εγκατάστασης. Για το Raspberry Pi ακολουθήστε τις οδηγίες εδώ https://docs.cloud4rpi.io/start/rpi/-βεβαιωθείτε ότι το σύστημά σας είναι ενημερωμένο:

sudo apt ενημέρωση && sudo apt αναβάθμιση

Εγκατάσταση προϋποθέσεων:

sudo apt εγκατάσταση git python python-pip

Εγκατάσταση πακέτων cloud4rpi python:

sudo pip εγκατάσταση cloud4rpi

στη συνέχεια, λάβετε ένα δείγμα εφαρμογής python για το Raspberry Pi (στον φάκελο ελέγχου):

git clone https://github.com/cloud4rpi/cloud4rpi-raspberryp… έλεγχος

cd έλεγχος

τροποποίηση control.py - καθορίστε το διακριτικό της συσκευής σας στη γραμμή

DEVICE_TOKEN = ‘_YOUR_DEVICE_TOKEN_’

Αφαιρέστε τις περιττές καταχωρήσεις από τις δηλώσεις μεταβλητής συσκευής, αφήστε μόνο CPUTemp για να ελέγξετε τη σύνδεση της συσκευής:

# Βάλτε εδώ δηλώσεις μεταβλητών μεταβλητές = {'Temp CPU': {'type': 'numeric', 'bind': rpi.cpu_temp}}

Κάντε τώρα μια δοκιμαστική εκτέλεση:

sudo python control.py

Εάν όλα είναι εντάξει, η σελίδα της συσκευής σας θα ενημερωθεί αμέσως με διαγνωστικά δεδομένα.

Βήμα 3: Αποστολή δεδομένων στο Cloud

Αποστολή δεδομένων στο Cloud
Αποστολή δεδομένων στο Cloud

Τώρα πρέπει να τροποποιήσουμε το control.py για να διαβάσουμε και να αναφέρουμε το χρώμα, τη θερμοκρασία και τη βαρύτητα του Tilt. Το αποτέλεσμα μοιάζει με αυτό:

από os εισαγωγή unamefrom socket εισαγωγή gethostname εισαγωγή sys εισαγωγή χρόνου εισαγωγής cloud4rpi εισαγωγή rpi εισαγωγή κλίση

# Βάλτε το διακριτικό της συσκευής σας εδώ. Για να πάρετε το διακριτικό, # εγγραφείτε στο https://cloud4rpi.io και δημιουργήστε μια συσκευή. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

# Σταθερές

DATA_SENDING_INTERVAL = 60 # δευτερόλεπτα DIAG_SENDING_INTERVAL = 600 # δευτερόλεπτα POLL_INTERVAL = 0,5 # 500 ms

φάρος = {}

def F2C (βαθμοί F):

επιστροφή (βαθμοί F - 32) / 1.8

def getTemp ():

επιστροφή F2C (int (φάρος ['Temp']))) εάν φάρος αλλού Καμία

def getGravity ():

φάρος επιστροφής [«Βαρύτητα»] αν φάρος άλλος Κανένας

def main ():

# Βάλτε τις δηλώσεις μεταβλητών εδώ

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

διαγνωστικά = {

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

συσκευή = cloud4rpi.connect (DEVICE_TOKEN)

device.declare (μεταβλητές) device.declare_diag (διαγνωστικά)

device.publish_config ()

# Προσθέτει 1 δευτερόλεπτο καθυστέρηση για να διασφαλιστεί ότι δημιουργούνται μεταβλητές συσκευής

ώρα. ύπνος (1)

προσπαθήστε:

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

αν diag_timer <= 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL

time.sleep (POLL_INTERVAL)

diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL

εκτός από το KeyboardIntruptrupt:

cloud4rpi.log.info ('Λήψη διακοπής πληκτρολογίου. Διακοπή…')

εκτός από την εξαίρεση ως e:

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

τελικά:

sys.exit (0)

αν _name_ == '_main_':

κύριος()

Τώρα εκτελέστε το χειροκίνητα για να δείτε αν λειτουργεί:

sudo python control.py

Εάν όλα είναι καλά, θα δείτε τις μεταβλητές σας στο διαδίκτυο.

Για να εκτελέσετε το control.py κατά την εκκίνηση του συστήματος, εγκαταστήστε το ως υπηρεσία. Το Cloud4rpi παρέχει μια υπηρεσία εγκατάστασης script_install.sh για να το κάνετε αυτό. Το έχω συμπεριλάβει στο repo μου. Για να εγκαταστήσετε το control.py ως υπηρεσία, εκτελέστε

sudo bash service_install.sh control.py

Τώρα μπορείτε να ξεκινήσετε | διακοπή | επανεκκίνηση αυτής της υπηρεσίας εκτελώντας την εντολή

sudo systemctl εκκίνηση cloud4rpi.service

Η υπηρεσία διατηρεί την προηγούμενη κατάσταση λειτουργίας, οπότε αν ήταν σε λειτουργία, θα λειτουργούσε μετά από επανεκκίνηση ή απώλεια ισχύος.

Βήμα 4: Τελικό αποτέλεσμα

Τελικό αποτέλεσμα
Τελικό αποτέλεσμα

Αυτό είναι, τώρα έχω τις παραμέτρους μου Tilt που αποστέλλονται στο σύννεφο, ώστε να μπορώ να δημιουργήσω έναν όμορφο πίνακα ελέγχου cloud για αυτό. Μεταβείτε στη διεύθυνση https://cloud4rpi.io/control-panels και δημιουργήστε νέο πίνακα ελέγχου, προσθέστε widget και επιλέξτε/Gravity and Beer Temp ως πηγή δεδομένων. Τώρα μπορώ να παρακολουθώ τι συμβαίνει ακόμα κι αν είμαι μακριά από το σπίτι.

Ο κώδικας που αντέγραψα και έγραψα είναι διαθέσιμος εδώ: https://github.com/superroma/tilt-cloud4rpi. Δεν είναι καθόλου τέλειο, λειτουργεί μόνο με ένα μόνο Tilt, δεν νοιάζεται για το "Χρώμα" της συσκευής, ό, τι κι αν σημαίνει αυτό, και δεν είμαι καθόλου τύπος Python, οπότε οι διορθώσεις, οι προτάσεις ή τα πιρούνια είναι ευπρόσδεκτα !

Συνιστάται: