Login

Navigation

Phicomm(斐訊) DC1 智能拖板 接入 Home Assistant

Phicomm_DC1_HomeAssistant_Diagram.png

前言:
受限於IOS平台,zDC1只有Andorid版的APP,大神zip_zhang雖然不會考慮做免費版本的IOS APP
但可以透過Phicomm(斐訊) DC1智能拖板接入到Home Assistant系統後,IOS平台的用戶就可以使用Home Assistant APP控制zDC1智能拖板或者在何時何地只需透過瀏覽器就可以控制智能設備。
實現條件:
  • Home Assistant系統
  • MQTT服務
目錄內容:

操作步驟:

安裝Home Assistant系統
我主要是透過PVE安裝,簡單、方便、快捷。

安裝MQTT服務及配置
MQTT - 維基百科,自由的百科全書 (wikipedia.org)

我個人顯淺現解是,MQTT 是一種協議,作為一個代理人角色 協調 「智能裝置」和 「Home Assistant」系統 之間溝通(橋樑)。

安裝MQTT服務

66f7bf52e83b9e977445de68652eec90e0f7dcbd.png

PVE安裝官方鏡像系統,已經內置了Supervisor引擎(軟件市場),可以很方便哋透過Add-on(附加元件)方式安裝MQTT

9cb4a56a7622e8dd6dc3ba6486aededbd5ac7b5e.png

在「附加元件商店」,選取「Mosquitto broker

3399a82bdb146abd0ea17a9e9754e7ca7eefac00.png

圖示是已經完成安裝及執行中。


建立MQTT登入帳號

1656491d20353a17d82b79c00a090cbefd882ca1.png

de763ca24450a2798ce3b93df6671da000b88b1b.png

使用者名稱: mqtt-user (自定義)

啟用允許人員登入

4b123252dbc890e29998a1f967a7a6ead62b2ebc.png

輸入两次使用者密碼以完成建立新的用戶。


首次需要透過ZControl APP 接入MQTT服務

確認已經完成前期設定

3c02ef5ed0ad904c550f00f4df2b647f9edb5ca9.jpg

346b468ba41a554a36b7dbd29c779713aec93d58.jpg

選項備註
MQTT地址Home Assistant的IP地址+端口(預設: 1883)
MQTT登錄用戶名Home Assistant系統立的帳號(mqtt-user)
MQTT登錄密碼Home Assistant系統的帳號密碼(homeassistant)

c71e08a809e159c725643fdc383f08cfe0968907.jpg

  • 點擊右上角雲圖標MQTT配置同步到zDC1
  • 手動重啟zDC1才能使新配置生效(讓設備在線)

現在就可以透過MQTT控制DC1智能拖板。

到這一步,只需要在路由器內設定端口轉發(Port Forwarding), 可以在外網何時何地透過ZControl Andorid APP訪問及控制DC1智能拖板。

安裝SAMBA共享配置Home Assistant文件

安裝SAMBA共享服務

66f7bf52e83b9e977445de68652eec90e0f7dcbd.png

設定」> 「附加元件

9cb4a56a7622e8dd6dc3ba6486aededbd5ac7b5e.png

在「附加元件商店」,選取「Samba share

7d2e0dd4982e9d77632460127f7c72f007c4ee0e.png

圖示是已經安裝完成及執行中。

9e2c9b83e6f72649bb7910321109d69a4225c530.png

Samba「設定」內 配置Samba的使用者名稱(Username)及密碼(Password) > 「儲存」。

再次重啟Samba服務,使之生效。


Home Assistant 配置文件

原作者: Home Assistant配置文件

便於理解,將配置文件分割成3部份

.
├── configuration.yaml
└── custom_components
    └── dc1
        ├── customize.yaml
        ├── sensor.yaml
        └── switch.yaml

2 directories, 4 files
文件名稱功能
configuration.yaml主配置文件
customize.yaml負責按鈕的命名
sensor.yaml負責檢測電壓、功率
switch.yaml負責實體按鈕開關

