- Monty Home Device Hacking Guide อธิบายวิธีขยายอุปกรณ์ Monty Home BLE ซึ่งเดิมใช้สำหรับ มอนิเตอร์ปุ๋ยหมัก ด้วย Raspberry Pi เพื่อดึง แสดงผล และทำอัตโนมัติข้อมูลสภาพแวดล้อม เช่น อุณหภูมิ ความชื้น แบตเตอรี่
- รีโพซิทอรีมี 3 โปรเจกต์ที่ใช้ Python, BLE และ Raspberry Pi ครอบคลุมการควบคุม LED ตามค่าเกณฑ์อุณหภูมิ การแสดงผลบน I2C OLED และการส่งการแจ้งเตือนผ่าน IFTTT
- คำสั่ง BLE มีคำสั่งสำหรับอุณหภูมิ
;QT\r\n, ความชื้น ;QH\r\n, แบตเตอรี่ ;QL\r\n, CO2 ;QC\r\n, TVOC ;QO\r\n, เวอร์ชันเฟิร์มแวร์ ;QV\r\n, รีบูต ;CR\r\n, รีเซ็ตเป็นค่าโรงงาน ;CF\r\n เป็นต้น
- สภาพแวดล้อมการรันต้องมี Raspberry Pi ที่รองรับ BLE, Monty Home BLE Device, Python 3, Bleak, Requests, Adafruit CircuitPython SSD1306, Pillow เป็นต้น
- ผู้ใช้สามารถขยายไปสู่การประมวลผลข้อมูลเซ็นเซอร์อื่น การเชื่อมกับแดชบอร์ด การล็อก และระบบอัตโนมัติเพิ่มเติมได้ โดยเปลี่ยนคำสั่ง BLE ในสคริปต์หรือขยายเงื่อนไขใน
notification_handler
คู่มือขยายอุปกรณ์ Monty Home BLE
- Monty Home Device Hacking Guide เป็นคู่มือทีละขั้นตอนสำหรับขยายความสามารถของอุปกรณ์ Monty Home BLE ด้วย Raspberry Pi
- อุปกรณ์ Monty Home เดิมถูกออกแบบมาสำหรับมอนิเตอร์ปุ๋ยหมัก และเก็บข้อมูลอุณหภูมิ ความชื้น รวมถึงตัวชี้วัดสภาพแวดล้อมอื่น ๆ
- คู่มือนี้มุ่งเป้าไปที่ผู้ใช้ที่สนใจอุปกรณ์ BLE, แอปพลิเคชัน IoT และการมอนิเตอร์สภาพแวดล้อม
- แนะนำให้ซื้อ Monty Home ได้ที่ https://montycompost.co/
3 โปรเจกต์ที่รวมมา
-
ควบคุม LED ตามอุณหภูมิ
- ใช้ ข้อมูลอุณหภูมิ จากอุปกรณ์ Monty Home เพื่อควบคุม LED บน Raspberry Pi
- เมื่ออุณหภูมิเกินค่าเกณฑ์ที่กำหนด LED จะติดเพื่อแสดงการเตือน
- เทคโนโลยีที่ครอบคลุมคือการควบคุม GPIO LED, การดึงข้อมูล BLE และการประมวลผลเงื่อนไขด้วย Python
- ฮาร์ดแวร์ที่ต้องใช้คือ Raspberry Pi ที่รองรับ BLE, LED และตัวต้านทาน 330Ω
-
แสดงอุณหภูมิและความชื้นบน I2C OLED
- แสดง อุณหภูมิและความชื้นแบบเรียลไทม์ ที่ดึงจากอุปกรณ์ Monty Home บนหน้าจอ OLED ที่เชื่อมต่อกับ Raspberry Pi
- แสดงข้อมูลไดนามิกด้วยจอ SSD1306 OLED และทำการค้นคืนข้อมูล BLE พร้อมอัปเดตหน้าจอ
- ฮาร์ดแวร์ที่ต้องใช้คือ Raspberry Pi ที่รองรับ BLE และ SSD1306 OLED Display โดยสามารถเป็นคอนฟิก 128x32 หรือ 128x64 ได้
-
แจ้งเตือนอุณหภูมิผ่าน IFTTT
- เมื่ออุณหภูมิของอุปกรณ์ Monty Home เกินค่าเกณฑ์ที่กำหนด Raspberry Pi จะส่งการแจ้งเตือนผ่าน IFTTT
- ครอบคลุมการเชื่อมต่อ IFTTT สำหรับระบบอัตโนมัติ IoT, คำขอ HTTP ด้วยไลบรารี
requests และการผสานข้อมูล BLE กับการแจ้งเตือนบนคลาวด์
- ฮาร์ดแวร์และบัญชีที่ต้องใช้คือ Raspberry Pi ที่มี Wi-Fi และบัญชี IFTTT
สภาพแวดล้อมการรันและ dependency
- ฮาร์ดแวร์ต้องมี Raspberry Pi Zero 2 หรือ Raspberry Pi รุ่นอื่นที่รองรับ BLE และ Monty Home BLE Device
- อาจต้องมีส่วนประกอบเพิ่มเติมตามแต่ละโปรเจกต์ เช่น LED, จอ OLED, บัญชี IFTTT
- ระบบปฏิบัติการสามารถใช้ Raspberry Pi OS Lite หรือ Raspberry Pi OS with Desktop ได้
- ต้องติดตั้ง Python 3 และ
pip
- ไลบรารี Python ที่ใช้มีดังนี้
- Bleak: สำหรับการสื่อสาร BLE,
pip install bleak
- Requests: สำหรับเชื่อมต่อ IFTTT,
pip install requests
- Adafruit CircuitPython SSD1306: สำหรับควบคุม OLED,
pip install adafruit-circuitpython-ssd1306
- Pillow: สำหรับประมวลผลภาพ OLED,
pip install pillow
คำสั่ง BLE ของ Monty Home
- คำสั่ง BLE สามารถสลับหรือแก้ไขในสคริปต์ Python เพื่อขอข้อมูลอื่นหรือสั่งให้ทำงานอื่นได้
| คำสั่ง |
ฟังก์ชัน |
;QA\r\n |
คืนค่าอินเด็กซ์ของข้อมูลทั้งหมดในหน่วยความจำแฟลช |
;QP\r\n |
คืนค่าอินเด็กซ์ของข้อมูลที่รออยู่ในหน่วยความจำแฟลช |
;QR\r\n |
คืนค่าเรคคอร์ดตามอินเด็กซ์ หากไม่มีอินเด็กซ์จะคืนค่า NACK |
;QS\r\n |
คืนค่าสถานะอุปกรณ์ |
;QL\r\n |
คืนค่าระดับแบตเตอรี่เป็นเปอร์เซ็นต์ |
;QT\r\n |
คืนค่าการวัดอุณหภูมิจากเซ็นเซอร์ NTC |
;QH\r\n |
คืนค่าการวัดความชื้นสัมพัทธ์ |
;QO\r\n |
คืนค่าการวัด TVOC ล่าสุด |
;QC\r\n |
คืนค่าการวัด CO2 ล่าสุด |
;QU\r\n |
คืนค่า ID เฉพาะของอุปกรณ์ |
;QV\r\n |
คืนค่าเวอร์ชันเฟิร์มแวร์ของอุปกรณ์ |
;CR\r\n |
รีบูตอุปกรณ์ |
;CF\r\n |
ทำการรีเซ็ตเป็นค่าโรงงาน |
วิธีรันโค้ด
- แต่ละโปรเจกต์มี สคริปต์ Python สำหรับตั้งค่าการเชื่อมต่อ BLE ส่งคิวรี และประมวลผลข้อมูล
- ลำดับการรันคือไปยังโฟลเดอร์โปรเจกต์ในเทอร์มินัลของ Raspberry Pi แล้วรันสคริปต์
cd /path/to/project
python3 project_script.py
- ต้องเปลี่ยน
project_script.py เป็นชื่อไฟล์จริง โดยตัวอย่างคือ project1_temperature_led.py
จุดที่ปรับแต่งได้
- หากเปลี่ยนคำสั่ง BLE จะสามารถดึงข้อมูลประเภทอื่นได้
- ตัวอย่างเช่น หากต้องการดึงความชื้นแทนอุณหภูมิ ให้เปลี่ยนคำสั่งดังนี้
command = ";QT\r\n"
command = ";QH\r\n"
- หากเพิ่มเงื่อนไขในฟังก์ชัน
notification_handler จะสามารถถอดรหัสและแสดงข้อมูลหลายประเภท เช่น อุณหภูมิและความชื้นได้
- ข้อมูลสามารถเชื่อมต่อกับแพลตฟอร์ม IoT หรือแดชบอร์ด เพื่อใช้กับ การแสดงภาพแบบเรียลไทม์, การล็อก และระบบอัตโนมัติเพิ่มเติม
แหล่งอ้างอิง
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
มีไอเดียผุดขึ้นมา ผมมี กองปุ๋ยหมักขนาดใหญ่ ที่ได้จากการทำความสะอาดคอกม้า ส่วนใหญ่เป็นเศษไม้ที่ชุ่มปัสสาวะกับมูลม้าที่แทบย่อยสลายหมดแล้ว และมีดินปนอยู่เล็กน้อย
หน้าร้อนนี้ลองปลูกมันฝรั่งกับแครอตดู มันฝรั่งออกมาดีมาก ส่วนแครอตไม่ค่อยดี แต่คิดว่าเป็นเพราะรดน้ำไม่ดีเอง
ดูเหมือนมันยังไม่ได้ย่อยสลายสมบูรณ์ ถ้าวัดอุณหภูมิน่าจะรู้ได้ว่ากำลังทำงานอยู่แค่ไหน ผมยังมี เซ็นเซอร์วัดอุณหภูมิที่ใช้ ESP8266 อยู่ตัวหนึ่ง จากโปรเจกต์หมักอย่างอื่นก่อนหน้านี้ที่ใช้ติดตามอุณหภูมิแวดล้อม
คิดว่าน่าจะซีลเทอร์มิสเตอร์ ใส่ 8266 ลงในกล่อง IP67 แล้วปักไว้บนกองปุ๋ยพร้อมแผงโซลาร์เซลล์ได้เลย ตอนนี้มันเปิดเว็บเพจผ่านโดเมน
.localอยู่แล้ว เลยน่าจะไม่ต้องทำงานเพิ่มมากนักสุดสัปดาห์นี้อาจจะลองทำจริงดูก็ได้
ปุ๋ยคอกร้อนมีสารประกอบไนโตรเจนมาก จึงย่อยสลายในกองปุ๋ยหมักได้เร็ว และระหว่างนั้นก็ปล่อยความร้อนมาก เรือนกระจกแบบดั้งเดิมใช้พลังงานจากปุ๋ยคอกที่กำลังเน่าเพื่อเพาะต้นกล้าและปักชำในฤดูหนาว ซึ่งมูลไก่ เป็ด และม้าจัดอยู่ในกลุ่มนี้
ปุ๋ยคอกเย็นมีธาตุอาหารน้อยกว่า และเมื่อย่อยสลายก็ปล่อยความร้อนน้อยกว่า จึงเสี่ยงทำให้พืชไหม้น้อยกว่า สัตว์เคี้ยวเอื้องอย่างวัว แพะ และแกะเข้าข่ายนี้ เพราะดึงไนโตรเจนส่วนใหญ่จากอาหารพืชออกไประหว่างการย่อย ลามะและอัลปากาไม่ใช่สัตว์เคี้ยวเอื้อง แต่เพราะมูลมีธาตุอาหารต่ำ จึงมองว่าเป็นปุ๋ยคอกเย็นได้
ไม่ได้ตั้งใจจะด้อยค่าผลิตภัณฑ์นะ แต่ส่วนตัวคงไม่จำเป็นต้องใช้ อย่างไรก็ดี อยากรู้ว่าได้พิจารณาหรือยังว่า ขนาดของการทำปุ๋ยหมัก ต้องใหญ่แค่ไหน ถึงจะทำให้การมอนิเตอร์แบบอิเล็กทรอนิกส์ช่วยปรับปรุงผลผลิตสุดท้ายได้คุ้มกับเงินลงทุน
รู้สึกว่าน่าจะต้องเป็นสเกลที่ค่อนข้างใหญ่
ผมชอบบรรยากาศแบบเห็ดๆ ของดีไซน์สำหรับใช้ในบ้าน และคิดว่าน่าจะผลักดันทางนั้นมากกว่านี้ก็ได้
ในสภาพแวดล้อมแบบนี้ อินไซต์ที่ขับเคลื่อนด้วยข้อมูลช่วยเรื่องประสิทธิภาพและการลดต้นทุนได้จริง เช่น การปรับรอบการเติมอากาศให้เหมาะสม หรือจับความไม่มีประสิทธิภาพก่อนที่ต้นทุนจะบานปลาย ดูเว็บไซต์ผลิตภัณฑ์ได้ที่นี่: (https://www.monty-pro.com)
สำหรับใช้ในบ้าน โฟกัสอยู่ที่การให้อินไซต์ที่สะดวก เพื่อช่วยให้ผู้ใช้ปุ๋ยหมักทั่วไปได้ผลลัพธ์จากความพยายามดีขึ้น มากกว่าการลดต้นทุน เป้าหมายคือทำให้ประสบการณ์การทำปุ๋ยหมักในสเกลเล็กสมบูรณ์ยิ่งขึ้นโดยรวม
collectd เป็นระบบมอนิเตอร์โอเพนซอร์สที่สามารถบันทึกลงไฟล์แฟลตแบบ RRD หรือ SQLite ได้ และสามารถส่งต่อเมตริกที่เก็บรวบรวมไปยังแอปสำหรับมอนิเตอร์ ทำกราฟ และตรวจจับความผิดปกติ เช่น Grafana หรือ InfluxDB ได้
Nagios มีฟีเจอร์ “state flapping detection” เพื่อป้องกันการแจ้งเตือนที่ไม่จำเป็น
collectd-python-plugins มีสคริปต์สำหรับมอนิเตอร์ความชื้นและอุณหภูมิด้วยเซ็นเซอร์ i2c และ Python: https://github.com/dbrgn/collectd-python-plugins
มีเซ็นเซอร์ความชื้นดินแบบ LoRaWAN ด้วย แต่ต้องใช้แบตเตอรี่หรือวิธีชาร์จหน้างาน
“Satellite images of plants' fluorescence can predict crop yields” (2024)
“Sensor-Free Soil Moisture Sensing Using LoRa Signals (2022)” https://dl.acm.org/doi/abs/10.1145/3534608 .. https://news.ycombinator.com/context?id=40234912
ค้นหาเซ็นเซอร์ความชื้นดินโอเพนซอร์ส: https://www.google.com/search?q=open+source+soil+moisture+se...
ค้นหา crop monitoring ในวิกิ: https://www.google.com/search?q=crop+monitoring+wikipedia ...
เกษตรกรรมแม่นยำ: https://en.wikipedia.org/wiki/Precision_agriculture
เกษตรกรรมดิจิทัล: https://en.wikipedia.org/wiki/Digital_agriculture
ค้นหาระบบมอนิเตอร์พืชผลบน GitHub: https://www.google.com/search?q=crop+monitoring+system+site%...
SIEM: https://en.wikipedia.org/wiki/Security_information_and_event...
อยากรู้ว่าใช้เซ็นเซอร์ของผู้ผลิตและรุ่นไหน ในโปรเจกต์งานอดิเรก ผมเคยทำ การมอนิเตอร์สภาพแวดล้อม ด้วยเซ็นเซอร์ราคาถูกมาก ๆ และเจอประสบการณ์แย่มากเรื่องความสามารถในการให้ค่าซ้ำของเซ็นเซอร์ รวมถึงความทนทานต่อสัญญาณรบกวนของเซ็นเซอร์ CO2
ใน HN ก็เคยมีการคุยเรื่องนี้ และทำให้ผมรู้และตรวจสอบได้ว่าสัญญาณรบกวนคือต้นเหตุของปัญหา
ผมมีไอเดียโปรเจกต์อยู่สองสามอย่างที่เกินระดับทำบนเบรดบอร์ดในบ้านไปแล้ว และเมื่อฝั่งซอฟต์แวร์กับอินฟราสตรักเจอร์เริ่มเติบโตเต็มที่ ตอนนี้ผมจึงอยากสร้างมันบนชิ้นส่วนที่เชื่อถือได้
ถ้าแชร์ไอเดียโปรเจกต์เพิ่มเติม เราก็คุยลงลึกได้เท่าที่จะช่วยได้
เป็นเรื่องดีที่ การมอนิเตอร์ปุ๋ยหมักขนาดเล็ก ที่ครอบคลุมและขยายได้มากขึ้นมีเพิ่มขึ้นเรื่อย ๆ ชุมชน Gathering for Open Ag Tech ก็น่าจะสนใจด้วย (https://forum.goatech.org/)
ก็ดีนะ แต่สำหรับการทำปุ๋ยหมักแบบร้อน ผมว่าน่าจะค่อนข้างง่าย แค่มีเทอร์โมมิเตอร์อันเดียวก็พอ ถ้าปุ๋ยหมักของผมเกิน 45°C ก็ถือว่าค่อนข้างมั่นใจได้ว่ามีจุลินทรีย์ชอบร้อนอยู่และกำลังทำงาน
แต่ระบบของเราจะเด่นเมื่ออยากลงลึกขึ้นอีกหน่อย เช่น การเพิ่มข้อมูลก๊าซ ระดับความชื้น และความกดอากาศ จะช่วยแก้ปัญหาหรือปรับกระบวนการให้เหมาะสมได้มีประสิทธิภาพขึ้น สามารถดูได้ว่ากิจกรรมเป็นแบบใช้ออกซิเจนหรือไม่ใช้ออกซิเจน ความชื้นเอียงไปมากเกินไปทางใดทางหนึ่งหรือไม่
เมื่อโครงสร้างหรือวัตถุดิบของการทำปุ๋ยหมักซับซ้อนขึ้น หรือเมื่อกระบวนการหยุดนิ่งแต่ไม่รู้สาเหตุ อินไซต์แบบนี้จะช่วยได้ แน่นอนว่าไม่ใช่ทุกคนต้องการฟีเจอร์สารพัดอย่าง และแค่เทอร์โมมิเตอร์ที่เชื่อถือได้กับความรู้สึกต่อปุ๋ยหมัก ก็ทำปุ๋ยหมักที่ดีและสุขภาพดีได้แล้ว
เป็นถังพลาสติกสีดำทรง Dalek ทำให้อัตราส่วนพื้นผิวต่อปริมาตรสูงเกินไป และตำแหน่งที่วางก็มีร่มเงาเยอะมาก
สิ่งที่อยากรู้มากกว่าคือ ประโยชน์ในทางปฏิบัติของค่าจากเซ็นเซอร์ ที่ได้จากการมอนิเตอร์ปุ๋ยหมัก อุณหภูมิกับความชื้นเข้าใจได้ตรงไปตรงมา แต่เช่น องค์ประกอบของก๊าซบ่งชี้อัตราส่วนคาร์บอน/ไนโตรเจน หรือใช้ดูว่ากองปุ๋ยกำลังเข้าสู่สภาวะไร้ออกซิเจนกันแน่?
ยังสงสัยด้วยว่าความดันอากาศเป็นตัวชี้วัดแทนโดยทั่วไปของอัตราการย่อยสลายหรือไม่
และอยากรู้ว่ามีครั้งไหนไหมที่สิ่งที่ได้เรียนรู้จากการมอนิเตอร์ทำให้เปลี่ยนนิสัยการทำปุ๋ยหมักจริง ๆ
เมื่อดูร่วมกับข้อมูลอุณหภูมิ จะบอกได้ค่อนข้างดีว่ากิจกรรมนั้นเป็นแบบใช้ออกซิเจน กล่าวคือเป็นกองปุ๋ยหมักที่สุขภาพดี หรือเป็นแบบไม่ใช้ออกซิเจนซึ่งไม่พึงประสงค์และอาจมีกลิ่น ตัวอย่างเช่น หาก TVOC พุ่งสูงขึ้นในสถานการณ์ที่ออกซิเจนมีให้ใช้ลดลง ก็มีความเป็นไปได้สูงว่าเป็นสภาวะไม่ใช้ออกซิเจน
ความดันอากาศถูกใช้เป็นส่วนหนึ่งของการตรวจจับเหตุการณ์การกลับกองปุ๋ยใน Monty Mobile ซึ่งเป็นแอป companion แอปยังวิเคราะห์ร่วมกับข้อมูลอื่น ๆ ด้วยว่าการเปลี่ยนแปลงเงื่อนไข เช่น ระดับความชื้นหรือความถี่ในการกลับกอง ส่งผลต่อการย่อยสลายอย่างไร
สำหรับผู้ใช้ส่วนใหญ่ แค่ตัวชี้วัดแทนทั่วไปที่บอกได้ว่ากองปุ๋ย "กำลังทำงาน" หรือ "หยุดนิ่ง" ก็เพียงพอแล้ว จากนั้นจึงปรับกระบวนการได้ เช่น เพิ่มวัสดุสีน้ำตาล ปรับความชื้น หรือเพิ่มการเติมอากาศ
ปุ๋ยหมักให้ผลลัพธ์ต่างกันมากตามรูปแบบ เช่น ถังหมุน ถังทั่วไป หรือฟาร์มไส้เดือน และตามวัตถุดิบที่ใส่ เช่น ปุ๋ยคอก เศษอาหาร หรือเศษวัสดุจากสวน ถึงอย่างนั้น ข้อมูลตลอด 24 ชั่วโมง ของระบบเราก็ช่วยทำให้ขั้นตอนการเปลี่ยนพฤติกรรมง่ายขึ้น
เพราะได้รับฟีดแบ็กทันที แทนที่จะต้องพึ่งวิธี "ลองทำ รอ แล้วค่อยลองใหม่" จึงสร้างความแตกต่างได้มากทั้งสำหรับมือใหม่และผู้มีประสบการณ์
โดยส่วนตัวแล้ว Monty ก็เป็นเครื่องมือเรียนรู้ที่ดีมากเช่นกัน พอใช้แอป Monty Mobile ก็สนใจกองปุ๋ยหมักมากขึ้น และจำได้ดีขึ้นว่าควรเติมวัสดุเพื่อปรับกองเมื่อจำเป็น รู้สึกเชื่อมโยงกับสิ่งที่เกิดขึ้นจริงภายในมากขึ้น
อยากทำโปรเจกต์คล้าย ๆ กันมาตั้งนานแล้ว เป็นแบบหลักปักในกระถางต้นไม้เพียงอันเดียวที่วัด องค์ประกอบของดิน ระดับสารอาหาร ความชื้น ความเร็วลม ปริมาณแสง ความชื้นสัมพัทธ์ ฯลฯ แล้วให้คำแนะนำการดูแลพืชและช่วยปรับการเติบโตให้เหมาะสม
สุดท้ายก็ยังไม่ได้ทำ อยากรู้ว่ามีคำแนะนำในการซื้อเซ็นเซอร์ไหม
การหาเซ็นเซอร์ที่เหมาะสมต้องลองผิดลองถูกมาก โดยเฉพาะเพราะสภาพการทำปุ๋ยหมักค่อนข้างโหด ถ้าจะเริ่มโปรเจกต์อีกครั้ง ก็อยากช่วยเชียร์หรือแลกเปลี่ยนบันทึกกัน
ดู Monty Monitor ได้ที่นี่: https://montycompost.co/products/im-perfect-monty-monitor
ไม่รู้ว่าอ่านใจได้ยังไง แต่บังเอิญจริง ๆ ที่เมื่อกี้กำลังหาดู เทอร์โมคัปเปิล สำหรับมอนิเตอร์ปุ๋ยหมักอยู่พอดี