Tal como disse o @Maddoctor não é possível utilizar o hífen nos nomes dos dispositivos, sensores, etc. tal como não devem ser utilizadas letras maiúsculas.
MadBlinds v2 - Como Controlares os estores eléctricos e "estimares" a sua posição
Sou um nabo nisto…Obrigado. Tenho de alterar isso…quando chegar a casa trato disso e dou notícias.
@Calmeida
Imaginando que estás a usar um BHonofre com SSR de 2A, desaconselho vivamente que o ligues aos estores.
Se quiseres BHOnofre para estores tens de comprar a nova versão Rev5 com relés mecânicos de 5A. Não me lembro se o problema era estragar o onofre ou estragar o motor do estore, em qualquer dos casos eu não arriscava dado que são conhecidos alguns problemas.
Encomenda uns novos para os estores de 5A e usa esses para iluminação
@MadDoctor aqui fica uma imagem do module configuration. Tenho configurado o switchmode como 7.
https://1drv.ms/u/s!AhhTRQMupRdtg5UIQuRZVy7yc243RQ
Obrigado pela atenção.
Parece estar bem configurado, no entanto o interruptor aparece como ON… Estranho… Se calhar as ligações estão erradas no interruptor… Os fios do interruptor estão entre gpio e gnd ou gpio e 3.3?
@Maddoctor, muito obrigado pelo código! já consegui meter a funcionar. Ainda tive mais 2 problemas, no cover o no facto de ter primeiro o topic e depois o prefix, e como não consegui alterar isso, alterei o código.
Está impecável! obrigado a todos pela ajuda!
@MadDoctor as ligações estão tal como no tutorial… Muito obrigado pelo teu apoio…
@MadDoctor, obrigado pela dica, agora ficou a funcionar fixe. Muito obrigado pela tua paciência, atenção e compreensão… Forte abraço.
Boa noite,
Venho mais uma vez pedir ajuda de experts.
Depois de mais uns dias com este projeto parado, e depois de arranjar uns quantos shelly 2, estou a tentar utilizar o código fornecido pelo Rodolfo num shelly2 com a firmware original.
Já tentei várias vezes flashar o shelly2 com tasmota mas não consegui, então desisti e tentei outra abordagem.
Então, tudo funciona devidamente à exceção do pulsetime e do interlock que não sei como “ativar” e de não conseguir fazer com que o slider faça ativar os reles.
O slider mexe quando ativo cada um dos reles nos botões do HA, mas se mexer o slider, nada acontece; quando chega a 100% ou o 0% também não faz parar os reles (é suposto isso acontecer?)
Segue o código para se tiverem tempo para analisar e me dar algumas dicas…
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_sala:
name: tempo de maximo de abertura sala
initial: 35
tempodefecho_sala:
name: tempo de maximo de fecho sala
initial: 35
iniciofecho_sala:
name: iniciofecho sala
inicioabertura_sala:
name: inicioabertura sala
cover:
- platform: template
covers:
sala:
friendly_name: "sala"
position_template: '{{ states.input_number.abertura_sala.state }}'
open_cover:
- service: mqtt.publish
data:
topic: 'shellies/shellyswitch-13503C/relay/0/command'
payload: 'on'
close_cover:
- service: mqtt.publish
data:
topic: 'shellies/shellyswitch-13503C/relay/1/command'
payload: 'on'
stop_cover:
- service: mqtt.publish
data:
topic: 'shellies/shellyswitch-13503C/relay/0/command'
payload: 'off'
- service: mqtt.publish
data:
topic: 'shellies/shellyswitch-13503C/relay/1/command'
payload: 'off'
binary_sensor:
- platform: mqtt
name: rele_1_sala
state_topic: "shellies/shellyswitch-13503C/relay/0"
payload_on: "on"
payload_off: "off"
- platform: mqtt
name: rele_2_sala
state_topic: "shellies/shellyswitch-13503C/relay/1"
payload_on: "on"
payload_off: "off"
input_boolean:
alterarslider_sala:
name: Alterar o slider sala
initial: on
input_number:
abertura_sala:
name: Abertura sala
min: 0
max: 100
step: 1
unit_of_measurement: '%'
icon: mdi:blinds
abertura_salaold:
name: valor antigo de abertura sala
min: 0
max: 100
step: 1
unit_of_measurement: '%'
automation:
- id: iniciofecho_sala
alias: começou a fechar sala
initial_state: 'on'
trigger:
- platform: state
entity_id: binary_sensor.rele_2_sala
to: 'on'
action:
service: input_text.set_value
data_template:
entity_id: input_text.iniciofecho_sala
value: '{{ now() }}'
- id: fimfecho_sala
alias: parou de fechar sala
initial_state: 'on'
trigger:
- platform: state
entity_id: binary_sensor.rele_2_sala
to: 'off'
condition:
- condition: state
entity_id: 'input_boolean.alterarslider_sala'
state: 'on'
action:
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_salaold
value: >-
{% if (states.input_number.abertura_sala.state)|int - ((as_timestamp(now()) - (as_timestamp(states.input_text.iniciofecho_sala.state))|float|round(2))*100/(states.input_text.tempodefecho_sala.state|int))|int < 4 %}
0
{% else %}
{{ (states.input_number.abertura_sala.state)|int - ((as_timestamp(now()) - (as_timestamp(states.input_text.iniciofecho_sala.state))|float|round(2))*100/(states.input_text.tempodefecho_sala.state|int))|int }}
{% endif %}
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_sala
value: '{{ states.input_number.abertura_salaold.state }}'
- id: inicioabertura_sala
alias: começou a abrir sala
initial_state: 'on'
trigger:
- platform: state
entity_id: binary_sensor.rele_1_sala
to: 'on'
action:
service: input_text.set_value
data_template:
entity_id: input_text.inicioabertura_sala
value: '{{ now() }}'
- id: fimabertura_sala
alias: parou de abrir sala
initial_state: 'on'
trigger:
- platform: state
entity_id: binary_sensor.rele_1_sala
to: 'off'
condition:
- condition: state
entity_id: 'input_boolean.alterarslider_sala'
state: 'on'
action:
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_salaold
value: >-
{% if (states.input_number.abertura_sala.state)|int + ((as_timestamp(now()) - (as_timestamp(states.input_text.inicioabertura_sala.state))|float|round(2))*100/(states.input_text.tempodeabertura_sala.state|int))|int > 96 %}
100
{% else %}
{{ (states.input_number.abertura_sala.state)|int + ((as_timestamp(now()) - (as_timestamp(states.input_text.inicioabertura_sala.state))|float|round(2))*100/(states.input_text.tempodeabertura_sala.state|int))|int }}
{% endif %}
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_sala
value: '{{ states.input_number.abertura_salaold.state }}'
- id: aberturapeloslider_sala
alias: Abertura pelo slider sala
initial_state: 'on'
trigger:
platform: state
entity_id: input_number.abertura_sala
condition:
- condition: template
value_template: '{{ states.input_number.abertura_sala.state|int > states.input_number.abertura_salaold.state|int }}'
action:
- service: input_boolean.turn_off
data:
entity_id: input_boolean.alterarslider_sala
- service: mqtt.publish
data:
topic: 'shellies/shellyswitch-13503C/relay/0'
payload_template: "on; delay {% if is_state('input_number.abertura_sala', '100.0') %} {{ (((states.input_number.abertura_sala.state|int - states.input_number.abertura_salaold.state|int)*(states.input_text.tempodeabertura_sala.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
{{ (((states.input_number.abertura_sala.state|int - states.input_number.abertura_salaold.state|int)*(states.input_text.tempodeabertura_sala.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; off"
- delay:
milliseconds: 800
- wait_template: "{{ is_state('binary_sensor.rele_1_sala', 'off') }}"
- service: input_boolean.turn_on
data:
entity_id: input_boolean.alterarslider_sala
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_salaold
value: '{{ states.input_number.abertura_sala.state }}'
- id: fechopeloslider_sala
alias: Fecho pelo slider sala
initial_state: 'on'
trigger:
platform: state
entity_id: input_number.abertura_sala
condition:
- condition: template
value_template: '{{ states.input_number.abertura_sala.state|int < states.input_number.abertura_salaold.state|int }}'
action:
- service: input_boolean.turn_off
data:
entity_id: input_boolean.alterarslider_sala
- service: mqtt.publish
data:
topic: 'shellies/shellyswitch-13503C/relay/1'
payload_template: "on; delay {% if is_state('input_number.abertura_sala', '0.0') %} {{ (((states.input_number.abertura_salaold.state|int - states.input_number.abertura_sala.state|int)*(states.input_text.tempodefecho_sala.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
{{ (((states.input_number.abertura_salaold.state|int - states.input_number.abertura_sala.state|int)*(states.input_text.tempodefecho_sala.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; 'off'"
- delay:
milliseconds: 800
- wait_template: "{{ is_state('binary_sensor.rele_2_sala', 'off') }}"
- service: input_boolean.turn_on
data:
entity_id: input_boolean.alterarslider_sala
- service: input_number.set_value
data_template:
entity_id: input_number.abertura_salaold
value: '{{ states.input_number.abertura_sala.state }}'
Obrigado desde já pela ajuda, vou continuar a tentar e explorar. Se conseguir algum avanço logo aviso.
Cover - Estores
Quanto ao resto não sei, mas sem o pulsetime os relés não vão parar ao fim de X tempo.
Esse código foi feito para trabalhar com tasmota, se não estás a usar tasmota podes ter de adaptar alguma coisa.
Qual é o problema a flashar o shelly2?
Uma mensagem foi dividida em um novo tópico: Como ‘flashar’ o Shelly2
Viva, experimentei hoje o shelly2 nos meus estores e funcionou muito bem. A calibração (feita na aplicação deles) é essencial para o processo.
Para usares o firmware original (como eu), não te esqueças de atualizar para a última versão que tem melhorias significativas.
Tenho aqui o código que está a funcionar no meu caso: