MadBlinds v2 - Como Controlares os estores eléctricos e "estimares" a sua posição


(Nuno Neves) #82

Tenta o seguinte:

cover:
  - platform: template
    covers:
      sala:
        friendly_name: "sala"
        position_template: '{{ states.input_number.abertura_sala.state }}'
        open_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/casa/sala/persiana1up/power'
              payload: 'ON'
        close_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/casa/sala/persiana1down/power'
              payload: 'ON'
        stop_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/casa/sala/perisana1up/POWER'
              payload: 'OFF'
          - service: mqtt.publish
            data:
              topic: 'cmnd/casa/sala/perisana1down/POWER'
              payload: 'OFF'

(Ricardo Ferreira) #83

Obrigado pela dica, mas já tentei e não funcionou.
Entretanto fiz um reset aos sonnofs pois podia haver algum conflito, mas nem assim ficou a funcionar.
Experimentei também com:
stop_cover:
- service: mqtt.publish
data:
topic: ‘cmnd/casa/sala/perisana1up/Backlog’
payload: ‘POWER OFF’
- service: mqtt.publish
data:
topic: ‘cmnd/casa/sala/perisana1down/Backlog’
payload: ‘POWER OFF’
e não surtiu nenhum efeito.
No mqqtfix aparecem os comandos dados, mas nem o POWER OFF nem o Backlog fazem qualquer coisa.

Alguma ajuda nesse sentido?

Obrigado


(Jorge Assunção) #84

@Ricardo_Ferreira quando publicares código deves sublinhar o texto que queres transformar em código e clicar no icone </>. Deverá existir um espaço antes e outro depois do bloco de código para que funcione correctamente. O código em Yaml é muito sensível aos espaçamentos e sem o código devidamente formatado não te poderemos ajudar.


(Nuno Neves) #85

Como é que os teus estores funcionavam antes de colocares os sonoff? Bastava um clique para começarem a fechar, ou tinhas que manter pressionado? São botões “de pressão” ou interruptores “normais” (que mudam de posição)?


(Ricardo Ferreira) #86

Jorge assunção, obrigado pela ajuda.

Os sonoff’s ainda não estão colocados, queria primeiro acertar nas configurações antes de os instalar.
Mas respondendo à pergunta, os interruptores são dos “normais” (dos que mudam de posição e ficam nessa posição até os voltar a mudar).


(Ricardo Ferreira) #87

Partilho o código para se poderem ajudar com o problema do botão stop_cover não estar a funcionar:

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: 15
  tempodefecho_sala:
    name: tempo de maximo de fecho sala
    initial: 15
  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: 'cmnd/casa/sala/persiana1up/POWER'
              payload: 'ON'
        close_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/casa/sala/persiana1down/POWER'
              payload: 'ON'
        stop_cover:
          - service: mqtt.publish
            data:
              topic: 'cmnd/casa/sala/perisana1up/Backlog'
              payload: '{"POWER":"OFF"}'
          - service: mqtt.publish
            data:
              topic: 'cmnd/casa/sala/perisana1down/Backlog'
              payload: '{"POWER":"OFF"}'

binary_sensor:
  - platform: mqtt
    name: rele_1_sala
    state_topic: "stat/casa/sala/persiana1up/POWER"
    payload_on: "ON"
    payload_off: "OFF"
  - platform: mqtt
    name: rele_2_sala
    state_topic: "stat/casa/sala/persiana1down/POWER"
    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: 'cmnd/casa/sala/persiana1up/Backlog'
        payload_template: "POWER 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 %}; POWER 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: 'cmnd/casa/sala/persiana1down/Backlog'
        payload_template: "POWER 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 %}; POWER 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 }}'

Agradeço desde já a ajuda disponibilizada


(Jorge Assunção) #88

Como é que estás a copiar e colar o código para isso aparecer com tanto “lixo”?


(Ricardo Ferreira) #89

entendi por sublinhar o U e não o sublinhar como selecionar o texto.

Peço desculpa. Já corrigi

Problema Resolvido!!!

Obrigado a todos pela ajuda!


(Jorge Assunção) #90

E onde estava o problema?


(Ricardo Ferreira) #91

Penso que terá sido erro ao copiar o código sugerido pelo Nuno Neves.
Andei novamente a rever o código passo a passo e agora funciona.

Obrigado mais uma vez


(Bruno Melo) #92

Boas pessoal, estive a configurar o meu sonoff mas na configuração dos botões so que aparece esta opção. É normal?

https://1drv.ms/u/s!AhhTRQMupRdtg49i20SSjrRsx9sGeQ

so consigo que o botao 2 funcione mas o 1 nao esta a funcionar?
ou so funciona ligado a luz?


(Nuno Neves) #93

Se reparares no tutorial não fala em button em lado nenhum, mas antes switch… Usa isso…


(Bruno Melo) #94

Sim, fala. Ou eu é que percebi mal… " A configuração do “module” no tasmota é a seguinte: (no caso de botões de pressão deves escolher button em vez de switch)" e depois também tem isto… " Depois, na consola, deves definir:
SerialLog 0
e, para botões que não sejam de pressão,
Switchmode1 2 e switchmode2 2" por isso fiquei um pouco confuso… Obrigado


(Rodolfo) #95

@Maddoctor realmente o @maxcalavera tem razão no tutorial fala em usar button em vez de switch caso se use botões de pressã, caso entendas que isso tenha que ser removido, para não criar confusão por favor edita, e explica o porque.


(Nuno Neves) #96

têm razão, fala em button, mas não devia ser problema… @maxcalavera , põe aí o print da tua configuração do module, sem a lista aberta…


(Bruno Melo) #97

Amanhã posto isso pois agora não tenho o sonoff ligado. Mas amanhã já o ligo e faço isso. Muito obrigado pela atenção.


(Luís Martins) #98

Viva. Usando o Espurna como ficaria a parete do código stop na cover:

        stop_cover:
      - service: mqtt.publish
        data:
          topic: 'cmnd/kitchendoor/Backlog'
          payload: 'POWER1 OFF; POWER2 OFF'

Não sei se o espurna tem um equivalente ao Backlog…

Obrigado.


(Fernando Pereira) #99

Bom dia a todos.
Segui com sucesso o tutorial num Shelly2. Tenho tudo a funcionar, com excepção de uma questão já anteriormente reportada pelo @Ricardo_Santos na V1 deste tutorial (MadBlinds V1) e reportada neste vídeo.

De vez em quando, quando altero fisicamente no interruptor do “subir” para o “descer”, o que acontece é que o Relé do subir desliga-se, mas o Relé do descer apenas “pisca” e desliga-se logo de seguida.

Diretamente na interface do Homeassistant funciona tudo bem: o interlock do Tasmota faz o seu trabalho, e quando mudo de direção é realizada a inversão dos relés sem problema.

Já alguém se deparou com esta questão? E conseguiu resolver?


(Nuno Neves) #100

Que tipo de interruptor tens? Dos de pressão, dos que ficam na posição de forma independente (os “normais”) ou dos que, ao mudar um, o outro muda no sentido oposto?


(Fernando Pereira) #101

Inversor de persiana EFAPEL (Ref. 21290)

Características:
10A - 250V~

  • Funcionamento como interruptor.
  • Proteção mecânica e elétrica contra duas ordens simultâneas.
  • Levanta automaticamente uma tecla ao pressionar a outra.