mais uma pequena correcção de bugs para ligar com possíveis delays de comunicação (a mudança foi apenas nas automações)…
Actualizem os códigos
Mais uma alteração. Agora deve ser a última… Actualizem!
Tenho umas perguntas de maçarico.
O FW que está instalado é o tasmota, certo ?
O Sonoff deve ser configurado como wemo
O nome que foi dado ao SONOFF DUAL foi “wemosd1mini” ?
@andrefilipecruz o tópico mais actualizado para este assunto está aqui:
Onde tens passo a passo como fazer. Alguma dúvida questiona .
Boa noite. Sou novo nestas andanças. Já tenho o sonoff r2 configurado noentanto tenho erros nesse código. Esse código coloca-se integralmente no configuration.yaml?
Obrigado
O código é para ser usado num ficheiro package. Podes ver como utilizar aqui:
Se não quiseres/puderes utilizar como package, podes dividir o código pelos vários ficheiros correspondentes (caso uses a configuração distribuída por vários ficheiros) ou colocar tudo no configuration.yaml
.
Que erros dá? Transcreve essa parte do log…
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
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…
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…