https://github.com/maxmacstn/synology-smarthome-container-guide
แนะนำการติดตั้ง Smarthome Software บน Synology NAS ด้วยระบบ Docker
https://github.com/maxmacstn/synology-smarthome-container-guide
Last synced: 4 months ago
JSON representation
แนะนำการติดตั้ง Smarthome Software บน Synology NAS ด้วยระบบ Docker
- Host: GitHub
- URL: https://github.com/maxmacstn/synology-smarthome-container-guide
- Owner: maxmacstn
- Created: 2023-06-28T05:41:15.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-09-28T15:55:54.000Z (almost 3 years ago)
- Last Synced: 2025-04-06T13:47:11.675Z (over 1 year ago)
- Homepage: https://www.youtube.com/watch?v=q0dCeiZnlak
- Size: 207 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Smart Home on Synology NAS Installation Guide
ใน Repository นี้จะแนะนำการติดตั้ง Software สำหรับระบบ Smart Home บน Synology NAS ด้วยระบบ Docker Container

## Docker Container คืออะไร
Docker คือแพลตฟอร์ม Software สำหรับการติดตั้ง Application ลงไป Container คล้ายกับการใช้ VM แต่ว่า Docker จะรันแค่ตัว Application ไม่ใช่ทั้ง OS เหมือน VM
## NAS ที่แนะนำ
ควรใช้ Synology NAS รุ่น [Plus](https://www.synology.com/th-th/products/series/home) ขึ้นไป (CPU ใช้เป็น intel หรือ AMD)
## การติดตั้ง
1. สร้าง Shared folder สำหรับเก็บข้อมูล Docker
1. ไปที่ Control Panel > Shared Folder > Create Shared Folder
2. ตั้งชื่อ Folder เป็น `docker` และเลือก Storage pool ที่ต้องการ
3. Config ตัว Permission ของ Drive และ Apply
2. ติดตั้งโปรแกรมจาก Package Center
1. Docker
2. Text Editor
3. สร้าง 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
1. ไปที่ Docker Container > Home Assistant Container > Terminal
2. Create > Launch with command > ใส่ `bash`
3. พิมพ์ `wget -O - https://get.hacs.xyz | bash -` และ enter เพื่อทำการติดตั้ง
4. Restart Container
5. ไปที่ Home Assistant Web > integration > ค้นหาว่า HACS และติดตั้ง
* NUT UPS - อ่านค่าสถานะ UPS ที่เชื่อมต่อกับ NAS
1. ไปที่ Control Panel ของ NAS และเลือก Hardware & Power > UPS
2. เลือก Enable network UPS Server
3. ใส่ `127.0.0.1` ลงใน Permitted Synology NAS Devices
4. Apply
5. ค้นหา Integration NUT ใน Home Assistant และใส่ host เป็น `localhost`
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"
```
* สำหรับการติดตั้งครั้งแรก
1. กด install > Manual Download > Modern Format.
2. บันทึกไฟล์ `.bin`
3. เปิด [ESPHome Web](https://web.esphome.io/)
4. เชื่อมต่อบอร์ดเข้ากับ USB ขอบคอมพิวเตอร์, กด CONNECT, และเลือก serial device.
5. กด INSTALL, และเลือกไฟล์ `.bin` ที่โหลดมา
6. กด 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
1. ไปที่ Node-RED setting > palette
2. ติดตั้ง `node-red-contrib-home-assistant-websocket`
3. ไปที่ Home Assistant > Profile (กดตรงชื่อ username ตรง sidebar) > สร้าง long-lived access token
4. ใน 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 |
## เพิ่ม Shortcut ไปที่ Sidebar ของ Home Assistant

เพิ่มส่วนนี้ไปที่ด้านล่างของไฟล์ `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
```
## การอัปเดต container
1. ไปที่ Synology Docker App.
2. ไปที่ Registry และ Download image เวอร์ชั่นล่าสุด
3. หยุดการทำงานของ container และไปที่ action > reset.
**ไฟล์และข้อมูลของ container จะไม่สุญหายหากได้ทำการ mount volume ไว้แล้ว**