Home assistant入門小計(二)

MQTT協(xié)議

mqtt協(xié)議是物聯(lián)網(wǎng)常用的一個協(xié)議,具體的可以查查資料,簡單說下我的理解。
他是基于TCP協(xié)議的,有一個服務(wù)器和若干個客戶端,服務(wù)器叫broker。
客戶端第一步要連接服務(wù)器,需要指定用戶名或者key。連接后設(shè)備就在線了可以雙向通信。具體的通信是可以往一個指定的topic發(fā)送一段內(nèi)容,比如json或者普通文本。也可以訂閱一個topic,這樣其他設(shè)備往這個topic發(fā)送數(shù)據(jù)的時候就會收到相應(yīng)的內(nèi)容。

安裝MQTT broker

我裝的EMQX,主要是他會有一個webUI,配置起來比較方便。而且是國內(nèi)的所以漢化的也好點(diǎn)。。。

在配置》》加載項》》加載項商店 找到EMQX安裝就行。


裝好后啟動然后打開側(cè)邊欄的選項就能在側(cè)邊欄看到了


點(diǎn)進(jìn)去默認(rèn)用戶名和密碼是admin和public

然后要在客戶端認(rèn)證里面創(chuàng)建用戶以便HA和傳感器連接。

MQTT集成

在設(shè)備與服務(wù)》》添加集成 里面添加mqtt集成


因為emqx安裝在本機(jī),所以設(shè)置里面ip地址填127.0.0.1就行


configuration.yaml

為了編輯文件,可以先裝一個file editor,或者一個vs code的插件


然后找到Homeassistant/下面的configuration.yaml

這里我主要參考的兩個文章https://www.home-assistant.io/integrations/binary_sensor.mqtt/
https://blog.csdn.net/qq_31400983/article/details/128967768。后面這個是當(dāng)HA里面的內(nèi)容發(fā)生變化時推送給EMQX,前面這個是傳感器發(fā)生變化時同步給HA。

HA接收傳感器消息

在configuration.yaml里面輸入下面的內(nèi)容

# Example configuration.yaml entry
mqtt:
  - binary_sensor:
      name: "Window Contact Sensor"
      state_topic: "home-assistant/window/contact"
      payload_on: "ON"
      availability:
        - topic: "home-assistant/window/availability"
          payload_available: "online"
          payload_not_available: "offline"
      qos: 0
      device_class: opening
      value_template: "{{ value_json.state }}"

重啟HA后會在面板看到這個東西


然后在emqx看到HA已經(jīng)訂閱了這幾個topic

在MQTTX里面可以控制設(shè)備上線、狀態(tài)開關(guān)



HA推送信息給MQTT

在configuration.yaml里面添加下面內(nèi)容后重啟HA

# add light
mqtt:
  light:
    # Device name
    - name: "Bookcase_Light"
    # State topic
      state_topic: "LED_Switch"
    # Command topic
      command_topic: "LED_Switch"
    # Command type
      payload_on: "1"
      payload_off: "0"
    # unique_ID
      unique_id: "LED1"
    # optimistic set
      optimistic: false

看到界面顯示



EMQX顯示



在MQTTX里面訂閱LED_Switch這個topic,在界面切換狀態(tài)時MQTTX就能收到相關(guān)的推送了

mqtt light的其他可以配置的內(nèi)容

可以通過配置,讓light變成rgb或者亮度可調(diào)的燈,并且每一個都有state傳入和command下發(fā)兩個topic

# Example configuration.yaml entry
mqtt:
  - light:
      name: "Office Light RGB"
      state_topic: "office/rgb1/light/status"
      command_topic: "office/rgb1/light/switch"
      brightness_state_topic: "office/rgb1/brightness/status"
      brightness_command_topic: "office/rgb1/brightness/set"
      rgb_state_topic: "office/rgb1/rgb/status"
      rgb_command_topic: "office/rgb1/rgb/set"
      state_value_template: "{{ value_json.state }}"
      brightness_value_template: "{{ value_json.brightness }}"
      rgb_value_template: "{{ value_json.rgb | join(',') }}"
      qos: 0
      payload_on: "ON"
      payload_off: "OFF"
      optimistic: false

注意,類似下面這種寫法已經(jīng)不被支持

light:
  - platform: mqtt
    name: "Office light"
    state_topic: "status"
    command_topic: "switch"
    brightness_state_topic: 'brightness'
    brightness_command_topic: 'brightness/set'
    qos: 0
    payload_on: "ON"
    payload_off: "OFF"
    optimistic: false
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容