Sim, estão todas ligadas, perguntei porque como tem o slider podia não ter esta opção.
Mas nos vossos está a funcionar?
O madblinds é um código extenso com um conjunto de automações. Sem ver é difícil perceber o que está a falhar.
Se queres simplificar, opta pelo fork do tasmota do stefanbode. Já tem toda a parte de posicionamento e controlo incluída no firmware
Boas, já tenho o tasmota do Stefanbode num sonoff que tenho de reserva e não vi nenhuma diferença em relação ao original.
Que programação tens no HA?
ao usar o código do MAdBlinds, todo o calculo e automação é feito do lado do HA. Com o do stefanbode basta enviar um tópico mqtt com a posição que queres e ele vai para lá (depois de configurares os timers de acordo com o que está no git dele)
Config no HA:
cover:
- platform: mqtt
name: "Living Room Blinds"
availability_topic: "tele/living_blinds/LWT"
payload_available: "Online"
payload_not_available: "Offline"
position_topic: stat/living_blinds/SHUTTER1
position_open: 100
position_closed: 0
set_position_topic: "cmnd/living_blinds/shutterposition"
command_topic: "cmnd/living_blinds/backlog"
payload_open: "SHUTTEROPEN"
payload_close: "SHUTTERCLOSE"
payload_stop: "SHUTTERSTOP"
retain: false
optimistic: false
qos: 1
De resto o slider vem incluído, portanto logo aí tens menos umas automações.
Onde devo colocar o ficheiros estores.yaml? Numa pasta chamada “packages”?
Como adiciono os vários estores? Crio um ficheio para cada estore/sonoff?
Estou a receber a mensagem de erro quando faço check config:
Configuração inválida
VERIFICAR A CONFIGURAÇÃO
Integration not found: packages
Por favor usa a função de procura, como indicado nas regras do fórum… Tens resposta a todas as tuas perguntas em tópicos prévios e tutoriais…
Já conclui o que tinha errado. Não tinha o include packages dentro do homeassistant:
Agora não consigo adicionar o botão no frontend do HA. Falta alguma coisa?
Agora usas o Lovelace UI para adicionares o que quiseres.
E qual é a opção correta para colocar o botão de estore com cima baixo e stop e a barra como mostra no tópico inicial?
A opção setoption14 deixou de existir e agora chama-se interlock, se quiserem actualizar o tutorial.
o botão do estore, basta colocares a entity cover.oquefor
a barra, basta colocares a entity input_number.aberturapersiana_oquefor
Obrigado pela resposta. Quando coloco assim da forma que disseste realmente o card fica direitinho mas não funciona.
Se butões como switches funciona impecável. Não sei o que me está a escapar.
Tens de explicar melhor… que config tens no Lovelace? Coloca aqui o conteúdo do package…
O texto do package está justamente como está descrito no tutorial, pelo menos eu penso que sim.
Os estores funcionam como switches onde posso activar e desligar o relé 1 e 2 individualmente.
Mas quando coloco como entities ou com o slider nada acontece.
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.
tempodeabertura_estore_wc:
name: tempo de maximo de abertura estore_wc
initial: 30
tempodefecho_estore_wc:
name: tempo de maximo de fecho estore_wc
initial: 30
iniciofecho_estore_wc:
name: iniciofecho estore_wc
inicioabertura_estore_wc:
name: inicioabertura estore_wc
cover:
- platform: template
covers:
estore_wc:
friendly_name: "estore_wc"
position_template: '{{ states.input_number.abertura_estore_wc.state }}'
open_cover:
- service: mqtt.publish
data:
topic: 'cmnd/estore_wc/POWER1'
payload: 'ON'
close_cover:
- service: mqtt.publish
data:
topic: 'cmnd/estore_wc/POWER2'
payload: 'ON'
stop_cover:
- service: mqtt.publish
data:
topic: 'cmnd/estore_wc/Backlog'
payload: 'POWER1 OFF; POWER2 OFF'
binary_sensor:
- platform: mqtt
name: rele_1_estore_wc
state_topic: "stat/estore_wc/POWER1"
payload_on: "ON"
payload_off: "OFF"
- platform: mqtt
name: rele_2_estore_wc
state_topic: "stat/estore_wc/POWER2"
payload_on: "ON"
payload_off: "OFF"
input_boolean:
alterarslider_estore_wc:
name: Alterar o slider estore_wc
initial: on
input_number:
abertura_estore_wc:
name: Abertura estore_wc
min: 0
max: 100
step: 1
unit_of_measurement: '%'
icon: mdi:blinds
abertura_estore_wcold:
name: valor antigo de abertura estore_wc
min: 0
max: 100
step: 1
unit_of_measurement: '%'
automation:
- id: iniciofecho_estore_wc
alias: começou a fechar estore_wc
initial_state: 'on'
trigger:
- platform: state
entity_id: binary_sensor.rele_2_estore_wc
to: 'on'
action:
service: input_text.set_value
data_template:
entity_id: input_text.iniciofecho_estore_wc
value: '{{ now() }}'
- id: fimfecho_estore_wc
alias: parou de fechar estore_wc
initial_state: 'on'
trigger:
- platform: state
entity_id: binary_sensor.rele_2_estore_wc
to: 'off'
condition:
- condition: state
entity_id: 'input_boolean.alterarslider_estore_wc'
state: 'on'
action:
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_estore_wcold
value: >-
{% if (states.input_number.abertura_estore_wc.state)|int - ((as_timestamp(now()) - (as_timestamp(states.input_text.iniciofecho_estore_wc.state))|float|round(2))*100/(states.input_text.tempodefecho_estore_wc.state|int))|int < 4 %}
0
{% else %}
{{ (states.input_number.abertura_estore_wc.state)|int - ((as_timestamp(now()) - (as_timestamp(states.input_text.iniciofecho_estore_wc.state))|float|round(2))*100/(states.input_text.tempodefecho_estore_wc.state|int))|int }}
{% endif %}
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_estore_wc
value: '{{ states.input_number.abertura_estore_wcold.state }}'
- id: inicioabertura_estore_wc
alias: começou a abrir estore_wc
initial_state: 'on'
trigger:
- platform: state
entity_id: binary_sensor.rele_1_estore_wc
to: 'on'
action:
service: input_text.set_value
data_template:
entity_id: input_text.inicioabertura_estore_wc
value: '{{ now() }}'
- id: fimabertura_estore_wc
alias: parou de abrir estore_wc
initial_state: 'on'
trigger:
- platform: state
entity_id: binary_sensor.rele_1_estore_wc
to: 'off'
condition:
- condition: state
entity_id: 'input_boolean.alterarslider_estore_wc'
state: 'on'
action:
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_estore_wcold
value: >-
{% if (states.input_number.abertura_estore_wc.state)|int + ((as_timestamp(now()) - (as_timestamp(states.input_text.inicioabertura_estore_wc.state))|float|round(2))*100/(states.input_text.tempodeabertura_estore_wc.state|int))|int > 96 %}
100
{% else %}
{{ (states.input_number.abertura_estore_wc.state)|int + ((as_timestamp(now()) - (as_timestamp(states.input_text.inicioabertura_estore_wc.state))|float|round(2))*100/(states.input_text.tempodeabertura_estore_wc.state|int))|int }}
{% endif %}
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_estore_wc
value: '{{ states.input_number.abertura_estore_wcold.state }}'
- id: aberturapeloslider_estore_wc
alias: Abertura pelo slider estore_wc
initial_state: 'on'
trigger:
platform: state
entity_id: input_number.abertura_estore_wc
condition:
- condition: template
value_template: '{{ states.input_number.abertura_estore_wc.state|int > states.input_number.abertura_estore_wcold.state|int }}'
action:
- service: input_boolean.turn_off
data:
entity_id: input_boolean.alterarslider_estore_wc
- service: mqtt.publish
data:
topic: 'cmnd/estore_wc/Backlog'
payload_template: "POWER1 ON; delay {% if is_state('input_number.abertura_estore_wc', '100.0') %} {{ (((states.input_number.abertura_estore_wc.state|int - states.input_number.abertura_estore_wcold.state|int)*(states.input_text.tempodeabertura_estore_wc.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
{{ (((states.input_number.abertura_estore_wc.state|int - states.input_number.abertura_estore_wcold.state|int)*(states.input_text.tempodeabertura_estore_wc.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; POWER1 OFF"
- delay:
milliseconds: 800
- wait_template: "{{ is_state('binary_sensor.rele_1_estore_wc', 'off') }}"
- service: input_boolean.turn_on
data:
entity_id: input_boolean.alterarslider_estore_wc
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_estore_wcold
value: '{{ states.input_number.abertura_estore_wc.state }}'
- id: fechopeloslider_estore_wc
alias: Fecho pelo slider estore_wc
initial_state: 'on'
trigger:
platform: state
entity_id: input_number.abertura_estore_wc
condition:
- condition: template
value_template: '{{ states.input_number.abertura_estore_wc.state|int < states.input_number.abertura_estore_wcold.state|int }}'
action:
- service: input_boolean.turn_off
data:
entity_id: input_boolean.alterarslider_estore_wc
- service: mqtt.publish
data:
topic: 'cmnd/estore_wc/Backlog'
payload_template: "POWER2 ON; delay {% if is_state('input_number.abertura_estore_wc', '0.0') %} {{ (((states.input_number.abertura_estore_wcold.state|int - states.input_number.abertura_estore_wc.state|int)*(states.input_text.tempodefecho_estore_wc.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
{{ (((states.input_number.abertura_estore_wcold.state|int - states.input_number.abertura_estore_wc.state|int)*(states.input_text.tempodefecho_estore_wc.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; POWER2 OFF"
- delay:
milliseconds: 800
- wait_template: "{{ is_state('binary_sensor.rele_2_estore_wc', 'off') }}"
- service: input_boolean.turn_on
data:
entity_id: input_boolean.alterarslider_estore_wc
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_estore_wcold
value: '{{ states.input_number.abertura_estore_wc.state }}'
Colocaste no lovelace as seguintes entities?
cover.estore_wc e input_number.abertura_estore_wc?
- entities:
- entity: cover.estore_wc
- entity: input_number.abertura_estore_sala
title: WC
type: entities
show_header_toggle: false
theme: default
Já descobri o problema:
no teu código o tópico de mqtt é cmnd/oquefor/POWER1 mas por alguma razão nos meus sonoff o que eles publicam é oquefor/cmnd/POWER1
estore sala?!?! isso não devia ser WC?
Se os teus sonoff publicam assim foi porque mudaste…
Sim, no codigo em cima está errado o botão. Realmente não tenho noção de ter mudado a forma como os sonoff publicam, mas pode ter acontecido. O que interessa é que agora já funciona e posso configurar os restantes.
Obrigado pela ajuda.
PS. Está descrito como issue a troca do tópico e do prefix desde a versa 5 penso eu.
Não… A partir dessa versão passou a ser possível mudar e, provavelmente, foi o que fizeste, porque “de base” continua a vir igual…
Ok. Obrigado pela ajuda.
E do interlock ou do setoption14 ja verificaste qual a opção correta?