Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Õlle kääritamisel peaksite iga päev jälgima selle raskusastet ja temperatuuri. Seda on lihtne unustada ja eemal olles võimatu.
Pärast mõningast guugeldamist leidsin automaatse gravitatsiooniseire jaoks mitu lahendust (üks, kaks, kolm). Üks neist väga nutika kontseptsiooniga kutsus Tiltit. Tilt hõljub õlles ja mõõdab oma kaldenurka. See nurk sõltub vedeliku tihedusest ja seetõttu saab mõõta kääritava õlle raskust.
Tilt on kaasas mobiilirakendusega, mis ühendub sellega ja saab andmeid mis tahes veebiteenusele postitada. Probleem on selles, et selleks peate olema Tiltist kaugel. Samuti on olemas programm Raspberry Pi, mis töötab Tiltiga.
Samm: kallutusandmete hankimine Pythonis
Ma kasutan juba keldri temperatuuri jälgimiseks Raspberry Pi ja pilve juhtpaneeli teenust cloud4rpi.io. Kui Tilt saab Raspberry Pi -ga rääkida, peaks olema võimalik cloud4rpi sellega ühendada. Tilt kasutab traadita protokolli, seega vajate juhtmevaba kiibiga Raspberry Pi (Rasbperry Pi 3 või Zero W).
Õnneks on Tilt tarkvara jaoks GitHubi repo koos mõne näidisega. Vaadates aadressi https://github.com/baronbrew/tilt-scan, näete, et Tilt näeb teisi kui BLE iBeacon, mille värv on kodeeritud UUID-ga ning temperatuur ja gravitatsioon on suuremates ja väiksemates baitides.
Nende näidiskood on Node.js jaoks ja mul on Pythoni juhtimisprogramm, mis põhineb cloud4rpi mallil
Seega pean Pythonist hankima Tilt andmed. Pärast mõningast guugeldamist leidsin https://github.com/switchdoclabs/iBeacon-Scanner-- Python iBeacon skanneri. See on programm, mitte teek, seega muutsin seda, et stringide asemel sõnastik tagasi saata. Ja ma kirjutasin ka Tilt-spetsiifilise mooduli, et saada esimese leitud Tilt'i värvi, temperatuuri ja raskusastet (mul on ainult üks), ja lihtsa testimisprogrammi, et kontrollida, kas see näeb minu kallutust:
impordi aegimport kallutus
kuigi tõsi:
res = tilt.getFirstTilt () print res time.sleep (2)
Käivitage ja kontrollige, kas see töötab. Nüüd saan selle oma juhtimisprogrammiga ühendada. Mul on juba pythoniprogramm cloud4rpi.io -ga ühendatud, kuid lubage mul näidata, kuidas seda teha nullist.
Samm: seadme ühendamine pilvega
Esmalt logige sisse aadressile cloud4rpi.io, seejärel looge uus seade.
Teile antakse seadme märk ja paigaldusjuhised. Raspberry Pi puhul järgige juhiseid siin https://docs.cloud4rpi.io/start/rpi/-veenduge, et teie süsteem oleks ajakohane:
sudo apt update && sudo apt upgrade
Paigaldamise eeltingimused:
sudo apt install git python python-pip
Installige cloud4rpi pythoni paketid:
sudo pip installige cloud4rpi
seejärel hankige Raspberry Pi jaoks mõeldud python -rakenduse näidis (juhtkausta):
git kloon https://github.com/cloud4rpi/cloud4rpi-raspberryp… kontroll
cd juhtimine
modify control.py - määrake reas oma seadme tunnus
DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'
Eemaldage seadme muutujadeklaratsioonidest mittevajalikud kirjed, jätke seadme ühenduse testimiseks ainult CPUTemp:
# Pane siia muutujadeklaratsioonid muutujad = {'CPU Temp': {'type': 'numbriline', 'bind': rpi.cpu_temp}}
Tehke nüüd proovisõit:
sudo python control.py
Kui kõik on korras, värskendatakse teie seadme lehte kohe diagnostikaandmetega.
Samm: andmete saatmine pilve
Nüüd peame muutma control.py, et lugeda ja teatada Tilt'i värvi, temperatuuri ja gravitatsiooni. Tulemus näeb välja selline:
alates os impordi unamefrom pistikupesast import gethostname import sys importimise aeg import cloud4rpi import rpi import kallutus
# Pange oma seadme tunnus siia. Märgi saamiseks
# registreeruge aadressil https://cloud4rpi.io ja looge seade. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'
# Konstantsed
DATA_SENDING_INTERVAL = 60 # sekundit DIAG_SENDING_INTERVAL = 600 # sekundit POLL_INTERVAL = 0,5 # 500 ms
majakas = {}
def F2C (kraadi F):
tagasitulek (kraadF - 32) / 1.8
def getTemp ():
tagasta F2C (int (majakas ['Temp']))), kui majakas muu Puudub
def getGravity ():
tagasimajakas ['Gravity'], kui majakas muu Puudub
def main ():
# Pane siia muutujadeklaratsioonid
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 ())}
seade = cloud4rpi.connect (DEVICE_TOKEN)
device.declare (muutujad) device.declare_diag (diagnostika)
device.publish_config ()
# Lisab 1 -sekundilise viivituse, et tagada seadme muutujate loomine
aeg. uni (1)
proovige:
data_timer = 0 diag_timer = 0 samas tõsi: kui data_timer <= 0: globaalne majakas majakas = tilt.getFirstTilt () device.publish_data () data_timer = DATA_SENDING_INTERVAL
kui diag_timer <= 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL
time.sleep (POLL_INTERVAL)
diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
välja arvatud klaviatuur Katkestus:
cloud4rpi.log.info ('Klaviatuuri katkestus vastu võetud. Peatamine …')
välja arvatud erand nagu e:
error = cloud4rpi.get_error_message (e) cloud4rpi.log.error ("VIGA! %s %s", viga, sys.exc_info () [0])
lõpuks:
sys.exit (0)
kui _name_ == '_main_':
peamine ()
Nüüd käivitage see käsitsi, et näha, kas see töötab:
sudo python control.py
Kui kõik on korras, näete oma muutujaid võrgus.
Control.py käivitamiseks süsteemi käivitamisel installige see teenusena. Cloud4rpi pakub selleks installiskripti service_install.sh. Lisasin selle oma reposse. Control.py teenusena installimiseks käivitage
sudo bash service_install.sh control.py
Nüüd saate selle teenuse käivitada | peatada | taaskäivitada, käivitades käsu
sudo systemctl käivitage cloud4rpi.service
Teenus hoiab oma eelmist olekut sisselülitamisel, nii et kui see töötas, töötab see pärast taaskäivitamist või voolukatkestust.
4. samm: lõpptulemus
See on kõik, nüüd saadetakse pilti minu Tilt -parameetrid, nii et saan selle jaoks kena pilve juhtpaneeli seadistada. Minge aadressile https://cloud4rpi.io/control-panels ja looge uus juhtpaneel, lisage vidin ning valige andmeallikaks/Gravity ja Beer Temp. Nüüd saan toimuvat jälgida isegi siis, kui olen kodust eemal.
Kopeeritud ja kirjutatud kood on saadaval siin: https://github.com/superroma/tilt-cloud4rpi. See pole kaugeltki täiuslik, see töötab ainult ühe kallutusega, see ei hooli seadme värvist, mida see ka ei tähendaks, ja ma pole üldse Pythoni tüüp, seega on parandused, soovitused või kahvlid teretulnud !