Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Kur birra po fermentohet, ju duhet të monitoroni gravitetin dhe temperaturën e saj çdo ditë. Easyshtë e lehtë të harrosh ta bësh këtë, dhe e pamundur nëse je larg.
Pas një kërkimi në googling, gjeta disa zgjidhje për monitorimin e automatizuar të gravitetit (një, dy, tre). Njëri prej tyre, me koncept shumë të zgjuar, i quajtur Tilt. Tilt po noton në birrën tuaj dhe po mat këndin e vet të pjerrësisë. Ky kënd varet nga dendësia e lëngut, dhe për këtë arsye mund të masë gravitetin e birrës që fermenton.
Tilt vjen me një aplikacion celular, që lidhet me të dhe mund të postojë të dhëna në çdo shërbim në internet. Problemi është se ju duhet të jeni jo shumë larg nga Tilt për të qenë në gjendje ta bëni këtë. Ekziston edhe një program Raspberry Pi që punon me Tilt.
Hapi 1: Marrja e të dhënave të pjerrëta në Python
Unë tashmë jam duke përdorur Raspberry Pi për të monitoruar temperaturën e bodrumit dhe një shërbim të panelit të kontrollit cloud cloud4rpi.io. Nëse Tilt mund të flasë me Raspberry Pi, duhet të jetë e mundur të lidhni cloud4rpi me të. Tilt po përdor një protokoll pa tel, kështu që do t'ju duhet Raspberry Pi me një çip pa tel (Rasbperry Pi 3 ose Zero W).
Për fat të mirë, ekziston një repo GitHub për programin Tilt me disa mostra. Duke parë https://github.com/baronbrew/tilt-scan mund të shihni që Tilt u duket të tjerëve si BLE iBeacon, me "Color" të koduar në UUID, dhe temperatura dhe graviteti janë në byte të mëdha dhe të vogla.
Kodi i tyre i mostrës është për Node.js, dhe unë kam një program kontrolli Python të bazuar në modelin cloud4rpi
Kështu që më duhet të marr të dhëna Tilt në Python. Pas disa kërkimeve në Google, gjeta https://github.com/switchdoclabs/iBeacon-Scanner-- skaner Python iBeacon. Ky është një program, jo një bibliotekë, kështu që e modifikova për të kthyer një fjalor në vend të vargut. Dhe unë gjithashtu shkrova modul specifik për Tilt për të marrë ngjyrën, temperaturën dhe gravitetin e Tilt-it të parë të gjetur (kam vetëm një), dhe një program të thjeshtë testimi për të kontrolluar nëse mund të shohë Pjerrësinë time:
importim prirje kohore importuese
ndërsa e vërtetë:
res = tilt.getFirstTilt () printo res res.sleep (2)
Drejtoni dhe kontrolloni që funksionon. Tani mund ta lidh me programin tim të kontrollit. Unë tashmë kam një program python të lidhur me cloud4rpi.io, por më lejoni të tregoj se si ta bëj këtë nga e para.
Hapi 2: Lidhja e pajisjes me renë
Së pari, regjistrohuni në cloud4rpi.io, pastaj krijoni një pajisje të re.
Do t'ju jepet një shenjë e pajisjes dhe udhëzimet e instalimit. Për Raspberry Pi ndiqni udhëzimet këtu https://docs.cloud4rpi.io/start/rpi/-sigurohuni që sistemi juaj të jetë i përditësuar:
sudo apt update && sudo apt upgrade
Instaloni parakushtet:
sudo apt instaloni git python python-pip
Instaloni paketat cloud4rpi python:
sudo pip instaloni cloud4rpi
pastaj merrni një aplikacion mostër python për Raspberry Pi (në dosjen e kontrollit):
git clone https://github.com/cloud4rpi/cloud4rpi-raspberryp… kontroll
cd kontroll
modifikoni control.py - specifikoni shenjën e pajisjes tuaj në linjë
DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'
Hiqni shënimet e panevojshme nga deklaratat e ndryshueshme të pajisjes, lini vetëm CPUTemp për të testuar lidhjen e pajisjes:
# Vendosni deklaratat e ndryshoreve këtu variablat = {'Temp CPU': {'type': 'numeric', 'bind': rpi.cpu_temp}}
Tani bëni një provë:
sudo python control.py
Nëse gjithçka është në rregull, faqja e pajisjes tuaj do të azhurnohet menjëherë me të dhëna diagnostikuese.
Hapi 3: Dërgimi i të dhënave në re
Tani duhet të modifikojmë control.py për të lexuar dhe raportuar ngjyrën, temperaturën dhe gravitetin e Tilt. Rezultati duket kështu:
nga os import unamefrom socket import gethostname import sys import import kohë import cloud4rpi import rpi import tilt
# Vendosni shenjën e pajisjes tuaj këtu. Për të marrë shenjën, # regjistrohuni në https://cloud4rpi.io dhe krijoni një pajisje. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'
# Konstantet
DATA_SENDING_INTERVAL = 60 # sekonda DIAG_SENDING_INTERVAL = 600 # sekonda POLL_INTERVAL = 0.5 # 500 ms
fener = {}
def F2C (gradë F):
kthimi (gradëF - 32) / 1.8
def getTemp ():
ktheje F2C (int (fener ['Temp']))) nëse fener tjetër Asnjë
def getGravity ():
fener kthimi ['Graviteti'] nëse fener tjetër Asnjë
def kryesore ():
# Vendosni deklarata të ndryshueshme këtu
variablat = {'Graviteti': {'type': 'numerike', 'bind': getGravity}, 'Birra Temp': {'type': 'numerike', 'bind': getTemp}}
diagnostifikim = {
'Temp CPU': rpi.cpu_temp, 'Adresa IP': rpi.ip_address, 'Host': gethostname (), 'Operating System': "". Bashkohuni (uname ())}
pajisje = cloud4rpi.connect (DEVICE_TOKEN)
pajisje.deklaro (variablat) pajisje.declare_diag (diagnostifikim)
device.publish_config ()
# Shton një vonesë 1 sekondë për të siguruar krijimin e variablave të pajisjes
koha. gjumi (1)
provo:
data_timer = 0 diag_timer = 0 ndërsa True: nëse data_timer <= 0: global beacon beacon = tilt.getFirstTilt () device.publish_data () data_timer = DATA_SENDING_INTERVAL
nëse diag_timer <= 0: device.publish_diag () diag_timer = DIAG_SENDING_INTERVAL
koha. gjumi (POLL_INTERVAL)
diag_timer -= POLL_INTERVAL kohëzgjatja e të dhënave -= POLL_INTERVAL
përveç KeyboardIntruptrupt:
cloud4rpi.log.info ('Ndërprerja e tastierës u mor. Po ndalet …')
përveç Përjashtimit si e:
gabim = cloud4rpi.get_error_message (e) cloud4rpi.log.error ("ERROR! %s %s", gabim, sys.exc_info () [0])
me ne fund:
sys.exit (0)
nëse _name_ == '_majt_':
kryesore ()
Tani drejtojeni manualisht për të parë nëse funksionon:
sudo python control.py
Nëse gjithçka është mirë, do t'i shihni variablat tuaja në internet.
Për të ekzekutuar control.py në fillimin e sistemit, instalojeni atë si shërbim. Cloud4rpi siguron një script script install_install.sh për ta bërë këtë. E kam përfshirë në repon time. Për të instaluar control.py si shërbim, ekzekutoni
sudo bash service_install.sh control.py
Tani mund të filloni | ndaloni | rinisni këtë shërbim duke ekzekutuar komandën
sudo systemctl start cloud4rpi.service
Shërbimi mban gjendjen e tij të mëparshme të ndezur, kështu që nëse ishte duke funksionuar, do të funksionojë pas rindezjes ose humbjes së energjisë.
Hapi 4: Rezultati Përfundimtar
Kjo është ajo, tani kam parametrat e mi të Tilt që dërgohen në re, kështu që unë mund të krijoj një panel të mirë kontrolli cloud për të. Shkoni te https://cloud4rpi.io/control-panels dhe krijoni panel të ri kontrolli, shtoni widget dhe zgjidhni/Gravity and Beer Temp si burim të dhënash. Tani mund të monitoroj se çfarë po ndodh edhe nëse jam larg shtëpisë.
Kodi që kam kopjuar dhe shkruar është i disponueshëm këtu: https://github.com/superroma/tilt-cloud4rpi. Farshtë larg nga e përsosura, funksionon vetëm me një Tilt të vetëm, nuk i intereson "Ngjyra" e pajisjes, çfarëdo që të thotë, dhe unë nuk jam aspak një djalë Python, kështu që rregullimet, sugjerimet ose pirunët janë të mirëseardhura !