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