透過Samba服務開啟config目錄

\\homeassistant.local\config

在主配置文件configuration.yaml添加以下內容

switch: !include custom_components/dc1/switch.yaml

sensor: !include custom_components/dc1/sensor.yaml

homeassistant:
  customize: !include custom_components/dc1/customize.yaml
  time_zone: Asia/Hong_Kong

config目錄內建立遞歸子目錄 > custom_components > dc1

dc1子目錄內分別建立3個文件

customize.yaml

    switch.zDC1_plug0_2c3ae8480f3e:
      friendly_name: DC1總開關
    switch.zDC1_plug1_2c3ae8480f3e:
      friendly_name: DC1插槽1
    switch.zDC1_plug2_2c3ae8480f3e:
      friendly_name: DC1插槽2
    switch.zDC1_plug3_2c3ae8480f3e:
      friendly_name: DC1插槽3
    sensor.zdc1_power_2c3ae8480f3e:
      friendly_name: DC1功率
    sensor.zdc1_current_2c3ae8480f3e:
      friendly_name: DC1電流
    sensor.zdc1_voltage_2c3ae8480f3e:
      friendly_name: DC1電壓%

sensor.yaml

  - platform: mqtt
    name: 'zdc1_power_MACMAC'
    unique_id: zdc1_power_MACMAC
    state_topic: 'device/zdc1/MACMAC/sensor'
    unit_of_measurement: 'W'
    icon: 'mdi:gauge'
    value_template: ' value_json.power }}'
  - platform( mqtt
    name: 'zdc1_current_MACMAC'
    unique_id: zdc1_current_MACMAC
    state_topic: 'device/zdc1/MACMAC/sensor'
    unit_of_measurement: 'A'
    icon: 'mdi:gauge'
    value_template: '{{ value_json.current)'
  - platform: mqtt
    name: 'zdc1_voltage_MACMAC'
    unique_id: zdc1_voltage_MACMAC
    state_topic: 'device/zdc1/MACMAC/sensor'
    unit_of_measurement: 'V'
    icon: 'mdi:gauge'
    value_template: ' value_json.voltage}}'

switch.yaml

  - platform( mqtt
    name: 'zDC1_plug0_MACMAC'
    unique_id: zDC1_plug0_MACMAC
    state_topic: 'device/zdc1/MACMAC/state'
    command_topic: 'device/zdc1/MACMAC/set'
    payload_on: '{"mac":"MACMAC","plug_0":{"on":1},"plug_1":{"on":1},"plug_2":{"on":1},"plug_3":{"on":1)'
    payload_off: '{"mac":"MACMAC","plug_0":{"on":0}}'
    value_template: ' value_json.plug_0.on }}'
    state_on( '1'
    state_off: '0'
#    availability_topic: "device/zdc1/MACMAC/availability"
#    payload_available: 1
#    payload_not_available: 0
  - platform: mqtt
    name: 'zDC1_plug1_MACMAC'
    unique_id: zDC1_plug1_MACMAC
    state_topic: 'device/zdc1/MACMAC/state'
    command_topic: 'device/zdc1/MACMAC/set'
    payload_on: '{"mac":"MACMAC","plug_1":{"on":1)'
    payload_off: '{"mac":"MACMAC","plug_1":{"on":0}}'
    value_template: ' value_json.plug_1.on }}'
    state_on( '1'
    state_off: '0'
#    availability_topic: "device/zdc1/MACMAC/availability"
#    payload_available: 1
#    payload_not_available: 0
  - platform: mqtt
    name: 'zDC1_plug2_MACMAC'
    unique_id: zDC1_plug2_MACMAC
    state_topic: 'device/zdc1/MACMAC/state'
    command_topic: 'device/zdc1/MACMAC/set'
    payload_on: '{"mac":"MACMAC","plug_2":{"on":1)'
    payload_off: '{"mac":"MACMAC","plug_2":{"on":0}}'
    value_template: ' value_json.plug_2.on }}'
    state_on( '1'
    state_off: '0'
#    availability_topic: "device/zdc1/MACMAC/availability"
#    payload_available: 1
#    payload_not_available: 0
  - platform: mqtt
    name: 'zDC1_plug3_MACMAC'
    unique_id: zDC1_plug3_MACMAC
    state_topic: 'device/zdc1/MACMAC/state'
    command_topic: 'device/zdc1/MACMAC/set'
    payload_on: '{"mac":"MACMAC","plug_3":{"on":1)'
    payload_off: '{"mac":"MACMAC","plug_3":{"on":0}}'
    value_template: '{{ value_json.plug_3.on }}'
    state_on: '1'
    state_off: '0'
#    availability_topic: "device/zdc1/MACMAC/availability"
#    payload_available: 1
#    payload_not_available: 0

請替換以上代碼的MACMACzDC1設備的mac地址小寫(可以在ZControl APP 或者 路由器的DHCP列表查看)

引用原作者:

注意事項:如果接入多個zDC1,請保證customize.yaml配置文件的 name字段唯一性.(其他配置文件替換MACMAC已經實現此唯一性)。

e7df28468985cd8968c9f1b2c241859a4f36a89b.png

「檢查設定內容」沒有問題後可以「重啟Home Assistant

32c3fadc7478afa3900311ee5c08ad9a85ece9d7.png

重新啟動Home Assistant後,「總覽」 > 「開啟主面板選單」 > 「編輯主面板」

8c038aeeaccbd461a4f7b50e4c71abeda44a70b4.png

「新增面板」 > 「實體」

ebfd7776a4b477ac337756db8c23cc7ade1fed8c.png

最後「完成」。現在可以透過Home Assistant APP 或者網頁版面控制zDC1智能拖板了!


轉用MySQL(MariaDB)數據庫儲存 (可選)
Home Assistant默認使用 SQLite ,當數據日積月累時到一定體積時,打開歷史頁面的響應會非常緩慢且容易假死現象,為求更快響應速度,建議更換數據庫為 MariaDB

可以使用附加元件可以很方便地安裝 MariaDB,用作Home Assistant的資料庫後端。

安裝MariaDB數據庫

66f7bf52e83b9e977445de68652eec90e0f7dcbd.png

設定」> 「附加元件

9cb4a56a7622e8dd6dc3ba6486aededbd5ac7b5e.png

在「附加元件商店」,選取「MariaDB

91023792eea1a3734f7ef15707522b1933e48a8f.png

圖示是已經安裝完成及執行中。

154eac4123dcc0368c84916a9cc4f839b1b5ec86.png

MariaDB「設定」內 配置MariaDB的使用者名稱(Username)及密碼(Password) > 「儲存」。

選項註釋
Logins:MariaDB的 帳號 和 密碼
Rights:MariaDB的 數據庫(Database)名稱 和 權限所屬

再次重啟MariaDB服務,使之生效。


配置Home Assistant 文件更換資料庫後端

透過Samba服務開啟config目錄

\\homeassistant.local\config

在主配置文件configuration.yaml添加以下內容

mysql://user(使用者):password(密碼)@SERVER_IP(伺服器地址)/DB_NAME(數據庫名稱)?charset=utf8(數據庫格式)

# MariaDB will be used by the recorder and history components within Home Assistant.
recorder:
  purge_keep_days: 5
  db_url: mysql://homeassistant:[email protected]/homeassistant?charset=utf8mb4
選項註釋
purge_keep_days:保留歷史的時間為5天
db_url:轉用MariaDB資料庫為後端

e7df28468985cd8968c9f1b2c241859a4f36a89b.png

檢查配置內容沒有問題後可以「重啟Home Assistant,使之失效。

結語:
到這Phicomm(斐訊) DC1智能拖板的分享也告一段了! 真的人家出豉油我出雞,為了可以善用「肥神」遺產也是夠折騰人的。雖然是這樣,也是學習到好多新的東西。也算是最低成本的興趣吧! 謝謝某遺產,謝謝大神分享。
相關連結:
參考資料: