本帖最后由 chiunownow 于 2019-2-26 08:10 编辑
把data换成data_template,已经初步测试成功。后面全部写好后发成果
目标:控客插座实现控制空调
事项:
- 滑块(input number组件)实现控制温度
- 下拉选单(input select组件)实现风速选择
- 点击按键关机(script组件,这个最简单)
思路:
- 将学码的slot拆成温度+风速,00自动 01 02 03 小中大风,即
2400:24度自动风速
2401:24度小风
2503:25度大风
学码部分直接call service搞定
- input_number,input_select部分也不
input_number:
remote_temp_bedroom:
min: 2400
max: 2500
initial: 2400
step: 100
name: 空调温度
unit_of_measurement: "℃"
input_select:
remote_fanspeed_bedroom:
name: 风速
icon: mdi:fan
options:
- "自动"
- "小"
- "中"
- "大"
- (踩坑警告)使用自动化,在改变滑块或下拉选单时,触发自动化,让插座发送ir信号
automation:
- alias: "控客黑-主卧-空调发射ir"
trigger:
- platform: state
entity_id: input_number.remote_temp_bedroom
- platform: state
entity_id: input_select.remote_fanspeed_bedroom
action:
- service: remote.send_command
data:
entity_id: remote.wo_shi_yao_kong
# 坑就在下面这里了!
command: ir_"{{ states('input_number.remote_temp_bedroom') | int }}">
{% if states.input_select.remote_fanspeed_bedroom.state == "自动" %}"00"
{% elif states.input_select.remote_fanspeed_bedroom.state == "小" %}"01"
{% elif states.input_select.remote_fanspeed_bedroom.state == "中" %}"02"
{% elif states.input_select.remote_fanspeed_bedroom.state == "大" %}"03"
{% endif %}
测试一下,自然是不通过的。那就用call service来测试一下
为了一步步排除测试,先搞定温度控制部分,修改一下input_number
input_number:
remote_temp_bedroom:
min: 2400
max: 2500
initial: 2400
step: 100
然后去call service测试一下
#服务 remote.send_command
#实体 remote.wo_shi_yao_kong
#Service Data
{
"entity_id": "remote.wo_shi_yao_kong",
"command": "ir_{{ states('input_number.remote_temp_bedroom' | int)}}"
}
至此,卡住,扑街……
没有完整学过yaml和json,都是看着ha教程依样画葫芦。感觉问题应该出在引号和|int上。
向大家求教,这个案例如何解决(以及求个好懂的yaml 101)
|