Como criar um cover para estores com indicação e controlo da percentagem de abertura aproximada [DESACTUALIZADO]

Já consegui meter o código a correr e funciona bem. Vou testar agora com o package. Mais duas questões:
1ª Quando está a funcionar reparo que a seta para baixo fica cinzenta quando está a ser usada mas a seta para cima não muda de cor quando usada. É mesmo assim?
2ª Como posso agrupar a persiana com o slider na mesma janela?

Obrigado

Em princípio as setas ficam inactivas quando o estore está totalmente fechado ou totalmente aberto…
Para as agrupares na mesma janela deves pôr as entidades cover e slider no mesmo grupo…

Viva.
Não consigo por as setas a trabalhar direito. o tempo de abertura e fecho , tudo ok , de resto não consigo saber se a persiana está totalmente em cima ou em baixo

E como tens a configuração do estore e do grupo?

Boa noite
Vou então pedir uma ajudinha a alguem que há 2 semanas se meteu nisto e anda um bocado às aranhas a tentar por estores a trabalhar direitinho.
O problema tal como disse anteriormente é que faço subir ou descer as persianas e não consigo ter a percentagem na qual ficou. Se estiver no zero, consigo fazer subir com a seta que está a preto e a persiana sobe o tempo que lhe indiquei e desliga o relé, mas a percentagem mantem-se no zero. Se virar a barra para os 100%, aí as setas mudam de cor e consigo baixar, mas quando baixa totalmente desliga o relé mas a percentagem mantem-se nos 100%.
Acho que me expliquei direito.

Deixo aqui o código tal como ele está agora.
agradecia que alguem me disse-se o que está mal, até para eu corrigir a das outras persianas

group:
  
  quarto:
    view: yes
    name: quarto
    entities:
      - group.quartogrupo

  quartogrupo:
    control: hidden
    name: Quarto
    entities:
      - input_number.aberturapersianaquarto
      - cover.persianaquarto

input_text:
#Alterar "inicial" para o valor em segundos que o estore demora a abrir desde a posição fechada e vice-versa nos input_text tempodeabertura e tempodefecho.
  tempodeaberturaquarto:
    name: tempo de maximo de abertura
    initial: 22
  tempodefechoquarto:
    name: tempo de maximo de fecho
    initial: 22
  iniciofechoquarto:
    name: iniciofecho
  inicioaberturaquarto:
    name: inicioabertura

cover:
  - platform: template
    covers:
      persianaquarto:
        friendly_name: "Persiana Quarto"
        position_template: '{{ states.input_number.aberturapersianaquarto.state }}'
        open_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/persianaq/POWER1'
              payload: 'ON'
        close_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/persianaq/POWER2'
              payload: 'ON'
        stop_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/persianaq/Backlog'
              payload: 'POWER1 OFF; POWER2 OFF'

binary_sensor:
  - platform: mqtt
    name: rele 1
    state_topic: "stat/persianaq/POWER1"
    payload_on: "ON"
    payload_off: "OFF"
  - platform: mqtt
    name: rele 2
    state_topic: "stat/persianaq/POWER2"
    payload_on: "ON"
    payload_off: "OFF"

input_boolean:
  alterarsliderquarto:
    name: Alterar o slider quarto
    initial: on

input_number:
  aberturapersianaquarto:
    name: Abertura
    min: 0
    max: 100
    step: 1
    unit_of_measurement: '%'
    icon: mdi:blinds
  aberturapersianaquartoold:
    name: valor antigo de abertura
    min: 0
    max: 100
    step: 1
    unit_of_measurement: '%'

