Motivation
ในบทช่วยสอนนี้ ผมจะแสดงวิธีเพิ่มเซ็นเซอร์ที่กำหนดเองไปยัง HASS (Home Assistant) โดยเฉพาะอย่างยิ่ง geiger counter แต่กระบวนการนี้ก็คล้ายกันสำหรับเซ็นเซอร์อื่น ๆ ด้วย
เราจะใช้บอร์ด NodeMCU, geiger counter ที่ใช้ Arduino และ Home Assistant ที่ติดตั้งไว้แล้ว
การรวมระบบนี้จะใช้ MQTT server (สาธารณะหรือส่วนตัว) และผมจะพาคุณไปทีละขั้นตอน
ในกรณีที่คุณไม่ทราบว่า Home Assistant คืออะไร โปรดเยี่ยมชมหน้าเว็บของพวกเขา https://www.home-assistant.io/. It's เป็นแพลตฟอร์ม Home Automation ที่เป็นที่รู้จักกันดี ซึ่งได้รับการดูแลอย่างดีและปรับแต่งได้สูง
คุณจะได้เรียนรู้เกี่ยวกับ:
- การกำหนดค่าขั้นสูงสำหรับ Home Assistant
- NodeMCU (development board) และวิธีการโปรแกรมด้วย Arduino IDE
- OTA (over the air updates) โดยใช้ Arduino IDE สำหรับบอร์ด NodeMCU
- วิธีเชื่อมต่ออุปกรณ์ serial เข้ากับ NodeMCU
- การติดตั้ง MQTT server ด้วยตนเองบน Linux (ทางเลือก)
ข้อสันนิษฐานเบื้องต้น:
- คุณมี Home Assistant ทำงานอยู่
- คุณมีความรู้ด้าน electronics อยู่บ้าง
- คุณได้ติดตั้ง Arduino IDE แล้ว
Principle of Work
เป้าหมายของเราคือการแสดงค่าที่อ่านได้จาก geiger counter บน Home Assistant (HASS) ด้านหนึ่งเรามี HASS server ที่ทำงานอยู่ อาจเป็น Raspberry Pi หรืออุปกรณ์อื่น ๆ และอีกด้านหนึ่งเรามี geiger counter
geiger counter มี serial port, วิธีหนึ่งคือการเชื่อมต่อ serial port โดยตรงเข้ากับ Raspberry Pi ที่ HASS ทำงานอยู่
เหตุผลบางประการที่อาจไม่ใช่ความคิดที่ดี:
- ไม่มีพื้นที่ทางกายภาพตรงนั้น
- เรามีอุปกรณ์อื่นบางอย่างที่เชื่อมต่อกับ serial port
- เราต้องการเชื่อมต่อ environmental sensor ที่ควรจะวางไว้นอกอาคารแทน geiger counter
โอเค เราจะสำรวจความเป็นไปได้อื่น ๆ โดยการเชื่อมต่อผ่าน WIFI:

HASS รองรับการอ่านข้อมูลเซ็นเซอร์และแสดงผลผ่าน MQTT server, ซึ่งเป็นเซิร์ฟเวอร์แบบเบาสำหรับการเชื่อมต่ออุปกรณ์ขนาดเล็ก อุปกรณ์หนึ่งจะ publish ข้อความบน "topic" หนึ่ง ส่วนอีกอุปกรณ์หนึ่งจะ listen บน topic นั้นเพื่อรับข้อความ ดังนั้น HASS จะ listen และเราต้องการบางอย่างที่จะ publish ข้อความ
เซ็นเซอร์ของเราสื่อสารได้เฉพาะผ่าน serial line ดังนั้นเราจะใช้บอร์ดที่สามารถอ่าน serial line และเชื่อมต่อผ่าน WIFI เพื่อสื่อสารกับ MQTT server ได้ บอร์ดราคาถูกที่ทำได้คือ NodeMCU.
NodeMCU สามารถโปรแกรมด้วย Arduino IDE ได้ sketch นั้นค่อนข้างเรียบง่าย โดยทำดังนี้:
- เชื่อมต่อกับ WIFI
- รักษาการเชื่อมต่อ MQTT กับเซิร์ฟเวอร์ และพยายามเชื่อมต่อใหม่เมื่อล้มเหลวหรือขาดการเชื่อมต่อ
- ดักฟังข้อมูล serial ที่เข้ามาในรูปแบบของชุดตัวเลขจำนวนเต็ม
- เมื่อตัวเลขจำนวนเต็มมาถึง ก็จะส่งผ่าน MQTT ไปยัง topic ที่กำหนด
Assemble the Device

