หลังจากตอนที่แล้ว เราเตรียม hardware ติดตั้งเรียบร้อยแล้ว ในตอนที่ 3 นี้เราจะมาติดตั้ง MQTT server และ Home Assistant กันครับ ซึ่งพอทำเสร็จแล้วจะได้แบบในภาพนี้ โดยตัวโปรแกรมจะเชื่อมต่อกับ MQTT เพื่อสั่งงานสวิทช์
สำหรับวิธีการลงนั้น เนื่องจากระบบผมใช้ Docker 100% แล้วก็เลยจะต้องลงเป็น container โดยใช้ Docker Compose ตามนี้ครับ
version: "2"
services:
homeassistant:
restart: unless-stopped
image: homeassistant/home-assistant
volumes:
- /etc/localtime:/etc/localtime:ro
- homeassistant:/config
mqtt:
image: toke/mosquitto
restart: unless-stopped
volumes:
- mqtt:/mqtt/data
- mqtt-config:/mqtt/config
ports:
- 1883:1883
- 9001:9001
volumes:
homeassistant: {}
mqtt: {}
mqtt-config: {}
(ตรงนี้ผมมี nginx ดักด้านหน้าอยู่ เลยไม่ได้ expose Home Assistant โดยตรง และ MQTT จะโดน firewall rule อีกชั้นนึงด้วย ถ้านำไปใช้และไม่มี nginx ดักหน้าก็เปิด port 80 ออกไปแบบเดียวกับที่ผมเปิด MQTT port 1883 ครับ)
จากนั้นก็ config Home Assistant ให้เชื่อมต่อกับ Sonoff บน MQTT โดยแก้ไข configuration.yaml ใน Docker ที่อยู่ที่ /var/lib/docker/volumes/homeassistant_homeassistant/_data/configuration.yaml ซึ่งไฟล์นี้คือศูนย์กลางการตั้งค่าทุกอย่างที่เราจะได้แก้กันอีกหลายรอบ
mqtt:
broker: mqtt
port: 1883
client_id: home-assistant-1
keepalive: 60
protocol: 3.1
birth_message:
topic: "hass/status"
payload: "Online"
qos: 1
retain: true
will_message:
topic: "hass/status"
payload: "Offline"
qos: 1
retain: true
switch:
- platform: mqtt
name: "Pump"
state_topic: "stat/pump/POWER"
command_topic: "cmnd/pump/POWER"
qos: 1
payload_on: "ON"
payload_off: "OFF"
retain: true
ตรงนี้จะให้ Home Assistant report สถานะลง MQTT ด้วย และตรง state_topic
ด้านบนจะต้องกำหนดให้ตรงกับ MQTT topic ที่เซตไว้ในเว็บของ Sonoff นะครับ ผมใช้ pump
ก็ใส่ตามนั้น
พอทำถึงตรงนี้ บนเว็บ Home Assistant ควรจะขึ้นให้ปิดปั้มได้แล้วครับ และพอกดแล้ว Sonoff ควรจะตัดทันที (ได้ยินเสียง relay ทำงาน)
สำหรับตอนหน้าเราจะมาทำระบบอัตโนมัติกันครับ