automation:
  - id: iniciofecho
    alias: começou a fechar
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_2
      to: 'on'
    action:
      service: input_text.set_value
      data_template:
        entity_id: input_text.iniciofecho
        value: '{{ now() }}'
  - id: fimfecho
    alias: parou de fechar
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_2
      to: 'off'
    condition:
    - condition: state
      entity_id: 'input_boolean.alterarsliderquarto'
      state: 'on'
    action:
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: >-
          {% if (states.input_number.aberturapersianaquarto.state)|int - ((as_timestamp(now()) - (as_timestamp(states.input_text.iniciofecho.state))|float|round(2))*100/(states.input_text.tempodefecho.state|int))|int < 4 %}
            0
          {% else %}
            {{ (states.input_number.aberturapersianaquarto.state)|int - ((as_timestamp(now()) - (as_timestamp(states.input_text.iniciofecho.state))|float|round(2))*100/(states.input_text.tempodefecho.state|int))|int }}
          {% endif %}
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquarto
        value: '{{ states.input_number.aberturapersianaquartoold.state }}'
  - id: inicioabertura
    alias: começou a abrir
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_1
      to: 'on'
    action:
      service: input_text.set_value
      data_template:
        entity_id: input_text.inicioabertura
        value: '{{ now() }}'
  - id: fimabertura
    alias: parou de abrir
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_1
      to: 'off'
    condition:
    - condition: state
      entity_id: 'input_boolean.alterarslider'
      state: 'on'
    action:
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: >-
          {% if (states.input_number.aberturapersianaquarto.state)|int + ((as_timestamp(now()) - (as_timestamp(states.input_text.inicioabertura.state))|float|round(2))*100/(states.input_text.tempodeabertura.state|int))|int > 96 %}
            100
          {% else %}
            {{ (states.input_number.aberturapersianaquarto.state)|int + ((as_timestamp(now()) - (as_timestamp(states.input_text.inicioabertura.state))|float|round(2))*100/(states.input_text.tempodeabertura.state|int))|int }}
          {% endif %}
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquarto
        value: '{{ states.input_number.aberturapersianaquartoold.state }}'

  - id: aberturapeloslider
    alias: Abertura pelo slider
    trigger:
      platform: state
      entity_id: input_number.aberturapersianaquarto
    condition:
    - condition: template
      value_template: '{{ states.input_number.aberturapersianaquarto.state|int > states.input_number.aberturapersianaquartoold.state|int }}'
    action:
    - service: input_boolean.turn_off
      data:
        entity_id: input_boolean.alterarslider
    - service: mqtt.publish
      data:
        topic: 'cmnd/persianaq/Backlog'
        payload_template: "POWER1 ON; delay {% if is_state('input_number.aberturapersianaquarto', '100.0') %} {{ (((states.input_number.aberturapersianaquarto.state|int - states.input_number.aberturapersianaquartoold.state|int)*(states.input_text.tempodeabertura.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
{{ (((states.input_number.aberturapersianaquarto.state|int - states.input_number.aberturapersianaquartoold.state|int)*(states.input_text.tempodeabertura.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; POWER1 OFF"
    - delay:
        milliseconds: 800
    - wait_template: "{{ is_state('binary_sensor.rele_1', 'off') }}"
    - service: input_boolean.turn_on
      data:
        entity_id: input_boolean.alterarslider
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: '{{ states.input_number.aberturapersianaquarto.state }}'
  - id: fechopeloslider
    alias: Fecho pelo slider
    trigger:
      platform: state
      entity_id: input_number.aberturapersianaquarto
    condition:
    - condition: template
      value_template: '{{ states.input_number.aberturapersianaquarto.state|int < states.input_number.aberturapersianaquartoold.state|int }}'
    action:
    - service: input_boolean.turn_off
      data:
        entity_id: input_boolean.alterarslider
    - service: mqtt.publish
      data:
        topic: 'cmnd/persianaq/Backlog'
        payload_template: "POWER2 ON; delay {% if is_state('input_number.aberturapersianaquarto', '0.0') %} {{ (((states.input_number.aberturapersianaquartoold.state|int - states.input_number.aberturapersianaquarto.state|int)*(states.input_text.tempodefecho.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
{{ (((states.input_number.aberturapersianaquartoold.state|int - states.input_number.aberturapersianaquarto.state|int)*(states.input_text.tempodefecho.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; POWER2 OFF"
    - delay:
        milliseconds: 800
    - wait_template: "{{ is_state('binary_sensor.rele_2', 'off') }}"
    - service: input_boolean.turn_on
      data:
        entity_id: input_boolean.alterarslider
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: '{{ states.input_number.aberturapersianaquarto.state }}'

Obrigado por tudo

@Maddoctor é o homem mais certo para te ajudar neste tema. aguarda até ele ler.

Nas automações, não alteraste input_boolean.alterarslider para input_boolean.alterarsliderquarto…

Assim de repente é esse o erro. Pode haver outros, mas para já testa assim…

1 Curtiu

Vou testar e depois comento.
Muito obrigado

Bem fiz o teste e ficou igual
agora está assim

group:
  
  quarto:
    view: yes
    name: quarto
    entities:
      - group.quartogrupo

  quartogrupo:
    control: hidden
    name: Quarto
    entities:
      - input_number.aberturapersianaquarto
      - cover.persianaquarto

input_text:
#Alterar "inicial" para o valor em segundos que o estore demora a abrir desde a posição fechada e vice-versa nos input_text tempodeabertura e tempodefecho.
  tempodeaberturaquarto:
    name: tempo de maximo de abertura
    initial: 15
  tempodefechoquarto:
    name: tempo de maximo de fecho
    initial: 15
  iniciofechoquarto:
    name: iniciofecho
  inicioaberturaquarto:
    name: inicioabertura

cover:
  - platform: template
    covers:
      persianaquarto:
        friendly_name: "Persiana Quarto"
        position_template: '{{ states.input_number.aberturapersianaquarto.state }}'
        open_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/persianaq/POWER1'
              payload: 'ON'
        close_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/persianaq/POWER2'
              payload: 'ON'
        stop_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/persianaq/Backlog'
              payload: 'POWER1 OFF; POWER2 OFF'

binary_sensor:
  - platform: mqtt
    name: rele 1
    state_topic: "stat/persianaq/POWER1"
    payload_on: "ON"
    payload_off: "OFF"
  - platform: mqtt
    name: rele 2
    state_topic: "stat/persianaq/POWER2"
    payload_on: "ON"
    payload_off: "OFF"

input_boolean:
  alterarsliderquarto:
    name: Alterar o slider quarto
    initial: on

input_number:
  aberturapersianaquarto:
    name: Abertura
    min: 0
    max: 100
    step: 1
    unit_of_measurement: '%'
    icon: mdi:blinds
  aberturapersianaquartoold:
    name: valor antigo de abertura
    min: 0
    max: 100
    step: 1
    unit_of_measurement: '%'

automation:
  - id: iniciofecho
    alias: começou a fechar
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_2
      to: 'on'
    action:
      service: input_text.set_value
      data_template:
        entity_id: input_text.iniciofecho
        value: '{{ now() }}'
  - id: fimfecho
    alias: parou de fechar
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_2
      to: 'off'
    condition:
    - condition: state
      entity_id: 'input_boolean.alterarsliderquarto'
      state: 'on'
    action:
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: >-
          {% if (states.input_number.aberturapersianaquarto.state)|int - ((as_timestamp(now()) - (as_timestamp(states.input_text.iniciofecho.state))|float|round(2))*100/(states.input_text.tempodefecho.state|int))|int < 4 %}
            0
          {% else %}
            {{ (states.input_number.aberturapersianaquarto.state)|int - ((as_timestamp(now()) - (as_timestamp(states.input_text.iniciofecho.state))|float|round(2))*100/(states.input_text.tempodefecho.state|int))|int }}
          {% endif %}
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquarto
        value: '{{ states.input_number.aberturapersianaquartoold.state }}'
  - id: inicioabertura
    alias: começou a abrir
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_1
      to: 'on'
    action:
      service: input_text.set_value
      data_template:
        entity_id: input_text.inicioabertura
        value: '{{ now() }}'
  - id: fimabertura
    alias: parou de abrir
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_1
      to: 'off'
    condition:
    - condition: state
      entity_id: 'input_boolean.alterarsliderquarto'
      state: 'on'
    action:
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: >-
          {% if (states.input_number.aberturapersianaquarto.state)|int + ((as_timestamp(now()) - (as_timestamp(states.input_text.inicioabertura.state))|float|round(2))*100/(states.input_text.tempodeabertura.state|int))|int > 96 %}
            100
          {% else %}
            {{ (states.input_number.aberturapersianaquarto.state)|int + ((as_timestamp(now()) - (as_timestamp(states.input_text.inicioabertura.state))|float|round(2))*100/(states.input_text.tempodeabertura.state|int))|int }}
          {% endif %}
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquarto
        value: '{{ states.input_number.aberturapersianaquartoold.state }}'

  - id: aberturapeloslider
    alias: Abertura pelo slider
    trigger:
      platform: state
      entity_id: input_number.aberturapersianaquarto
    condition:
    - condition: template
      value_template: '{{ states.input_number.aberturapersianaquarto.state|int > states.input_number.aberturapersianaquartoold.state|int }}'
    action:
    - service: input_boolean.turn_off
      data:
        entity_id: input_boolean.alterarsliderquarto
    - service: mqtt.publish
      data:
        topic: 'cmnd/persianaq/Backlog'
        payload_template: "POWER1 ON; delay {% if is_state('input_number.aberturapersianaquarto', '100.0') %} {{ (((states.input_number.aberturapersianaquarto.state|int - states.input_number.aberturapersianaquartoold.state|int)*(states.input_text.tempodeabertura.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
{{ (((states.input_number.aberturapersianaquarto.state|int - states.input_number.aberturapersianaquartoold.state|int)*(states.input_text.tempodeabertura.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; POWER1 OFF"
    - delay:
        milliseconds: 800
    - wait_template: "{{ is_state('binary_sensor.rele_1', 'off') }}"
    - service: input_boolean.turn_on
      data:
        entity_id: input_boolean.alterarsliderquarto
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: '{{ states.input_number.aberturapersianaquarto.state }}'
  - id: fechopeloslider
    alias: Fecho pelo slider
    trigger:
      platform: state
      entity_id: input_number.aberturapersianaquarto
    condition:
    - condition: template
      value_template: '{{ states.input_number.aberturapersianaquarto.state|int < states.input_number.aberturapersianaquartoold.state|int }}'
    action:
    - service: input_boolean.turn_off
      data:
        entity_id: input_boolean.alterarsliderquarto
    - service: mqtt.publish
      data:
        topic: 'cmnd/persianaq/Backlog'
        payload_template: "POWER2 ON; delay {% if is_state('input_number.aberturapersianaquarto', '0.0') %} {{ (((states.input_number.aberturapersianaquartoold.state|int - states.input_number.aberturapersianaquarto.state|int)*(states.input_text.tempodefecho.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
{{ (((states.input_number.aberturapersianaquartoold.state|int - states.input_number.aberturapersianaquarto.state|int)*(states.input_text.tempodefecho.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; POWER2 OFF"
    - delay:
        milliseconds: 800
    - wait_template: "{{ is_state('binary_sensor.rele_2', 'off') }}"
    - service: input_boolean.turn_on
      data:
        entity_id: input_boolean.alterarsliderquarto
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: '{{ states.input_number.aberturapersianaquarto.state }}'

Reiniciaste o home assistant? Ou apenas escolheste reiniciar automações?
Os ficheiros package não são recarregado se não reiniciares o home assistant…
Verifica também que estas automações estejam todas activas…

reiniciei tudo .
qual são as automações que devem estar activas ??

As que fazem parte do package…

eu quando clico em automação aparece

Escolha a automação a editar

Clicando em qualquer uma delas, nada aparece… é normal ??

Estando num package, não aparece…

A questão aqui é que ele respeita os tempos, mas chegando ao final, a 100 ou 0% nada altera na percentagem nem no slider.
Nunca consigo saber em que estado está a persiana.

Já agora… os addons tem interferencia ?? é preciso alguma coisa?

Provavelmente essas automações estão desactivadas…
Activa-as ou, para evitar que aconteça, acrescenta em cada uma initial_state: 'on’
E depois reinicia…

pergunta estupida … Activo-as … onde ??

Na linha logo a seguir a Automation ?

Se não as tiveres em nenhum sítio do teu UI, tens de as pôr:
No customize.yaml, pões:

group.all_automations:
  hidden: false

Depois colocas o grupo group.all_automations no UI…

extra keys not allowed @ data[‘customize’][‘Group’]

é o que me aparece quando faço a validação

Faltava-te alterar o nome das entidades em vários locais… No tutorial está o alerta de que deve ser usada a função de substituição de texto dos editores, para que isso não aconteça…
Em princípio assim já deve estar bem (acrescentei ao grupo o estado dos relés):

group:
  quarto:
    view: yes
    name: quarto
    entities:
      - group.quartogrupo

  quartogrupo:
    control: hidden
    name: Quarto
    entities:
      - input_number.aberturapersianaquarto
      - cover.persianaquarto
      - binary_sensor.rele_1
      - binary_sensor.rele_2

input_text:
#Alterar "inicial" para o valor em segundos que o estore demora a abrir desde a posição fechada e vice-versa nos input_text tempodeabertura e tempodefecho.
  tempodeaberturaquarto:
    name: tempo de maximo de abertura
    initial: 15
  tempodefechoquarto:
    name: tempo de maximo de fecho
    initial: 15
  iniciofechoquarto:
    name: iniciofecho
  inicioaberturaquarto:
    name: inicioabertura

cover:
  - platform: template
    covers:
      persianaquarto:
        friendly_name: "Persiana Quarto"
        position_template: '{{ states.input_number.aberturapersianaquarto.state }}'
        open_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/persianaq/POWER1'
              payload: 'ON'
        close_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/persianaq/POWER2'
              payload: 'ON'
        stop_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/persianaq/Backlog'
              payload: 'POWER1 OFF; POWER2 OFF'

binary_sensor:
  - platform: mqtt
    name: rele 1
    state_topic: "stat/persianaq/POWER1"
    payload_on: "ON"
    payload_off: "OFF"
  - platform: mqtt
    name: rele 2
    state_topic: "stat/persianaq/POWER2"
    payload_on: "ON"
    payload_off: "OFF"

input_boolean:
  alterarsliderquarto:
    name: Alterar o slider quarto
    initial: on

input_number:
  aberturapersianaquarto:
    name: Abertura
    min: 0
    max: 100
    step: 1
    unit_of_measurement: '%'
    icon: mdi:blinds
  aberturapersianaquartoold:
    name: valor antigo de abertura
    min: 0
    max: 100
    step: 1
    unit_of_measurement: '%'

automation:
  - id: iniciofecho
    alias: começou a fechar
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_2
      to: 'on'
    action:
      service: input_text.set_value
      data_template:
        entity_id: input_text.iniciofechoquarto
        value: '{{ now() }}'
  - id: fimfecho
    alias: parou de fechar
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_2
      to: 'off'
    condition:
    - condition: state
      entity_id: input_boolean.alterarsliderquarto
      state: 'on'
    action:
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: >-
          {% if (states.input_number.aberturapersianaquarto.state)|int - ((as_timestamp(now()) - (as_timestamp(states.input_text.iniciofechoquarto.state))|float|round(2))*100/(states.input_text.tempodefechoquarto.state|int))|int < 4 %}
            0
          {% else %}
            {{ (states.input_number.aberturapersianaquarto.state)|int - ((as_timestamp(now()) - (as_timestamp(states.input_text.iniciofechoquarto.state))|float|round(2))*100/(states.input_text.tempodefechoquarto.state|int))|int }}
          {% endif %}
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquarto
        value: '{{ states.input_number.aberturapersianaquartoold.state }}'
  - id: inicioabertura
    alias: começou a abrir
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_1
      to: 'on'
    action:
      service: input_text.set_value
      data_template:
        entity_id: input_text.inicioaberturaquarto
        value: '{{ now() }}'
  - id: fimabertura
    alias: parou de abrir
    trigger:
    - platform: state
      entity_id: binary_sensor.rele_1
      to: 'off'
    condition:
    - condition: state
      entity_id: 'input_boolean.alterarsliderquarto'
      state: 'on'
    action:
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: >-
          {% if (states.input_number.aberturapersianaquarto.state)|int + ((as_timestamp(now()) - (as_timestamp(states.input_text.inicioaberturaquarto.state))|float|round(2))*100/(states.input_text.tempodeaberturaquarto.state|int))|int > 96 %}
            100
          {% else %}
            {{ (states.input_number.aberturapersianaquarto.state)|int + ((as_timestamp(now()) - (as_timestamp(states.input_text.inicioaberturaquarto.state))|float|round(2))*100/(states.input_text.tempodeaberturaquarto.state|int))|int }}
          {% endif %}
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquarto
        value: '{{ states.input_number.aberturapersianaquartoold.state }}'

  - id: aberturapeloslider
    alias: Abertura pelo slider
    trigger:
      platform: state
      entity_id: input_number.aberturapersianaquarto
    condition:
    - condition: template
      value_template: '{{ states.input_number.aberturapersianaquarto.state|int > states.input_number.aberturapersianaquartoold.state|int }}'
    action:
    - service: input_boolean.turn_off
      data:
        entity_id: input_boolean.alterarsliderquarto
    - service: mqtt.publish
      data:
        topic: 'cmnd/persianaq/Backlog'
        payload_template: "POWER1 ON; delay {% if is_state('input_number.aberturapersianaquarto', '100.0') %} {{ (((states.input_number.aberturapersianaquarto.state|int - states.input_number.aberturapersianaquartoold.state|int)*(states.input_text.tempodeaberturaquarto.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
{{ (((states.input_number.aberturapersianaquarto.state|int - states.input_number.aberturapersianaquartoold.state|int)*(states.input_text.tempodeaberturaquarto.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; POWER1 OFF"
    - delay:
        milliseconds: 800
    - wait_template: "{{ is_state('binary_sensor.rele_1', 'off') }}"
    - service: input_boolean.turn_on
      data:
        entity_id: input_boolean.alterarsliderquarto
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: '{{ states.input_number.aberturapersianaquarto.state }}'
  - id: fechopeloslider
    alias: Fecho pelo slider
    trigger:
      platform: state
      entity_id: input_number.aberturapersianaquarto
    condition:
    - condition: template
      value_template: '{{ states.input_number.aberturapersianaquarto.state|int < states.input_number.aberturapersianaquartoold.state|int }}'
    action:
    - service: input_boolean.turn_off
      data:
        entity_id: input_boolean.alterarsliderquarto
    - service: mqtt.publish
      data:
        topic: 'cmnd/persianaq/Backlog'
        payload_template: "POWER2 ON; delay {% if is_state('input_number.aberturapersianaquarto', '0.0') %} {{ (((states.input_number.aberturapersianaquartoold.state|int - states.input_number.aberturapersianaquarto.state|int)*(states.input_text.tempodefechoquarto.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
{{ (((states.input_number.aberturapersianaquartoold.state|int - states.input_number.aberturapersianaquarto.state|int)*(states.input_text.tempodefechoquarto.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; POWER2 OFF"
    - delay:
        milliseconds: 800
    - wait_template: "{{ is_state('binary_sensor.rele_2', 'off') }}"
    - service: input_boolean.turn_on
      data:
        entity_id: input_boolean.alterarsliderquarto
    - service: input_number.set_value
      data_template:
        entity_id: input_number.aberturapersianaquartoold
        value: '{{ states.input_number.aberturapersianaquarto.state }}'

Depois dá feedback

Continua igual, ou muito similar. Aquilo que agora se consegue ver é que no UI do HA quando o rele atraca fica assinalado a amarelo e a dizer que está ligado, mas quando desatraca ou seja chega ao final ou desligamos fica sempre como se ligado estivesse.


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade