Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Kai alus fermentuojasi, kasdien turėtumėte stebėti jo sunkumą ir temperatūrą. Tai lengva pamiršti ir neįmanoma, jei esate toli.
Po truputį googlindamas radau kelis automatinio gravitacijos stebėjimo sprendimus (vieną, du, tris). Vienas iš jų, turintis labai protingą koncepciją, vadinamas „Tilt“. „Tilt“plaukioja jūsų aluje ir matuoja savo pasvirimo kampą. Šis kampas priklauso nuo skysčio tankio, todėl gali išmatuoti fermentuojančio alaus sunkumą.
„Tilt“yra mobilioji programa, kuri prisijungia prie jos ir gali skelbti duomenis į bet kurią žiniatinklio paslaugą. Problema ta, kad jūs turite būti toli nuo „Tilt“, kad galėtumėte tai padaryti. Taip pat yra „Raspberry Pi“programa, kuri veikia su „Tilt“.
1 žingsnis: gaukite pakreiptus duomenis „Python“
Aš jau naudoju „Raspberry Pi“rūsio temperatūrai stebėti ir debesų valdymo skydelio paslaugą „cloud4rpi.io“. Jei „Tilt“gali kalbėtis su „Raspberry Pi“, turėtų būti įmanoma prie jo prijungti „cloud4rpi“. „Tilt“naudoja belaidį protokolą, todėl jums reikės „Raspberry Pi“su belaidžiu lustu („Rasbperry Pi 3“arba „Zero W“).
Laimei, yra „GitHub“atpirkimo programa „Tilt“su kai kuriais pavyzdžiais. Žvelgdami į https://github.com/baronbrew/tilt-scan galite pamatyti, kad „Tilt“kitiems atrodo kaip „BLE iBeacon“, „UUID“koduota „spalva“, o temperatūra ir gravitacija yra dideli ir maži baitai.
Jų pavyzdinis kodas skirtas „Node.js“, o aš turiu „Python“valdymo programą, pagrįstą „cloud4rpi“šablonu
Taigi turiu gauti „Tilt“duomenis „Python“. Po truputį googlindamas radau https://github.com/switchdoclabs/iBeacon-Scanner-- Python iBeacon skaitytuvą. Tai programa, o ne biblioteka, todėl pakeičiau ją, kad vietoj eilutės būtų pateiktas žodynas. Aš taip pat parašiau „Tilt“modulį, kad gaučiau pirmojo rasto „Tilt“spalvą, temperatūrą ir gravitaciją (turiu tik vieną), ir paprastą bandymo programą, kad patikrintų, ar ji gali matyti mano „Tilt“:
importo laiko importo pakreipimas
nors tiesa:
res = tilt.getFirstTilt () spausdinti res time.sleep (2)
Paleiskite ir patikrinkite, ar jis veikia. Dabar galiu prijungti jį prie savo valdymo programos. Aš jau turiu „python“programą, prijungtą prie „cloud4rpi.io“, bet leiskite man parodyti, kaip tai padaryti nuo nulio.
2 veiksmas: įrenginio prijungimas prie debesies
Pirmiausia prisijunkite prie „cloud4rpi.io“, tada sukurkite naują įrenginį.
Jums bus suteiktas įrenginio žetonas ir diegimo instrukcijos. „Raspberry Pi“vadovaukitės čia pateiktomis instrukcijomis https://docs.cloud4rpi.io/start/rpi/-įsitikinkite, kad jūsų sistema yra atnaujinta:
sudo apt atnaujinimas && sudo apt atnaujinimas
Įdiegti būtinas sąlygas:
sudo apt įdiegti git python python-pip
Įdiekite „cloud4rpi python“paketus:
sudo pip įdiegti cloud4rpi
tada gaukite „Raspberry Pi“skirtos „Python“programos pavyzdį (į valdymo aplanką):
git klonas https://github.com/cloud4rpi/cloud4rpi-raspberryp… valdymas
cd valdymas
modify control.py - eilutėje nurodykite savo įrenginio žetoną
DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'
Pašalinkite nereikalingus įrašus iš įrenginio kintamųjų deklaracijų, palikite tik CPUTemp, kad patikrintumėte įrenginio ryšį:
# Įdėkite čia kintamųjų deklaracijas kintamieji = {'CPU Temp': {'type': 'numeric', 'bind': rpi.cpu_temp}}
Dabar atlikite bandomąjį važiavimą:
sudo python control.py
Jei viskas gerai, jūsų įrenginio puslapis bus nedelsiant atnaujintas su diagnostiniais duomenimis.
3 veiksmas: duomenų siuntimas į debesį
Dabar turime modifikuoti control.py, kad galėtume perskaityti ir pranešti apie „Tilt“spalvą, temperatūrą ir gravitaciją. Rezultatas atrodo taip:
iš os importuoti uname iš lizdo importuoti gethostname importuoti sys importavimo laikas importuoti cloud4rpi importuoti rpi importuoti pakreipimą
# Įdėkite savo įrenginio prieigos raktą čia. Norėdami gauti ženklą, # prisiregistruokite https://cloud4rpi.io ir sukurkite įrenginį. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'
# Pastovus
DATA_SENDING_INTERVAL = 60 # sek. DIAG_SENDING_INTERVAL = 600 # sek. POLL_INTERVAL = 0.5 # 500 ms
švyturys = {}
def F2C (laipsniai F):
grįžimas (F - 32 laipsniai) / 1.8
def getTemp ():
grąžinti F2C (int (švyturys ['Temp']))), jei švyturys kitas Nėra
def getGravity ():
grįžimo švyturys [„Gravitacija“], jei švyturys kitas Nėra
def main ():
# Įdėkite čia kintamas deklaracijas
kintamieji = {'Gravity': {'type': 'numeric', 'bind': getGravity}, 'Beer Temp': {'type': 'numeric', 'bind': getTemp}}
diagnostika = {
'CPU Temp': rpi.cpu_temp, 'IP Address': rpi.ip_address, 'Host': gethostname (), 'Operacinė sistema': "". Prisijungti (uname ())}
device = cloud4rpi.connect (DEVICE_TOKEN)
device.declare (kintamieji) device.declare_diag (diagnostika)
device.publish_config ()
# Prideda 1 sekundės vėlavimą, kad būtų užtikrintas įrenginio kintamųjų sukūrimas
laikas. miegas (1)
bandyti:
data_timer = 0 diag_timer = 0, o tiesa: if data_timer <= 0: global signalo švyturys = tilt.getFirstTilt () device.publish_data () data_timer = DATA_SENDING_INTERVAL
jei diag_timer <= 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL
time.sleep (POLL_INTERVAL)
diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
išskyrus klaviatūrąInterrupt:
cloud4rpi.log.info („Gautas klaviatūros pertraukimas. Sustabdoma …“)
išskyrus išimtis, pvz.:
error = cloud4rpi.get_error_message (e) cloud4rpi.log.error ("KLAIDA! %s %s", klaida, sys.exc_info () [0])
pagaliau:
sys.exit (0)
jei _vardas_ == '_main_':
pagrindinis ()
Dabar paleiskite jį rankiniu būdu, kad pamatytumėte, ar jis veikia:
sudo python control.py
Jei viskas gerai, savo kintamuosius pamatysite internete.
Norėdami paleisti control.py sistemos paleidimo metu, įdiekite ją kaip paslaugą. „Cloud4rpi“tam pateikia diegimo scenarijų service_install.sh. Aš įtraukiau jį į savo repo. Norėdami įdiegti control.py kaip paslaugą, paleiskite
sudo bash service_install.sh control.py
Dabar galite pradėti | sustabdyti | iš naujo paleisti šią paslaugą vykdydami komandą
sudo systemctl paleiskite cloud4rpi.service
Paslauga įjungia ankstesnę būseną, taigi, jei ji veikė, ji veiks po perkrovimo ar maitinimo praradimo.
4 žingsnis: galutinis rezultatas
Tai štai, dabar mano „Tilt“parametrai siunčiami į debesį, kad galėčiau jam sukurti gražų debesies valdymo skydelį. Eikite į https://cloud4rpi.io/control-panels ir sukurkite naują valdymo skydelį, pridėkite valdiklį ir kaip duomenų šaltinį pasirinkite/Gravity and Beer Temp. Dabar galiu stebėti, kas vyksta, net jei esu toli nuo namų.
Kodą, kurį nukopijavau ir parašiau, rasite čia: https://github.com/superroma/tilt-cloud4rpi. Jis toli gražu nėra tobulas, jis veikia tik su vienu „Tilt“, jam nerūpi įrenginio „spalva“, kad ir ką jis reikštų, ir aš nesu „Python“vaikinas, todėl pataisymai, pasiūlymai ar šakutės yra laukiami !