Info / IoT

Atualizado em 29 abr 2022 16h15

Ventilador (fan) - IFan02 preset_modes e percentage no home assistant - MQTT - Tasmota

  • URL Curta:

Venda: Ssd Sata Wd Green 240gb - Para Notebook, Mini Pc - 2.5

Venda: Memoria Corsair 8gb (2 X 4gb) Ddr3 Notebook, Mini Pc

Venda: Injetor Poe Eap225 24v Passivo - Tl-poe2412g - Tp-link

Venda: Injetor Poe Ubiquiti 802.3at 48v 30w Gigabit U-poe-at

Olá pessoal,

Vou deixar abaixo pra vocês a configuração atual para usar no IFan02 com o home assistant que uso atualmente e está funcionando bem. Lembrando que pode ser usado também para outros controladores de fan, talvez seja necessário ajustes.

É necessário esta alteração, pois a speeds opção foi descontinuada(deprecated) no home assistant e alterada para preset_modes e percentage.

Requisitos
- IFan02
- Tasmota
- MQTT
- Home Assistant

Código
O código deve ser adicionando no seu arquivo configuration.yaml no fan:, ou no seu arquivo fans.yaml, depende da sua configuração.


### ventilador ####
  - platform: mqtt
    name: "ventilador"
    command_topic: "cmnd/ventilador/FanSpeed"
    state_topic: "stat/ventilador/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 %}
    availability_topic: "tele/ventilador/LWT"
    payload_available: Online
    payload_not_available: Offline
    preset_mode_command_topic: "cmnd/ventilador/FanSpeed"
    preset_mode_state_topic: "stat/ventilador/RESULT"
    preset_mode_command_template: >
        {% if value == 'low' %}
          1
        {% elif value == 'medium' %}
          2
        {% elif value == 'high' %}
          3
        {% else %}
          0 
        {% endif %}
    preset_mode_value_template: >
        {% if value_json.FanSpeed == 1 %}
          low
        {% elif value_json.FanSpeed == 2 %}
          medium
        {% elif value_json.FanSpeed == 3 %}
          high
        {% else %}
          off
        {% endif %}
    payload_off: "0"
    payload_on: "2"
    qos: 1
    retain: false
    preset_modes:
      - 'off'
      - 'low'
      - 'medium'
      - 'high'
    percentage_command_topic: "cmnd/ventilador/FanSpeed"
    percentage_state_topic: "stat/ventilador/RESULT"
    percentage_command_template: "{{ value | default }}"
    percentage_value_template: "{{ value_json.FanSpeed | default }}"
    speed_range_min: 1
    speed_range_max: 3


Quer usar o preset_modes em português? Sim é possível, basta alterar:

    preset_mode_command_template: >
        {% if value == 'baixa' %}
          1
        {% elif value == 'media' %}
          2
        {% elif value == 'alta' %}
          3
        {% else %}
          0 
        {% endif %}
    preset_mode_value_template: >
        {% if value_json.FanSpeed == 1 %}
          baixa
        {% elif value_json.FanSpeed == 2 %}
          media
        {% elif value_json.FanSpeed == 3 %}
          alta
        {% else %}
          desligado
        {% endif %}
    preset_modes:
      - 'desligado'
      - 'baixa'
      - 'media'
      - 'alta'


Ou seja você pode usar o que quiser no preset_modes. Quer usar números?

    preset_mode_command_template: "{{ value | default }}"
    preset_mode_value_template: "{{ value_json.FanSpeed | default }}"
    preset_modes:
      - '0'
      - '1'
      - '2'
      - '3'


Sobre speed_range_min: 1 e speed_range_max: 3, é a velocidade mínima e máxima. Usada para configurar a percentage_step. 100/3 = 33,33. Logo no home assistant você terá a barra deslizante de:
0 = desliga
33 = baixa
67 = media
100 = alta

A mas se mandar o google ou usar no home assistant outras valores de porcentagem? Simples, o home assistant faz automaticamente a conversão, no intervalo:
0 = desligado
1-33 = baixa
34-67 = media
68-100 = alta

É isso, espero que possa ajudar alguém.

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