之前有整合過紅外線產品進入Home assistant,
這次要用Broadlink Pro的RF功能,
將433Mhz遙控器控制的電燈吊扇整合入HA。
Broadlink萬能遙控器目前有分地區,
非國際版的無法加入他的專用app內使用,
但是依然可以用HA控制,
所以陸版或國際版目前沒有差。
三個綠燈後會跟你說地區不對,
不用管他,
路由器確認Broadlink有連上wifi就好,
接著將萬能遙控器加入ha,
可以參考之前的教學連結
將Boardlink萬用遙控器加入Home assistant,拷貝紅外線碼,並顯示於Homekit控制空調(Samba share的使用)
接下來是學習RF碼,
到開發工具->服務->遙控:learn command如下圖設定,
就可以學習訊號,
下圖以學習風扇開機鍵為範例
執行服務後,
HA會叫你長壓按鍵
然後鬆開再按一次
這個步驟要很有耐心,
博聯的燈號跟HA會不一致,
有時你都不知道要長壓還是要按一下,
多試幾次才能學到對的碼,
學到的碼可以參考上面連結查詢。(學到快吐血)
然後有些前置作業要先做好,請參考Home assistant介面介紹
接著建立/config/packages/study_fan.yaml
內容如下,請依自己的實體id跟學到的RF碼修改,
RF碼查詢請參考上方的舊文章。
以下程式碼可以到https://github.com/percy10442/ha_template_fan下載,
橘色的部份是要修改的地方。
fan:
- platform: template
fans:
study_fan:
friendly_name: "書房電風扇"
value_template: "{{ states('input_boolean.study_fan_state') }}"
percentage_template: "{{ states('input_number.study_fan_speed_percent')|float }}"
turn_on:
service: script.study_fan_on
turn_off:
service: script.study_fan_off
set_percentage:
service: script.study_fan_set_speed_percent
data:
percentage: "{{ percentage }}"
speed_count: 5 #我家有5段,假如家裡只有4段就是4,以此類推
#電風扇風速bar,我設5段0~100,每20為間隔
input_number:
study_fan_speed_percent:
name: Study Room Fan Speed Percent
initial: 0
min: 0
max: 100
step: 20 #我家有5段,假如家裡只有4段就是25,以此類推
#模擬判斷電風扇狀態
input_boolean:
study_fan_state:
name: Study Room Fan State
#對應腳本
#關電扇
script:
study_fan_off:
alias: Study room Fan Off
sequence:
#控制博聯關電扇
- service: remote.send_command
target:
entity_id: remote.shu_fang_yao_kong_remote
data:
command: b64:sgCiAAUjBSIaDxkPBcIZEAQjBSIZDwYiBSQYDxkQBCMZDxkQGA8YEAQkGA8ZDwUjBSMFIwUjBSMEJBkPGBAEwxkOBiMEIxkQBCMFIxkPGQ8FIxkPGQ4ZDxkPBSMZDxkPBSMFIgUjBSMGIwQjGQ8ZDwXCGQ8FIwUkGA8FIwUiGg8ZDwQkGBAYDxkRFxAEJBgPGQ8EJAQkBCMFIwUjBSMZDxkQBAAF3AAAAAAAAA==
#電扇狀態變為off
- service: input_boolean.turn_off
data:
entity_id: input_boolean.study_fan_state
#開電扇
study_fan_on:
alias: Study room Fan On
sequence:
- service: input_boolean.turn_on
entity_id: input_boolean.study_fan_state
- service: switch.turn_on
target:
entity_id: switch.0x54ef44100001154b_channel_1 #連接的智能開關
- delay:
milliseconds: 1000
- service: input_number.set_value
entity_id: input_number.study_fan_speed_percent
data:
value: "60"
- service: remote.send_command
target:
entity_id: remote.shu_fang_yao_kong_remote
data:
command: b64:sgCAABgQBSIZEBgSBCMFIwUjBSQEIxkPGRAEJATCGRAEIwUjGQ8FIgYjGQ4aDgUjGQ8ZDxkPGQ8FIxkPGBAFIgUjBSMFIgYiGRAYEAUiBcMZDwUjBCQYEAQjBSMZDxkPBSMZDhkRFxAYEAQkGBEXDwUkBCUEIwUkBCMZDxkPBSMFAAXcAAAAAAAAAAA=
#電扇百分比控制
study_fan_set_speed_percent:
alias: Study room Fan Set Percentage
sequence:
- service: input_number.set_value
entity_id: input_number.study_fan_speed_percent
data:
value: "{{ percentage }}"
- delay:
milliseconds: 500
- service: >
{% if states("input_number.study_fan_speed_percent")|int == 20 %}
script.study_fan_1
{% elif states("input_number.study_fan_speed_percent")|int == 40 %}
script.study_fan_2
{% elif states("input_number.study_fan_speed_percent")|int == 60 %}
script.study_fan_3
{% elif states("input_number.study_fan_speed_percent")|int == 80 %}
script.study_fan_4
{% elif states("input_number.study_fan_speed_percent")|int == 100 %}
script.study_fan_5
{% else %}
script.study_fan_off
{% endif %}
#電扇百分比判斷
- service: >
{% if states("input_number.study_fan_speed_percent")|int == 20 %}
input_boolean.turn_on
{% elif states("input_number.study_fan_speed_percent")|int == 40 %}
input_boolean.turn_on
{% elif states("input_number.study_fan_speed_percent")|int == 60 %}
input_boolean.turn_on
{% elif states("input_number.study_fan_speed_percent")|int == 80 %}
input_boolean.turn_on
{% elif states("input_number.study_fan_speed_percent")|int == 100 %}
input_boolean.turn_on
{% elif is_state('switch.0x54ef44100001154b_channel_1', 'off') %} #電扇連結的智能開關關閉,電扇的狀態也變為關閉
input_boolean.turn_off
{% else %}
input_boolean.turn_off
{% endif %}
entity_id: input_boolean.study_fan_state
#博聯控制電扇風速1
study_fan_1:
sequence:
- service: remote.send_command
target:
entity_id: remote.shu_fang_yao_kong_remote
data:
command: b64:sjEyAB4MCSAJIB0MCSAJIB4MHQwJIB0MHQwdDB0MCSAdDB0MHQwKHwogCSAJIB4MCSAeDAm/AAAAAAAA
#博聯控制電扇風速2
study_fan_2:
sequence:
- service: remote.send_command
target:
entity_id: remote.shu_fang_yao_kong_remote
data:
command: b64:sgD+AAbBGhAEIwUiGg4GIgYjGBAZDgUjGQ8ZDxkOGg4GIhoOGg4FIgYiBiMFIhoOBiIaDwQjBcIaDgYiBSIaDwUjBSIaDxkPBSIZDxoOGRAYDwUjGQ8ZEAQjBCMFIwUkGBAEIxkPBSMFwhkOBiIGIxkOBSMGIhkPGQ8FIxkPGQ8ZDxkPBSIZDhoPBSMFIgYiBiIZEAQjGQ8FIwXCGQ8FIwUjGQ8FIwUiGg4ZDwYiGRAYDxkPGRAEJBgPGQ8EIwUjBSQEIxkPBSIZEAQkBcEaDwUiBSMZDwUjBSIaDxkPBSIaDhkPGQ8ZDwUiGg8ZDgYjBSIFIwUjGQ8FIxkPBSIGAAXcAAAAAAAAAAAAAA==
#博聯控制電扇風速3
study_fan_3:
sequence:
- service: remote.send_command
target:
entity_id: remote.shu_fang_yao_kong_remote
data:
command: b64:sgCAABgQBSIZEBgSBCMFIwUjBSQEIxkPGRAEJATCGRAEIwUjGQ8FIgYjGQ4aDgUjGQ8ZDxkPGQ8FIxkPGBAFIgUjBSMFIgYiGRAYEAUiBcMZDwUjBCQYEAQjBSMZDxkPBSMZDhkRFxAYEAQkGBEXDwUkBCUEIwUkBCMZDxkPBSMFAAXcAAAAAAAAAAA=
#博聯控制電扇風速4
study_fan_4:
sequence:
- service: remote.send_command
target:
entity_id: remote.shu_fang_yao_kong_remote
data:
command: b64:sgCoAAYiBiMEIxkPBSMFIxkOBsIaDgUjBSIaDwUjBSIaDxkOBiIZDxkQGA8ZDwUjGQ8ZDgYiBSQEIwUjGRAEIwUjGQ8FwhkPBSIGIhoPBSIFIxoOGQ8FIxkPGQ8ZDxkPBSIaDxgPBSIGIwUiBiMZDwUjBSIaDgXCGg8FIgUkGA8FIwUjGQ8ZDwUjGQ8ZDxkOGRAEJBgPGRAEIwUjBSMFIxgPBSMFIxkPBQAF3A==
#博聯控制電扇風速5
study_fan_5:
sequence:
- service: remote.send_command
target:
entity_id: remote.shu_fang_yao_kong_remote
data:
command: b64:sgD+AAbCGQ8FIwUjGQ8FIwQjGQ8ZEAQjGQ8ZDxkQGA8FIhkQGBEEIwUlBCMFIwUiBiMYEAQjBcMYEAUjBCQYEAQjBSQYEBgQBCQYDxgQGBAYEQQkGBAYEAQjBCUEJAQkBCQEJRcRBCQEwxgRBCMFIxkQBCQEJRcRFxAEJBgPGRAYDxkPBSMZDxgQBCQEJAQkBCQEIwUkFxAEJATDGRAEJAUjGBAEJQQkGBIWEQQkFxEYERYSFhEEJRcSFhEEJQQkBCQEJAQkBCQYEQQkBMMYEgQkBCMZDwUjBSQXEBgQBCQYEBgQGBAYEAQkFxAZDwQkBCMFJAQkBCMFIxkPBCQFAAXcAAAAAAAAAAAAAA==
然後建立實體介面就完成了
如果我的文章對你有幫助,歡迎送我喝杯咖啡喔