本帖最后由 roc634 于 2018-11-17 14:47 编辑
第一个问题,我刚开始时试了用两个自动化来控制同一个input_number来分别实现状态的同步和手动控制开合程度,但是只启用同步状态,或者只启用手动控制都没有问题,一起启用就不行了。手动拖动来打开窗帘时,一次只能开10%以内,数字随机,点出原生的那两个打开和关闭的箭头也是不能一次全开或全关了,我想应该是我的两个自动化同时控制同一个input_number的原因,两个互相影响。
想了好一会才想到解决方法,我注意到需要同步时窗帘的状态是opening或者closing,而在静止时,状态就是open或者closed,两者其他是不冲突的。于是在手动调整的那个加了condition。问题到此解决。
下面是两个自动化实例的代码。
- alias: living_win_curtain_update #厅窗帘位置同步
hide_entity: false
initial_state: on
trigger:
platform: state
entity_id: cover.hassmart_192_168_2_76
action:
- service: input_number.set_value
data_template:
entity_id: input_number.living_win_curtain_position
value: '{{ states.cover.hassmart_192_168_2_76.attributes.current_position|int }}'
- alias: living_win_curtain_manual #厅窗帘位置手动
hide_entity: false
initial_state: on
trigger:
platform: state
entity_id: input_number.living_win_curtain_position
condition:
condition: template
value_template: "{{ states('cover.hassmart_192_168_2_76') == 'open' or states('cover.hassmart_192_168_2_76') == 'closed' }}"
action:
- service: cover.set_cover_position
data_template:
entity_id: cover.hassmart_192_168_2_76
position: "{{ states('input_number.living_win_curtain_position')|int }}"
第二个解决了,之前写的模板不正确,用和上面一样的就解决了。这个sensor之前忘了提一下,是我用MQTT来发布窗帘是open还是close状态的。我设置了很复杂的窗帘开合规则,包括春夏、秋冬、有无人、光照度、投影是否在用等,通过好几个自动化实例来设置,我又不想让每个自动化都直接控制窗帘,于是设置了这样一个中介,上述这些自动化实例只发布状态,再通过一个自动化实例来控制实际的开合,这样我不需要自动的时候把这个自动化关闭就可以了。
这个自动化的代码如下:
- alias: living_win_curtain_action #厅窗帘动作
hide_entity: false
initial_state: on
trigger:
platform: state
entity_id: sensor.living_win_curtain_status
action:
- service: cover.set_cover_position
data_template:
entity_id: cover.hassmart_192_168_2_76
position:
{% if states('sensor.living_win_curtain_status') == 'open' %}
50
{% else %}
0
{% endif %}
|