วัดอุณหภูมิตู้เย็นคลังยา แบบทำเอง

เนื่องด้วยมีข้อจำกัดทางด้านงบประมาณ ประกอบกับได้เคยศึกษาเกี่ยวกับการ homelab และ self-hosted services จึงได้เริ่มประกอบทำเอง และนำไปใช้จริงกับระบบตู้เย็นคลังยาของโรงพยาบาล

เนื่องจากไม่ใช่ programmer หรือ software developer/software engineer ใดๆ ไม่สามารถเขียนโค้ดได้ จึงประยุกต์ใช้จากระบบที่ค่อนข้างสำเร็จรูป

หน้าแสดงผลทาง grafana

HARDWARE

server: linux machine สำหรับ run docker เป็น environment สำหรับ home-assistant influxdb
อุปกรณ์วัดค่า: node MCU ESP8266 และ temperature sensor (Dallas sensor) พร้อมสายต่อพ่วง

linux machine สำหรับการเป็น server สามารถใช้อุปกรณ์ใดๆ ได้ desktop PC ก็ได้ เพียงแค่ด้านระบบปฏิบัติการ (OS) การใช้ linux เหมาะสมกว่า ในที่นี้เลือกใช้เป็น ubuntu server ลงใน raspberry pi
raspberry pi เป็น single board computer หรือเครื่องคอมพิวเตอร์ขนาดเล็กที่รวมทุกอย่างอยู่บน board เดียว (single board) โดยใช้พลังงานน้อย
server ทำหน้าที่ run OS รับข้อมูล ประมวลผลข้อมูล แสดงข้อมูล และแจ้งเตือนข้อมูลตามที่ตั้ง
node MCU มีหน้าที่เป็นตัวรับสัญญาณข้อมูล และส่งต่อไปยัง server raspberry pi ผ่าน WiFi

อุปกรณ์
- raspberry pi4 (RAM 4 GB) พร้อม adapter
- case พร้อมพัดลม
- storage : 2.5" SSD SATA 250 GB
- nodeMCU v3 boardESP8266 พร้อมสาย usb
- base for nodeMCU v3
- temperature sensor (Dallas sensor) + adapter module + jumper wire
- adapter สำหรับ nodeMCU
อุปกรณ์อื่นๆ : ระบบ network, สาย LAN, access point/wireless router (สามารถตั้งให้ raspberry pi ปล่อยสัญญาณ wifi แทนได้)

การประกอบ
-ประกอบ node MCU ต่อเข้ากับสาย temperature sensor ตาม diagram (PIN 3volts, PIN ground และ PIN data โดยมี resistor คร่อม) และใช้ไฟเลี้ยงโดยต่อเข้ากับสาย usb และ usb adaptor
-server : raspberry pi4 ติดตั้ง OS โดย flash ลง SSD จากคอมพิวเตอร์เครื่องอื่น และต่อใช้กับ raspberry pi เพื่อเป็น storage raspberry pi สามารถใช้ microSDcard 16-32 GB เป็น storage ได้ โดยมี slot โดยเฉพาะ แต่ไม่แนะนำการใช้ SDcard เนื่องจากมีอาการเขียนอ่านอยู่ตลอด ทำให้อายุสั้น ทำให้ต้อง setup ระบบใหม่ จึงเลือกใช้ 2.5" SSD SATA เนื่องจากอายุการใช้งานนานกว่า อ่านเขียนเร็ว(เร็วกว่า HDD) และราคาไม่สูง โดยต่อผ่านสาย USB
ต่อ raspberry pi เข้ากับระบบ network ผ่านสาย LAN

SOFTWARE

OS: ubuntu server - Ubuntu 24.04.1 LTS
เนื่องจากไม่มีความรู้ด้าน coding จึงเลือกใช้ระบบสำเร็จรูป เป็น open-source application ไม่มีค่าใช้จ่าย

  • home-assistant เป็น application สำหรับ smart home, IoT โดยมีความสามารถการรับข้อมูลต่างๆ เก็บบันทึกข้อมูล แสดงผลข้อมูล สั่งการอุปกรณ์ IoT และยังสามารถสร้าง automation ได้
  • influxdb2 เป็นระบบฐานข้อมูล แยกจาก home-assistant เนื่องจากต้องการส่งข้อมูลแยกออกไป เพราะภายใน home-assistant มีการแสดงผลที่อาจดูได้ยาก
  • grafana เป็น open-source application สำหรับการแสดงผลต่างๆ UI เข้าใจง่าย จึงเหมาะการแสดงผลมากกว่า home-assistant โดยดึงข้อมูลมาจาก influxdb2 อีกครั้ง
  • esphome เนื่องจาก nodeMCU ถูกออกแบบมาให้ใช้งานได้อิสระ จึงต้องมีการเขียนโปรแกรมใช้งานลงไปเอง (flash) เพื่อให้ได้ตามที่ต้องการ โดยการทำให้ใช้งานได้กับ home-assistant จึงใช้ esphome เป็น integration ของ home-assistant เพื่อให้เขียนโปรแกรมอย่างง่าย และติดต่อส่งข้อมูลเข้า home-assistant โดยตั้งให้เชื่อมกับสัญญาณ WIFI ตาม SSID ที่กำหนด

ทั้งหมดนี้ run ภายใน docker container เนื่องจากควบคุมได้ง่าย

  • home-assistant, port 8123
    รับข้อมูล sensor จาก nodeMCU ผ่าน ESPhome ส่งdata ไป influxdb2
  • influxdb2, port 8086
    organization=<org>, Bucket=homeassistant มี token สำหรับ access
  • grafana , port 3000
    ดึงdata จาก influxdb2 ใช้ organization,Bucket,token
  • esphome, port 6052
    สำหรับ config espboard
หน้าข้อมูลจาก home-assistant ซึ่งทำไว้เป็นตัวจัดการหลังบ้าน

เพิ่มเติม: สามารถทำแจ้งเดือนได้หลายทาง ตามแต่ที่ home-assistant รองรับ หรือทำ custom-integration เอง