Kazalo:
- 1. korak: Pridobivanje podatkov o nagibu v Pythonu
- 2. korak: Povezovanje naprave z oblakom
- 3. korak: pošiljanje podatkov v oblak
- 4. korak: Končni rezultat
Video: Kako nadzorovati temperaturo in težo fermentacije piva s pametnega telefona: 4 koraki (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:08
Ko fermentira pivo, morate dnevno spremljati njegovo težo in temperaturo. Na to je enostavno pozabiti in nemogoče, če vas ni.
Po googlanju sem našel več rešitev za avtomatizirano spremljanje gravitacije (eno, dve, tri). Eden od njih, z zelo pametnim konceptom, se imenuje Tilt. Nagib plava v vašem pivu in meri svoj kot nagiba. Ta kot je odvisen od gostote tekočine in zato lahko meri težo fermentiranega piva.
Tilt ima mobilno aplikacijo, ki se poveže z njim in lahko objavi podatke v kateri koli spletni storitvi. Težava je v tem, da morate biti nedaleč od Tilta, da bi to lahko storili. Obstaja tudi program Raspberry Pi, ki deluje s programom Tilt.
1. korak: Pridobivanje podatkov o nagibu v Pythonu
Že uporabljam Raspberry Pi za spremljanje temperature v kleti in storitev nadzorne plošče v oblaku cloud4rpi.io. Če se lahko Tilt pogovarja z Raspberry Pi, bi bilo treba z njim povezati cloud4rpi. Tilt uporablja brezžični protokol, zato boste potrebovali Raspberry Pi z brezžičnim čipom (Rasbperry Pi 3 ali Zero W).
Na srečo obstaja GitHub repo za programsko opremo Tilt z nekaj vzorci. Če pogledate https://github.com/baronbrew/tilt-scan, lahko vidite, da Tilt drugim izgleda kot BLE iBeacon, z oznako »Color« v UUID-u, temperatura in gravitacija pa v velikih in manjših bajtih.
Njihova vzorčna koda je za Node.js in imam nadzorni program Python, ki temelji na predlogi cloud4rpi
Zato moram v Python dobiti podatke o nagibu. Po googlanju sem našel https://github.com/switchdoclabs/iBeacon-Scanner-- skener Python iBeacon. To je program, ne knjižnica, zato sem ga spremenil tako, da je namesto niza vrnil slovar. Napisal sem tudi modul, specifičen za nagib, da dobim barvo, temperaturo in težo prvega najdenega nagiba (imam samo enega), in preprost preskusni program za preverjanje, ali lahko vidi moj nagib:
čas uvoza uvoz nagib
medtem ko je res:
res = tilt.getFirstTilt () natisni res time.sleep (2)
Zaženite in preverite, ali deluje. Zdaj ga lahko priključim na svoj nadzorni program. Že imam program python, povezan z cloud4rpi.io, vendar naj pokažem, kako to storiti iz nič.
2. korak: Povezovanje naprave z oblakom
Najprej se prijavite v cloud4rpi.io, nato pa ustvarite novo napravo.
Dobili boste žeton naprave in navodila za namestitev. Za Raspberry Pi sledite navodilom tukaj https://docs.cloud4rpi.io/start/rpi/-preverite, ali je vaš sistem posodobljen:
sudo apt update && sudo apt upgrade
Predpogoji za namestitev:
sudo apt install git python python-pip
Namestite pakete python cloud4rpi:
sudo pip namestite cloud4rpi
nato dobite vzorčno aplikacijo python za Raspberry Pi (v nadzorno mapo):
git clone https://github.com/cloud4rpi/cloud4rpi-raspberryp… control
cd nadzor
spremeni control.py - v vrstico vnesite žeton naprave
DEVICE_TOKEN = ‘_YOUR_DEVICE_TOKEN_’
Odstranite nepotrebne vnose iz deklaracij spremenljivk naprave, za preizkus povezave naprave pustite samo CPUTemp:
# Tu vnesite deklaracije spremenljivk = {'Temp CPU': {'type': 'numeric', 'bind': rpi.cpu_temp}}
Zdaj naredite preskusno vožnjo:
sudo python control.py
Če je vse v redu, bo stran vaše naprave takoj posodobljena z diagnostičnimi podatki.
3. korak: pošiljanje podatkov v oblak
Zdaj moramo spremeniti control.py za branje in poročanje o Tilttovi barvi, temperaturi in gravitaciji. Rezultat izgleda takole:
iz os uvoz uname iz vtičnice uvoz gethostname uvoz sys čas uvoza uvoz cloud4rpi uvoz rpi uvoz nagib
# Tukaj vnesite žeton naprave. Če želite dobiti žeton, # prijavite se na https://cloud4rpi.io in ustvarite napravo. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'
# Konstante
DATA_SENDING_INTERVAL = 60 # s DIAG_SENDING_INTERVAL = 600 # s POLL_INTERVAL = 0,5 # 500 ms
svetilnik = {}
def F2C (stopinjeF):
povrat (stopinjeF - 32) / 1,8
def getTemp ():
vrni F2C (int (svetilnik ['Temp'])), če svetilnik drugače Jih ni
def getGravity ():
return beacon ['Gravity'] če svetilnik drugače Noben
def main ():
# Tukaj vnesite deklaracije spremenljivk
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 ())}
naprava = cloud4rpi.connect (DEVICE_TOKEN)
device.declare (spremenljivke) device.declare_diag (diagnostika)
device.publish_config ()
# Doda 1 sekundno zamudo za zagotovitev ustvarjanja spremenljivk naprave
time.sleep (1)
poskusi:
data_timer = 0 diag_timer = 0 while True: če je data_timer <= 0: globalni svetilnik = tilt.getFirstTilt () device.publish_data () data_timer = DATA_SENDING_INTERVAL
če diag_timer <= 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL
time.sleep (POLL_INTERVAL)
diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
razen KeyboardInterrupt:
cloud4rpi.log.info ('Prejet prekinitev tipkovnice. Ustavitev …')
razen izjeme kot e:
error = cloud4rpi.get_error_message (e) cloud4rpi.log.error ("NAPAKA! %s %s", napaka, sys.exc_info () [0])
končno:
sys.exit (0)
če _name_ == '_main_':
main ()
Zdaj ga zaženite ročno in preverite, ali deluje:
sudo python control.py
Če je vse v redu, boste na spletu videli svoje spremenljivke.
Če želite zagnati control.py ob zagonu sistema, ga namestite kot storitev. Cloud4rpi ponuja namestitveni skript service_install.sh. To sem vključil v svoj repo. Če želite namestiti control.py kot storitev, zaženite
sudo bash service_install.sh control.py
Zdaj lahko začnete | stop | znova zaženete to storitev z zagonom ukaza
sudo systemctl začni cloud4rpi.service
Storitev ohranja vklopljeno prejšnje stanje, zato bo delovala po ponovnem zagonu ali izpadu napajanja.
4. korak: Končni rezultat
To je to, zdaj imam svoje parametre nagiba, ki se pošiljajo v oblak, zato lahko zanj nastavim lepo nadzorno ploščo v oblaku. Pojdite na https://cloud4rpi.io/control-panels in ustvarite novo nadzorno ploščo, dodajte pripomoček in izberite/Gravity and Beer Temp kot vir podatkov. Zdaj lahko spremljam, kaj se dogaja, tudi če nisem doma.
Koda, ki sem jo kopirala in napisala, je na voljo tukaj: https://github.com/superroma/tilt-cloud4rpi. Še zdaleč ni popoln, deluje le z enim nagibom, ne zanima ga "barva" naprave, karkoli že pomeni, sploh pa nisem Pythonov tip, zato so popravki, predlogi ali vilice dobrodošli !
Priporočena:
Zabaven objektiv kaleidoskopa za kamero pametnega telefona: 3 koraki
Zabaven objektiv kaleidoskopa za kamero pametnega telefona: V tem projektu vam pokažem, kako narediti zabaven mali objektiv kaleidoskopa, ki ustreza vašemu pametnemu telefonu! Zelo kul je eksperimentirati z naključnimi predmeti, ki ležijo po hiši, in videti, kakšne odseve je mogoče narediti
Arduino Robot za upravljanje pametnega telefona: 3 koraki
Arduino Robot za nadzor pametnega telefona: To je projekt robota Arduino za nadzor pametnega telefona. za ta projekt sem naredil tiskano vezje, tako da ni težav z mrežnimi žičnimi povezavami. Ta plošča ima gonilnik z dvojnim motorjem & nekaj dodatnih Arduino zatičev, 3V, 5V, GND, tako da lahko s tem tiskanim vezjem sledite liniji
Kako nadzorovati naslovljive LED z Fadecandy in obdelavo: 15 korakov (s slikami)
Kako nadzorovati naslovljive LED z Fadecandyjem in obdelavo: Kaj je to korak za korakom, kako uporabljati Fadecandy in Processing za nadzor naslovnih LED. Facandy je gonilnik LED, ki lahko nadzoruje do 8 trakov po 64 slikovnih pik. (Na en računalnik lahko povežete več Fadecandys
Kako nadzorovati svetlobo/domače luči z Arduinom in Amazon Alexa: 16 korakov (s slikami)
Kako nadzorovati svetlobo/domače luči z Arduinom in Amazon Alexa: Pojasnil sem, kako nadzorovati svetlobo, ki je povezana z UNO in jo upravlja Alexa
Preoblikovanje starega pametnega telefona kot video monitorja: 4 koraki (s slikami)
Preoblikovanje starega pametnega telefona kot video monitorja: moj stari Samsung S5 že več let leži naokoli in čeprav bi služil kot odlična varnostna mreža, če bi se kaj zgodilo z mojim iPhoneom, drugače ni veliko. Pred kratkim mi je prijatelj za rojstni dan podaril morskega prašička in