Configurar Sonoff Basic com Espurna para Portão de Correr

Onde tenho de criar? Eu copiei do tutorial exatamente, se faltam coisas, é porque também falta no tutorial.

Obrigado, vou verificar. Eu copiei e colei o código direto do tutorial, verifiquem o tutorial se o tem correcto.

Acabo de verificar e no tutorial então tem errado, porque eu tenho exatamente como lá, deveriam de alterar.

Vou verificar isso. Obrigado!

1 Curtiu

@j_assuncao e verifiquei no teu github um exemplo e também tens assim: package_front_door.yaml

Pois tenho… Então os que estão mal são os que têm o - antes de platform.

Os - devem ser utilizados em listas, se for só uma platform como trigger tanto faz se tem ou não desde que esteja indentado. Se for mais que uma platform devem ser utilizados sempre os -

Podes verificar até aqui se esta tudo bem por favor?

automation:
- id: iniciofecho
  alias: começou a fechar
  trigger:
    platform: state
    entity_id: binary_sensor.rele
    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
    to: 'off'
  condition:
    condition: state
    entity_id: 'input_boolean.alterarslider'
    state: 'on'
  action:
    service: input_number.set_value
    data_template:
      entity_id: input_number.aberturaportalold
      value: >-
        {% if (states.input_number.aberturaportal.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.aberturaportal.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.aberturaportal
      value: '{{ states.input_number.aberturaportalold.state }}'

Sim, parece OK.

O p de platform alinha sempre por baixo do i de trigger excepto quanto leva -.

Nessa situação o - alinha por baixo do i de trigger e o que vier a seguir alinha com o p de platform.

:+1:

1 Curtiu

E esta parte?

- id: inicioabertura
  alias: começou a abrir
  trigger:
    platform: state
    entity_id: binary_sensor.rele
    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
    to: 'off'
  condition:
    condition: state
    entity_id: 'input_boolean.alterarslider'
    state: 'on'
  action:
    service: input_number.set_value
    data_template:
      entity_id: input_number.aberturaportalold
      value: >-
        {% if (states.input_number.aberturaportal.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.aberturaportal.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.aberturaportal
      value: '{{ states.input_number.aberturaportalold.state }}'

E por fim este,

- id: aberturapeloslider
  alias: Abertura pelo slider
  trigger:
    platform: state
    entity_id: input_number.aberturaportal
  condition:
    condition: template
    value_template: '{{ states.input_number.aberturaportal.state|int > states.input_number.aberturaportalold.state|int }}'
  action:
    service: input_boolean.turn_off
    data:
      entity_id: input_boolean.alterarslider
    service: mqtt.publish
    data:
      topic: 'cmnd/portal/Backlog'
      payload_template: "POWER ON; delay {% if is_state('input_number.aberturaportal', '100.0') %} {{ (((states.input_number.aberturaportal.state|int - states.input_number.aberturaportalold.state|int)*(states.input_text.tempodeabertura.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
    {{ (((states.input_number.aberturaportal.state|int - states.input_number.aberturaportalold.state|int)*(states.input_text.tempodeabertura.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; POWER OFF"
    delay:
      milliseconds: 800
      wait_template: "{{ is_state('binary_sensor.rele', 'off') }}"
    service: input_boolean.turn_on
    data:
      entity_id: input_boolean.alterarslider
    service: input_number.set_value
    data_template:
      entity_id: input_number.aberturaportalold
      value: '{{ states.input_number.aberturaportal.state }}'

- id: fechopeloslider
  alias: Fecho pelo slider
  trigger:
    platform: state
    entity_id: input_number.aberturaportal
  condition:
    condition: template
    value_template: '{{ states.input_number.aberturaportal.state|int < states.input_number.aberturaportalold.state|int }}'
    action:
      service: input_boolean.turn_off
      data:
        entity_id: input_boolean.alterarslider
      service: mqtt.publish
      data:
        topic: 'cmnd/portal/Backlog'
        payload_template: "POWER ON; delay {% if is_state('input_number.aberturaportal', '0.0') %} {{ (((states.input_number.aberturaportalold.state|int - states.input_number.aberturaportal.state|int)*(states.input_text.tempodefecho.state|float)/100)|round(1)*10)|round(0) + 20 }} {% else %}
      {{ (((states.input_number.aberturaportalold.state|int - states.input_number.aberturaportal.state|int)*(states.input_text.tempodefecho.state|float)/100)|round(1)*10)|round(0) }} {% endif %}; POWER OFF"
      delay:
        milliseconds: 800
        wait_template: "{{ is_state('binary_sensor.rele', 'off') }}"
      service: input_boolean.turn_on
      data:
        entity_id: input_boolean.alterarslider
      service: input_number.set_value
      data_template:
        entity_id: input_number.aberturaportalold
        value: '{{ states.input_number.aberturaportal.state }}'

Até aqui está 5 :star:

1 Curtiu

Coloquei a ultima parte @j_assuncao e pelo messenger enviei o ficheiro completo copiando um pouco do teu github, se estiver correto e funcionar é mais uma coisa a colocar aqui como tutorial :slight_smile:

Se tens o ficheiro automation.yaml vazio tens de criar uma automação fictícia pois o ficheiro não pode estar vazio.

Podes colocar, por exemplo:

- id: '1525220727848'
  alias: Dummy
  trigger:
    - platform: template
      value_template: 'false'
  condition: []
  action:
    - delay: '1'
1 Curtiu

@j_assuncao com isso já não dá erro. Obrigado.

Vou testar.

@tcruz, o erro provavelmente não era o meu código e apenas a falta do ficheiro como o @j_assuncao descobriu… Se quiseres, depois testa com o código original… :wink:

Grande ajuda do @j_assuncao sem ele não teria sido capaz.

Agora tenho alguns erros porque estou a fazer com um Sonoff Basic unicamente, mas estão quase sanados todos. :slight_smile:

Boas pessoal,

Ainda tenho erros por resolver, por isso ainda não coloquei aqui o tutorial para fazê-lo.

O meu sonoff de ves en quanto ativa-se sozinho e abre o portão sem mais. Os códigos na consola coloquei os que estavam no tutorial, pode ser alguns deles que me esta a fazer isso?

Em princípio o teu problema será que é impossível ao HA saber se está a abrir ou a fechar uma vez que só usas um relé e, provavelmente tens o powerretain activo, não?

Tenho powerretain activo sim.

É só desativar isso?

Para o teu caso em que usas um só relé para abrir e fechar, sim… Depois dá feedback…

1 Curtiu

Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade