Hier zusammengefasst der Code dazu, aufbauend auf meinen anderen Beispiele.
Basis ist die Firmware 1.3.30
Viel Spass, Stephan
zwei Rest Command:
dingz_generic_cover_move:
url: http://{{ ip }}/api/v1/shade/{{ idx }}/{{ action }}
method: POST
dingz_generic_cover_moveto:
url: http://{{ ip }}/api/v1/shade/{{ idx }}
method: POST
payload: 'blind={{ blind }}&lamella={{ lamella }}'
content_type: 'application/x-www-form-urlencoded; charset=utf-8'
Dann noch zwei Sensoren, wobei der erste Sensor bereits vorhanden war. Siehe dazu meine vielen anderen Beispiele:
platform: rest
method: GET
resource: !secret url_sensor_dingz_markise1
name: Dingz Markise1 State
value_template: "OK"
scan_interval: 60
force_update: true
json_attributes:
- "blinds"
- "led"
- "sensors"
platform: rest
method: GET
resource: !secret url_sensor_dingz_markise1_wohnzimmer_links
name: Dingz Markise1 Wohnzimmer Links State
value_template: "OK"
scan_interval: 60
force_update: true
json_attributes:
- "current"
Die Secrets sehen etwa so aus, wobei xxx natürlich die letzte Zahl der IP sein muss
ip_dingz_markise1: '192.168.1.xxx'
url_sensor_dingz_markise1: http://192.168.1.xxx/api/v1/state
url_sensor_dingz_markise1_wohnzimmer_links: http://192.168.1xxx/api/v1/shade/0
Dann benötigt man noch die passenden Scripte:
dingz_cover_move_generic:
alias: Dingz Cover Move Generic
sequence:
- service: rest_command.dingz_generic_cover_move
data:
action: '{{ action }}'
idx: '{{ idx }}'
ip: '{{ ip }}'
- service: homeassistant.update_entity
target:
entity_id: '{{ force_entity1 }}'
- service: homeassistant.update_entity
target:
entity_id: '{{ force_entity2 }}'
mode: parallel
icon: hass:blinds
max: 10
dingz_cover_moveto_generic:
alias: Dingz Cover Move To Generic
sequence:
- service: rest_command.dingz_generic_cover_moveto
data:
blind: '{{ position }}'
lamella: '{{ lamella }}'
idx: '{{ idx }}'
ip: '{{ ip }}'
- service: homeassistant.update_entity
target:
entity_id: '{{ force_entity1 }}'
- service: homeassistant.update_entity
target:
entity_id: '{{ force_entity2 }}'
mode: parallel
icon: hass:blinds
max: 10
Und zu guter letzt noch das Template als covers.yaml abgelegt:
- platform: template
covers:
# ####### ############################### #######
# ####### Dingz Cover Template Markise 1 #######
# ####### ############################### #######
# ####### Dingz Markise1 Cover Wohnzimmer Links
dingz_markise1_cover:
unique_id: dingz_markise1_cover
friendly_name: "Dingz Markise1 Wohnzimmer Links"
device_class: blind
value_template: "
{% if state_attr('sensor.dingz_markise1_state', 'blinds')[0]['moving'] == 'up' %}
opening
{% elif state_attr('sensor.dingz_markise1_state', 'blinds')[0]['moving'] == 'down' %}
closing
{% elif state_attr('sensor.dingz_markise1_state', 'blinds')[0]['moving'] == 'stop' and state_attr('sensor.dingz_markise1_wohnzimmer_links_state', 'current')['blind']|float > 0 %}
open
{% else %}
close
{% endif %}
"
position_template: "{{ state_attr('sensor.dingz_markise1_wohnzimmer_links_state', 'current')['blind']}}"
open_cover:
service: script.dingz_cover_move_generic
entity_id: cover.dingz_markise1_cover
data:
action: "up"
idx: 0
ip: !secret ip_dingz_markise1
force_entity1: sensor.dingz_markise1_state
force_entity2: sensor.dingz_markise1_wohnzimmer_links_state
close_cover:
service: script.dingz_cover_move_generic
entity_id: cover.dingz_markise1_cover
data:
action: "down"
idx: 0
ip: !secret ip_dingz_markise1
force_entity1: sensor.dingz_markise1_state
force_entity2: sensor.dingz_markise1_wohnzimmer_links_state
stop_cover:
service: script.dingz_cover_move_generic
entity_id: cover.dingz_markise1_cover
data:
action: "stop"
idx: 0
ip: !secret ip_dingz_markise1
force_entity1: sensor.dingz_markise1_state
force_entity2: sensor.dingz_markise1_wohnzimmer_links_state
set_cover_position:
service: script.dingz_cover_moveto_generic
entity_id: cover.dingz_markise1_cover
data:
position: "{{position}}"
lamella: 0
idx: 0
ip: !secret ip_dingz_markise1
force_entity1: sensor.dingz_markise1_state
force_entity2: sensor.dingz_markise1_wohnzimmer_links_state
In der Configuration.yaml fehlt dann natürlich noch folgendes
cover: !include covers.yaml