Template Fan(透過IR、功率偵測)

目前有一支電扇僅支援IR控制,希望透過Broadlink + Smart Plug功率偵測來製作一個電扇實體,再接入Homekit。
目前遇到的問題是,功率已可以偵測,並且每秒更新一次,寫入 Template Fan的value_template作為條件卻無法達到功能,不知道有前輩看得出哪裡出了問題嗎?

設備:

  1. IR電扇 *1
  2. BroadLink RM mini4 *1
  3. Sonoff Smart Plug S31 *1
fan:
  - platform: template
    fans:
      bedroom_fan:
        unique_id: "fan_Bedroom_fan"
        friendly_name: "Bedroom fan"
        speed_count: 8
        value_template: "{{ states('sensor.sonoff_10012eff85_power') | float > 3.0 }}"
        percentage_template: "{{ states('input_text.status_fan_speed') | int }}"
        oscillating_template: "{{ states('input_select.fan_osc') }}"
        turn_on:
          - service: script.p_turn_on
        turn_off:
          - service: input_boolean.turn_off
          

要不要試試看把 {{ states(‘sensor.sonoff_10012eff85_power’) | float > 3.0 }} 單獨寫成一個 binary_sensor 再套進來?

剛剛快速測試一下,在開發者工具中用功耗變化切換 true/false 都正常,套到 template fan 狀態卻一直怪怪的,但把同樣的 template 寫成獨立的 binary_sensor 後再套用回去 template fan 卻正常,不知是不是有 bug…

1個讚

我測試了一下也遇到同樣問題@@

感謝E大的提醒阿!!!
以下分享給需要的人

binary_sensor:
  - platform: template
    sensors:
      fan_power:
        device_class: power
        value_template: "{{ states('sensor.sonoff_10012eff85_power') | float > 3.0 }}"

再把binary_sensor.fan_power帶入value_template就可以了 :rofl:

1個讚

問題解決就好,我再回報一下官方看看是怎麼回事…

這個是舊的寫法 template binary_sensor,建議用新寫法,才不會以後更新,舊方法被捨棄了

template:
  - binary_sensor:
    - name: "Fan Power"
      unit_of_measurement: "W"
      state: >
       "{{ states('sensor.sonoff_10012eff85_power') | float > 3.0 }}"
      state_class: measurement
      device_class: power

好哦感謝您阿,另外請教,state的這個 >箭頭,意旨甚麼呢?

表示多行
可以參考 yaml 語法

https://yaml-multiline.info/

可以參考這個網站,還有範例可以測試。