Info / IoT

25 jan 2021 16h50

Sonoff IFan02 - status no google home

  • URL Curta:
No wiki do tasmota você encontra o seguinte exemplo para configurar o Sonoff IFan02 para uso no home assistant via MQTT, que funciona uma beleza no mesmo. Porém no google home temos um pequeno detalhe que pode incomodar.

Se entrarmos no google home após reiniciar o home assistant, ele vai mostrar os ventiladores como desligado. Se ligar, ele atualiza para ligado e se desligar? Aí entra o detalhe, ele vai continuar mostrando como ligado no google home, até que o home assistant seja reiniciado novamente.

É um detalhe, mas que pode incomodar. Fiquei alguns dias pesquisando, testando e conseguir achar uma solução.

Código original
  - platform: mqtt  
name: "Pat Ceiling Fan"
state_topic: "stat/ifan02/RESULT"
speed_state_topic: "stat/ifan02/RESULT"
state_value_template: >
{% if value_json.FanSpeed is defined %}
{% if value_json.FanSpeed == 0 -%}0{%- elif value_json.FanSpeed > 0 -%}2{%- endif %}
{% else %}
{% if states.fan.pat_ceiling_fan.state == 'off' -%}0{%- elif states.fan.pat_ceiling_fan.state == 'on' -%}2{%- endif %}
{% endif %}
speed_value_template: "{{ value_json.FanSpeed }}"
availability_topic: tele/ifan02/LWT
payload_available: Online
payload_not_available: Offline
speed_command_topic: "cmnd/ifan02/FanSpeed"
payload_low_speed: "1"
payload_medium_speed: "2"
payload_high_speed: "3"
command_topic: "cmnd/ifan02/FanSpeed"
payload_off: "0"
payload_on: "2"
qos: 1
retain: false
speeds:
- low
- medium
- high



O segredo está no speed_value_template, no estado inicial o home assistant deixa ele como off, porém após ligar ele fica sempre com a última velocidade definida.

Solução
    speed_value_template: >
{% if states.fan.pat_ceiling_fan.state == 'off' %}
off
{% else %}
{{ value_json.FanSpeed }}
{% endif %}



Código completo que uso
### ventilador ####
- platform: mqtt
name: "ventilador"
state_topic: "stat/vent/RESULT"
speed_state_topic: "stat/vent/RESULT"
state_value_template: >
{% if value_json.FanSpeed is defined %}
{% if value_json.FanSpeed == 0 -%}0{%- elif value_json.FanSpeed > 0 -%}2{%- endif %}
{% else %}
{% if states.fan.ventilador.state == 'off' -%}0{%- elif states.fan.ventilador.state == 'on' -%}2{%- endif %}
{% endif %}
speed_value_template: >
{% if states.fan.ventilador.state == 'off' %}
off
{% else %}
{{ value_json.FanSpeed }}
{% endif %}
availability_topic: tele/vent/LWT
payload_available: Online
payload_not_available: Offline
speed_command_topic: "cmnd/vent/FanSpeed"
payload_low_speed: "1"
payload_medium_speed: "2"
payload_high_speed: "3"
command_topic: "cmnd/vent/FanSpeed"
payload_off: "0"
payload_on: "2"
qos: 1
retain: false
speeds:
- 'off'
- low
- medium
- high


Obs: os parâmetros do MQTT e o nome do ventilador deve ser alterado para suas necessidades.

Curiosidade

Outro detalhe que também incomoda, neste caso no google assistente é que ao você pedir para ele aumentar ou diminuir a velocidade ele responde com a velocidade que está saindo. Se ele está na velocidade medium e você pede pra aumentar ele responde: "ok, alterando velocidade para medium" e deveria ser high. Esse detalhe ainda não achei solução, se alguém souber compartilhe.

© MNDTI - Tecnologia e Informação. Todos Direitos Reservados. Política de privacidade.