สารบัญ:
- ขั้นตอนที่ 1: รับ Tilt Data ใน Python
- ขั้นตอนที่ 2: การเชื่อมต่ออุปกรณ์กับ Cloud
- ขั้นตอนที่ 3: การส่งข้อมูลไปยัง Cloud
- ขั้นตอนที่ 4: ผลลัพธ์สุดท้าย
วีดีโอ: วิธีควบคุมอุณหภูมิและแรงโน้มถ่วงในการหมักเบียร์จากสมาร์ทโฟนของคุณ: 4 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
เมื่อเบียร์กำลังหมัก คุณควรตรวจสอบแรงโน้มถ่วงและอุณหภูมิของเบียร์ทุกวัน มันง่ายที่จะลืมที่จะทำ และเป็นไปไม่ได้ถ้าคุณไม่อยู่
หลังจากค้นกูเกิลแล้ว ฉันพบวิธีแก้ปัญหาหลายอย่างสำหรับการตรวจสอบแรงโน้มถ่วงแบบอัตโนมัติ (หนึ่ง สอง สาม) หนึ่งในนั้นมีแนวคิดที่ฉลาดมาก เรียกว่า Tilt Tilt กำลังลอยอยู่ในเบียร์ของคุณและกำลังวัดมุมเอียงของตัวเอง มุมนี้ขึ้นอยู่กับความหนาแน่นของของเหลว จึงสามารถวัดแรงโน้มถ่วงของเบียร์หมักได้
Tilt มาพร้อมกับแอพมือถือที่เชื่อมต่อและสามารถโพสต์ข้อมูลไปยังบริการเว็บใดก็ได้ ปัญหาคือคุณต้องอยู่ไม่ไกลจาก Tilt จึงจะสามารถทำได้ นอกจากนี้ยังมีโปรแกรม Raspberry Pi ที่ทำงานร่วมกับ Tilt
ขั้นตอนที่ 1: รับ Tilt Data ใน Python
ฉันใช้ Raspberry Pi เพื่อตรวจสอบอุณหภูมิห้องใต้ดิน และบริการแผงควบคุมบนคลาวด์ cloud4rpi.io อยู่แล้ว หาก Tilt สามารถพูดคุยกับ Raspberry Pi ได้ ก็ควรจะเชื่อมต่อ cloud4rpi กับมันได้ Tilt ใช้โปรโตคอลไร้สาย ดังนั้นคุณจะต้องใช้ Raspberry Pi กับชิปไร้สาย (Rasbperry Pi 3 หรือ Zero W)
โชคดีที่มี GitHub repo สำหรับซอฟต์แวร์ Tilt พร้อมตัวอย่างบางส่วน ดูที่ https://github.com/baronbrew/tilt-scan คุณจะเห็นว่า Tilt มองผู้อื่นเป็น BLE iBeacon โดยมีรหัส "สี" ใน UUID และอุณหภูมิและแรงโน้มถ่วงเป็นไบต์หลักและไบต์รอง
โค้ดตัวอย่างของพวกเขามีไว้สำหรับ Node.js และฉันมีโปรแกรมควบคุม Python ที่ใช้เทมเพลต cloud4rpi
ดังนั้นฉันต้องรับข้อมูล Tilt ใน Python หลังจาก googling ฉันพบ https://github.com/switchdoclabs/iBeacon-Scanner- - เครื่องสแกน Python iBeacon นี่เป็นโปรแกรม ไม่ใช่ไลบรารี ดังนั้นฉันจึงแก้ไขให้กลับเป็นพจนานุกรมแทนสตริง และฉันยังเขียนโมดูลเฉพาะของ Tilt เพื่อรับสี อุณหภูมิ และแรงโน้มถ่วงของ Tilt แรกที่พบ (ฉันมีเพียงอันเดียว) และโปรแกรมทดสอบอย่างง่ายเพื่อตรวจสอบว่าเห็น Tilt ของฉันหรือไม่:
นำเข้าเวลานำเข้าเอียง
ในขณะที่จริง:
res =til.getFirstTilt() พิมพ์ res time.sleep(2)
เรียกใช้และตรวจสอบว่าใช้งานได้ ตอนนี้ฉันสามารถเสียบเข้ากับโปรแกรมควบคุมของฉันได้แล้ว ฉันมีโปรแกรม python ที่เชื่อมต่อกับ cloud4rpi.io แล้ว แต่ให้ฉันแสดงวิธีการดำเนินการตั้งแต่ต้น
ขั้นตอนที่ 2: การเชื่อมต่ออุปกรณ์กับ Cloud
ขั้นแรก ลงชื่อเข้าใช้ cloud4rpi.io จากนั้นสร้างอุปกรณ์ใหม่
คุณจะได้รับโทเค็นอุปกรณ์และคำแนะนำในการติดตั้ง สำหรับ Raspberry Pi ให้ทำตามคำแนะนำที่นี่ https://docs.cloud4rpi.io/start/rpi/ - ตรวจสอบให้แน่ใจว่าระบบของคุณเป็นปัจจุบัน:
sudo apt update && sudo apt upgrade
ติดตั้งข้อกำหนดเบื้องต้น:
sudo apt ติดตั้ง git python python-pip
ติดตั้งแพ็คเกจหลาม cloud4rpi:
sudo pip ติดตั้ง cloud4rpi
จากนั้นรับแอพ python ตัวอย่างสำหรับ Raspberry Pi (ในโฟลเดอร์ควบคุม):
git clone https://github.com/cloud4rpi/cloud4rpi-raspberryp… ควบคุม
ซีดี คอนโทรล
แก้ไข control.py - ระบุโทเค็นอุปกรณ์ของคุณในบรรทัด
DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'
ลบรายการที่ไม่จำเป็นออกจากการประกาศตัวแปรอุปกรณ์ ปล่อยให้ CPUTemp เท่านั้นเพื่อทดสอบการเชื่อมต่ออุปกรณ์:
# ใส่การประกาศตัวแปรตัวแปร = { 'CPU Temp': { 'type': 'numeric', 'bind': rpi.cpu_temp } }
ตอนนี้ทำการทดสอบ:
sudo python control.py
หากทุกอย่างเรียบร้อย หน้าอุปกรณ์ของคุณจะได้รับการอัปเดตพร้อมข้อมูลการวินิจฉัยทันที
ขั้นตอนที่ 3: การส่งข้อมูลไปยัง Cloud
ตอนนี้ เราต้องแก้ไข control.py เพื่ออ่านและรายงานสี อุณหภูมิ และแรงโน้มถ่วงของ Tilt ผลลัพธ์มีลักษณะดังนี้:
จาก os นำเข้า unamefrom นำเข้าซ็อกเก็ต gethostname นำเข้า sys เวลานำเข้า นำเข้า cloud4rpi นำเข้า rpi นำเข้าเอียง
# ใส่โทเค็นอุปกรณ์ของคุณที่นี่ เพื่อรับโทเค็น
# สมัครได้ที่ https://cloud4rpi.io แล้วสร้างอุปกรณ์ DEVICE_TOKEN = '_YOUR_DEVICE_TOKEN_'
# ค่าคงที่
DATA_SENDING_INTERVAL = 60 # วินาที DIAG_SENDING_INTERVAL = 600 # วินาที POLL_INTERVAL = 0.5 # 500 มิลลิวินาที
บีคอน = {}
def F2C (องศา F):
ผลตอบแทน (degreesF - 32) / 1.8
def getTemp():
คืนค่า F2C(int(beacon['Temp'])) ถ้าสัญญาณอื่น None
def getGravity():
return beacon['Gravity'] ถ้าสัญญาณอื่น None
def หลัก ():
# ใส่การประกาศตัวแปรที่นี่
ตัวแปร = { 'แรงโน้มถ่วง': { 'ประเภท': 'ตัวเลข', 'ผูก': getGravity }, 'อุณหภูมิเบียร์': { 'ประเภท': 'ตัวเลข', 'ผูก': getTemp } }
การวินิจฉัย = {
'CPU Temp': rpi.cpu_temp, 'IP Address': rpi.ip_address, 'Host': gethostname(), 'Operating System': " ".join(uname()) }
อุปกรณ์ = cloud4rpi.connect(DEVICE_TOKEN)
device.declare(ตัวแปร) device.declare_diag(การวินิจฉัย)
อุปกรณ์.publish_config()
# เพิ่มการหน่วงเวลา 1 วินาทีเพื่อให้แน่ใจว่าสร้างตัวแปรอุปกรณ์
เวลานอน(1)
ลอง:
data_timer = 0 diag_timer = 0 ในขณะที่ True: ถ้า data_timer <= 0: global beacon beacon =til.getFirstTilt() device.publish_data() data_timer = DATA_SENDING_INTERVAL
ถ้า diag_timer <= 0: device.publish_diag() diag_timer = DIAG_SENDING_INTERVAL
time.sleep(POLL_INTERVAL)
diag_timer -= POLL_INTERVAL data_timer -= POLL_INTERVAL
ยกเว้น KeyboardInterrupt:
cloud4rpi.log.info('ได้รับคีย์บอร์ดขัดจังหวะ กำลังหยุด…')
ยกเว้นข้อยกเว้นเป็น e:
error = cloud4rpi.get_error_message(e) cloud4rpi.log.error("ERROR! %s %s", ข้อผิดพลาด, sys.exc_info()[0])
ในที่สุด:
sys.exit(0)
ถ้า _name_ == '_main_':
หลัก()
ตอนนี้รันด้วยตนเองเพื่อดูว่าใช้งานได้หรือไม่:
sudo python control.py
หากทุกอย่างดี คุณจะเห็นตัวแปรของคุณทางออนไลน์
หากต้องการเรียกใช้ control.py เมื่อเริ่มต้นระบบ ให้ติดตั้งเป็นบริการ Cloud4rpi จัดเตรียมสคริปต์การติดตั้ง service_install.sh เพื่อดำเนินการดังกล่าว ฉันได้รวมไว้ใน repo ของฉันแล้ว ในการติดตั้ง control.py เป็นบริการ ให้เรียกใช้
sudo bash service_install.sh control.py
ตอนนี้คุณสามารถเริ่ม|หยุด|เริ่มบริการนี้ใหม่โดยเรียกใช้คำสั่ง
sudo systemctl start cloud4rpi.service
บริการจะคงสถานะเดิมไว้เมื่อเปิดเครื่อง ดังนั้นหากทำงานอยู่ บริการจะทำงานหลังจากการรีบูตหรือไฟฟ้าดับ
ขั้นตอนที่ 4: ผลลัพธ์สุดท้าย
เท่านี้เอง ตอนนี้ฉันได้ส่งพารามิเตอร์ Tilt ไปยังคลาวด์แล้ว ดังนั้นฉันจึงสามารถตั้งค่าแผงควบคุมระบบคลาวด์ที่ดีได้ ไปที่ https://cloud4rpi.io/control-panels และสร้างแผงควบคุมใหม่ เพิ่มวิดเจ็ต แล้วเลือก /Gravity และ Beer Temp เป็นแหล่งข้อมูล ตอนนี้ฉันสามารถตรวจสอบสิ่งที่เกิดขึ้นได้แม้ว่าฉันจะไม่อยู่บ้าน
รหัสที่ฉันคัดลอกและเขียนมีให้ที่นี่: https://github.com/superroma/tilt-cloud4rpi มันยังห่างไกลจากความสมบูรณ์แบบ มันใช้งานได้กับ Tilt เดียวเท่านั้น ไม่สนใจ "สี" ของอุปกรณ์ ไม่ว่ามันจะหมายถึงอะไร และฉันไม่ใช่ Python เลย เลยยินดีรับการแก้ไข ข้อเสนอแนะ หรือส้อม !
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-