Mục lục:

Cách kiểm soát nhiệt độ và trọng lực lên men bia từ điện thoại thông minh của bạn: 4 bước (có hình ảnh)
Cách kiểm soát nhiệt độ và trọng lực lên men bia từ điện thoại thông minh của bạn: 4 bước (có hình ảnh)

Video: Cách kiểm soát nhiệt độ và trọng lực lên men bia từ điện thoại thông minh của bạn: 4 bước (có hình ảnh)

Video: Cách kiểm soát nhiệt độ và trọng lực lên men bia từ điện thoại thông minh của bạn: 4 bước (có hình ảnh)
Video: Chuyện gì xảy ra trong não khi bạn xem ... 2024, Tháng bảy
Anonim
Cách kiểm soát nhiệt độ và trọng lực lên men bia từ điện thoại thông minh của bạn
Cách kiểm soát nhiệt độ và trọng lực lên men bia từ điện thoại thông minh của bạn

Khi bia đang lên men, bạn nên theo dõi trọng lực và nhiệt độ của nó hàng ngày. Thật dễ dàng để quên làm như vậy, và không thể nếu bạn đi vắng.

Sau một số googling, tôi đã tìm thấy một số giải pháp để theo dõi trọng lực tự động (một, hai, ba). Một trong số chúng, với khái niệm rất thông minh, được gọi là Tilt. Tilt đang nổi trong bia của bạn và đang đo góc nghiêng của chính nó. Góc này phụ thuộc vào tỷ trọng của chất lỏng và do đó có thể đo trọng lực của bia lên men.

Tilt đi kèm với một ứng dụng di động, kết nối với nó và có thể đăng dữ liệu lên bất kỳ dịch vụ web nào. Vấn đề là bạn cần cách Tilt không xa để có thể làm được như vậy. Ngoài ra còn có một chương trình Raspberry Pi hoạt động với Tilt.

Bước 1: Lấy dữ liệu nghiêng bằng Python

Lấy dữ liệu nghiêng bằng Python
Lấy dữ liệu nghiêng bằng Python

Tôi đã sử dụng Raspberry Pi để theo dõi nhiệt độ hầm rượu và dịch vụ bảng điều khiển đám mây cloud4rpi.io. Nếu Tilt có thể nói chuyện với Raspberry Pi, thì có thể kết nối cloud4rpi với nó. Tilt đang sử dụng giao thức không dây, vì vậy bạn sẽ cần Raspberry Pi có chip không dây (Rasbperry Pi 3 hoặc Zero W).

May mắn thay, có một repo GitHub cho phần mềm Tilt với một số mẫu. Nhìn vào https://github.com/baronbrew/tilt-scan, bạn có thể thấy rằng Tilt đối với những người khác là BLE iBeacon, với “Màu sắc” được mã hóa bằng UUID, nhiệt độ và trọng lực ở các byte chính và phụ.

Mã mẫu của họ dành cho Node.js và tôi có một chương trình điều khiển Python dựa trên mẫu cloud4rpi

Vì vậy, tôi cần lấy dữ liệu Tilt bằng Python. Sau một số googling, tôi đã tìm thấy https://github.com/switchdoclabs/iBeacon-Scanner- - Trình quét iBeacon Python. Đây là một chương trình, không phải là một thư viện, vì vậy tôi đã sửa đổi nó để trả về một từ điển thay vì chuỗi. Và tôi cũng đã viết mô-đun cụ thể Tilt để lấy màu sắc, nhiệt độ và trọng lực của Tilt đầu tiên được tìm thấy (tôi chỉ có một) và một chương trình thử nghiệm đơn giản để kiểm tra xem nó có thể nhìn thấy Tilt của tôi hay không:

nhập độ nghiêng thời gian nhập khẩu

trong khi Đúng:

res = tilt.getFirstTilt () in res time.sleep (2)

Chạy và kiểm tra xem nó hoạt động. Bây giờ tôi có thể cắm nó vào chương trình điều khiển của mình. Tôi đã có một chương trình python được kết nối với cloud4rpi.io, nhưng hãy để tôi hướng dẫn cách làm điều đó từ đầu.

Bước 2: Kết nối thiết bị với đám mây

Kết nối thiết bị với đám mây
Kết nối thiết bị với đám mây
Kết nối thiết bị với đám mây
Kết nối thiết bị với đám mây

Trước tiên, hãy đăng nhập vào cloud4rpi.io, sau đó tạo một thiết bị mới.

Bạn sẽ được cấp mã thông báo thiết bị và hướng dẫn cài đặt. Đối với Raspberry Pi, hãy làm theo hướng dẫn tại đây https://docs.cloud4rpi.io/start/rpi/ - đảm bảo hệ thống của bạn được cập nhật:

cập nhật sudo apt & nâng cấp sudo apt

Cài đặt điều kiện tiên quyết:

sudo apt install git python python-pip

Cài đặt gói python cloud4rpi:

sudo pip cài đặt cloud4rpi

