ใน Repository นี้จะแนะนำการติดตั้ง Software สำหรับระบบ Smart Home บน Synology NAS ด้วยระบบ Docker Container
Docker คือแพลตฟอร์ม Software สำหรับการติดตั้ง Application ลงไป Container คล้ายกับการใช้ VM แต่ว่า Docker จะรันแค่ตัว Application ไม่ใช่ทั้ง OS เหมือน VM
ควรใช้ Synology NAS รุ่น Plus ขึ้นไป (CPU ใช้เป็น intel หรือ AMD)
-
สร้าง Shared folder สำหรับเก็บข้อมูล Docker
- ไปที่ Control Panel > Shared Folder > Create Shared Folder
- ตั้งชื่อ Folder เป็น
docker
และเลือก Storage pool ที่ต้องการ - Config ตัว Permission ของ Drive และ Apply
-
ติดตั้งโปรแกรมจาก Package Center
- Docker
- Text Editor
-
สร้าง Container ใน Docker โดยใช้การตั้งค่าดังนี้
Home Assistant
-
Port Mapping: HOST
Purpose Port Home Assistant UI 8123 -
Volume:
Local Folder Mount Path / Your NAS Folder
/homeassistant/config -
การติดตั้ง Integration
- HACS
- ไปที่ Docker Container > Home Assistant Container > Terminal
- Create > Launch with command > ใส่
bash
- พิมพ์
wget -O - https://get.hacs.xyz | bash -
และ enter เพื่อทำการติดตั้ง - Restart Container
- ไปที่ Home Assistant Web > integration > ค้นหาว่า HACS และติดตั้ง
- NUT UPS - อ่านค่าสถานะ UPS ที่เชื่อมต่อกับ NAS
- ไปที่ Control Panel ของ NAS และเลือก Hardware & Power > UPS
- เลือก Enable network UPS Server
- ใส่
127.0.0.1
ลงใน Permitted Synology NAS Devices - Apply
- ค้นหา Integration NUT ใน Home Assistant และใส่ host เป็น
localhost
- HACS
EMQX MQTT Broker
-
Port Mapping: BRIDGE
Purpose Local Port Container Port MQTT/WebSocket 1883 1883 Dashboard Management 18083 18083 -
Volume: No set
Zigbee2MQTT
-
Port Mapping: HOST
Purpose Port Dashboard Management 8080 -
Volume:
Local Folder Mount Path / Your NAS Folder
/zigbee2mqtt/app/data -
สร้างไฟล์ configuration.yaml ในโฟลเดอร์
/Your NAS Folder/zigbee2mqtt/
# Home Assistant integration (MQTT discovery) homeassistant: true # Web Front End frontend: # Optional, default 8080 port: 8080 # allow new devices to join permit_join: true # MQTT settings mqtt: # MQTT base topic for zigbee2mqtt MQTT messages base_topic: zigbee2mqtt # MQTT server URL server: 'mqtt://127.0.0.1:1883' # MQTT server authentication, uncomment if required: user: mqtt password: mqtt # Serial settings serial: # Location of SLZB-06 port: tcp://xxx.xxx.xxx.xxx:6638 baudrate: 115200 # Disable green led? disable_led: false # Set output power to max 20 advanced: transmit_power: 20
ESPHome
-
Port Mapping: HOST
Purpose Port Dashboard Management 6052 -
ตัวอย่าง YAML สำหรับเปิดปิดไฟบนบอร์ด ESP32 (เพิ่มลงไปด้านล่างของไฟล์ yaml)
switch: - platform: gpio pin: GPIO2 name: "Onboard LED"
-
สำหรับการติดตั้งครั้งแรก
- กด install > Manual Download > Modern Format.
- บันทึกไฟล์
.bin
- เปิด ESPHome Web
- เชื่อมต่อบอร์ดเข้ากับ USB ขอบคอมพิวเตอร์, กด CONNECT, และเลือก serial device.
- กด INSTALL, และเลือกไฟล์
.bin
ที่โหลดมา - กด INSTALL. หลังการติดตั้งในครั้งแรก บอร์ดจะขึ้น Online ในหน้า Dashboard และในครั้งต่อไป สามารถลง Firmware แบบ OTA ได้
Node-red
-
Port Mapping: BRIDGE
Purpose Local Port Container Port Node-red web 1880 1880 -
Volume:
Local Folder Mount Path / Your NAS Folder
/node-red/data Note: ถ้ารันเจอ error EACCESS: permission denied ให้ทำการ ssh ไปเปลี่ยน permission ของ node-red folder โดยใช้ command
sudo chmod -R 777 node-red/
-
การติดตั้งและเชื่อมต่อกับ Home Assitant
- ไปที่ Node-RED setting > palette
- ติดตั้ง
node-red-contrib-home-assistant-websocket
- ไปที่ Home Assistant > Profile (กดตรงชื่อ username ตรง sidebar) > สร้าง long-lived access token
- ใน Node-Red Home Assistant palette, เพิ่ม Home Assistant server base URL เป็น
http://192.168.1.xx:8123
และเพิ่ม Access token.
Homebridge
-
Port Mapping: HOST
Purpose Port Web UI 8581 -
Volume:
Local Folder Mount Path / Your NAS Folder
/homebridge/homebridge
-
เพิ่มส่วนนี้ไปที่ด้านล่างของไฟล์ configuration.yaml
ของ Home Assistant
panel_iframe:
zigbee2mqtt:
title: "Zigbee2MQTT"
url: "http://192.168.1.XXX:8080"
icon: mdi:zigbee
esphome:
title: "ESPHome"
url: "http://192.168.1.XXX:6052"
icon: mdi:memory
nodered:
title: "node-red"
url: "http://192.168.1.XXX:1880"
icon: mdi:resistor-nodes
emqx:
title: "EMQX"
url: "http://192.168.1.XXX:18083"
icon: mdi:lan-connect
homebridge:
title: "Homebridge"
url: "http://192.168.1.XXX:8581"
icon: mdi:apple
-
ไปที่ Synology Docker App.
-
ไปที่ Registry และ Download image เวอร์ชั่นล่าสุด
-
หยุดการทำงานของ container และไปที่ action > reset.
ไฟล์และข้อมูลของ container จะไม่สุญหายหากได้ทำการ mount volume ไว้แล้ว