เราจะใช้ breadboards และสายไฟ ดังนั้นมันค่อนข้างง่าย เรามีไม่กี่ขั้นตอน:
- วาง NodeMCU บน breadboard
- เชื่อมต่อ geiger tube เข้ากับ geiger counter (ระวังขั้ว)
- VIN ไปยัง geiger counter +
- GND ไปยัง geiger counter -
- NodeMCU D7 (pin 13) ไปยัง geiger TX
- NodeMCU D8 (pin 15) ไปยัง geiger RX
- จ่ายไฟให้ NodeMCU ผ่าน micro USB จากคอมพิวเตอร์

Upload the Code




เราจะใช้ Arduino IDE และตรวจสอบให้แน่ใจว่าได้ติดตั้งบอร์ด NodeMCU และไลบรารี Adafruit_MQTT แล้ว
1. Clone github repository:https://github.com/danionescu0/arduino และคัดลอก sketch จาก projects/HASSGeigerIntegration ไปยังตำแหน่ง arduino sketchbook ของคุณ
2. เปิด Arduino IDE และติดตั้ง NodeMCU
- ไปที่ File -> Preferences, ใน Additional Boards Manager URLs ให้เพิ่ม http://arduino.esp8266.com/stable/package_esp8266com_index.json หากคุณมีบางอย่างอยู่แล้ว ให้ใส่เครื่องหมายจุลภาคคั่นหน้าและคลิก ok
- จาก Tools -> Board -> Board Manager พิมพ์ "nodemcu" และเลือกรายการ esp8266 by ESP8266 Community แล้วกด install
3. ติดตั้ง Adafruit_MQTT
- ไปที่ Tools -> Manage Libraries -> ค้นหา "Adafruit_MQTT" และติดตั้ง "Arduino MQTT library"
4. เสียบสาย USB เข้ากับคอมพิวเตอร์และกำหนดค่าบอร์ด:
- ไปที่ Tools -> Board -> เลือก NodeMcu 1.0
- Tools -> Port -> พอร์ต USB ของคุณ
- ปล่อยการตั้งค่าอื่น ๆ ไว้เหมือนเดิม
4. ใน sketch ให้เปลี่ยน WIFI credentials ของคุณให้ตรงกับของคุณเอง:
#define STASSID "ssid" // Replace with your WIFI SSID
#define STAPSK "pass" // Replace with your WIFI password</p>
5. อัปโหลด sketch ไปยังบอร์ดของคุณ และหลังจากอัปโหลดแล้ว ให้รีเซ็ตบอร์ดจากปุ่ม
6. เปิด serial monitor หากทุกอย่างเป็นไปด้วยดี คุณควรเห็นผลลัพธ์ประมาณนี้:
Booting
IP address: 192.168.1.168OTA enabled
Connecting to MQTT... MQTT Connected!
{"radiation": 0.03}..
Configure HomeAssistant


เราจะสมมติว่าคุณมี Home Assistant ทำงานอยู่แล้ว บนระบบของผม ผมใช้ HASSOS เวอร์ชัน 3.12 บน Raspberry Pi หาก Home Assistant เวอร์ชันของคุณเก่าเกินไปหรือใหม่มาก คุณสมบัติบางอย่างอาจแตกต่างกันไป บทช่วยสอนนี้ใช้งานได้แน่นอนกับเวอร์ชัน 3.12
หากคุณไม่มี Home Assistant ผม