sau đó tải ứng dụng python mẫu cho Raspberry Pi (vào thư mục điều khiển):

git clone https://github.com/cloud4rpi/cloud4rpi-raspberryp… control

kiểm soát cd

sửa đổi control.py - chỉ định mã thông báo thiết bị của bạn trong dòng

DEVICE_TOKEN = ‘_YOUR_DEVICE_TOKEN_’

Loại bỏ các mục nhập không cần thiết khỏi khai báo biến thiết bị, chỉ để lại CPUTemp để kiểm tra kết nối thiết bị:

# Đặt khai báo biến ở đây biến = {'CPU Temp': {'type': 'numeric', 'bind': rpi.cpu_temp}}

Bây giờ hãy chạy thử nghiệm:

sudo python control.py

Nếu mọi thứ đều ổn, trang thiết bị của bạn sẽ được cập nhật ngay lập tức với dữ liệu chẩn đoán.

Bước 3: Gửi dữ liệu lên đám mây

Gửi dữ liệu lên đám mây
Gửi dữ liệu lên đám mây

Bây giờ chúng ta cần sửa đổi control.py để đọc và báo cáo màu sắc, nhiệt độ và trọng lực của Tilt. Kết quả trông như thế này:

from os import unamefrom socket import gethostname import sys import time import cloud4rpi import rpi import nghiêng

# Đặt mã thông báo thiết bị của bạn ở đây. Để lấy mã thông báo, # đăng ký tại https://cloud4rpi.io và tạo một thiết bị. DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'

# Hằng số

DATA_SENDING_INTERVAL = 60 # giây DIAG_SENDING_INTERVAL = 600 # giây POLL_INTERVAL = 0,5 # 500 mili giây

beacon = {}

def F2C (độF):

trở lại (độF - 32) / 1.8

def getTemp ():

return F2C (int (beacon ['Temp'])) nếu beacon khác Không có

def getGravity ():

trả về beacon ['Gravity'] nếu beacon khác Không có

def main ():

# Đặt các khai báo biến ở đây

biến = {'Gravity': {'type': 'numeric', 'bind': getGravity}, 'Beer Temp': {'type': 'numeric', 'bind': getTemp}}

chẩn đoán = {

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

device = cloud4rpi.connect (DEVICE_TOKEN)

device.declare (biến) device.declare_diag (chẩn đoán)

device.publish_config ()

# Thêm độ trễ 1 giây để đảm bảo các biến thiết bị được tạo

time.sleep (1)

cố gắng:

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

nếu Diag_timer <= 0: device.publish_diag () Diag_timer = DIAG_SENDING_INTERVAL

time.sleep (POLL_INTERVAL)

Diag_timer - = POLL_INTERVAL data_timer - = POLL_INTERVAL

ngoại trừ KeyboardInterrupt:

cloud4rpi.log.info ('Đã nhận được ngắt bàn phím. Đang dừng…')

ngoại trừ Exception as e:

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

cuối cùng:

sys.exit (0)

nếu _name_ == '_main_':

chủ chốt()

Bây giờ hãy chạy nó theo cách thủ công để xem nó có hoạt động không:

sudo python control.py

Nếu mọi thứ đều tốt, bạn sẽ thấy các biến của mình trực tuyến.

Để chạy control.py khi khởi động hệ thống, hãy cài đặt nó như một dịch vụ. Cloud4rpi cung cấp một script cài đặt service_install.sh để làm như vậy. Tôi đã đưa nó vào repo của mình. Để cài đặt control.py làm dịch vụ, hãy chạy

sudo bash service_install.sh control.py

Bây giờ bạn có thể bắt đầu | dừng | khởi động lại dịch vụ này bằng cách chạy lệnh

sudo systemctl start cloud4rpi.service

Dịch vụ giữ trạng thái trước đó của nó là bật nguồn, vì vậy nếu nó đang chạy, nó sẽ chạy sau khi khởi động lại hoặc mất điện.

Bước 4: Kết quả cuối cùng

Kết quả cuối cùng
Kết quả cuối cùng

Đây là nó, bây giờ tôi có thông số Tilt của tôi được gửi đến đám mây, vì vậy tôi có thể thiết lập một bảng điều khiển đám mây đẹp cho nó. Truy cập https://cloud4rpi.io/control-panels và tạo bảng điều khiển mới, thêm tiện ích và chọn / Gravity and Beer Temp làm nguồn dữ liệu. Giờ đây, tôi có thể theo dõi những gì đang diễn ra ngay cả khi tôi vắng nhà.

Mã tôi đã sao chép và viết có sẵn tại đây: https://github.com/superroma/tilt-cloud4rpi. Nó còn lâu mới hoàn hảo, nó chỉ hoạt động với một Tilt duy nhất, nó không quan tâm đến “Màu sắc” của thiết bị, cho dù nó có nghĩa là gì, và tôi không phải là một người chơi Python, vì vậy các bản sửa lỗi, đề xuất hoặc fork đều được hoan nghênh !

Đề xuất: