En esta ocasión integraremos un IFan03 en otro ventilador pero con tasmota en lugar de por sonoff LAN , el ventilador elegido es un ventilador AC de tres velocidades y con luz.
Como siempre viene el controlador que es compatible en medidas con el controlador original que no llegaremos ni a montar y un mando por RF433.
![](https://www.rivas.cloud/wp-content/uploads/2023/06/photo_2023-06-16_12-19-15.jpg)
Vista de los cuatro relés que controlaran el ventilador , el primero para la luz y el resto para las velocidades
![](https://www.rivas.cloud/wp-content/uploads/2023/06/photo_2023-06-16_12-19-20.jpg)
Localizamos los pines de comunicación en la parte inferior de la placa
![](https://www.rivas.cloud/wp-content/uploads/2023/06/photo_2023-06-16_12-19-24.jpg)
Aquí tenemos los pines de alimentación , ojo va a 3,3V y los de Rx/Tx que iran cruzados
![](https://www.rivas.cloud/wp-content/uploads/2023/06/photo_2023-06-16_12-19-29.jpg)
Lo soldamos o conectamos a nuestro adaptador de USB a 232
![](https://www.rivas.cloud/wp-content/uploads/2023/06/photo_2023-06-16_12-19-35.jpg)
En esta ocasión decidí conectarlo simplemente por presión sin soldar nada a la placa
![](https://www.rivas.cloud/wp-content/uploads/2023/06/photo_2023-06-16_12-19-48.jpg)
Así quedaria una vez montado , recordad que Rx y Tx van cruzados !!!!!!!!
![](https://www.rivas.cloud/wp-content/uploads/2023/06/photo_2023-06-16_12-19-56.jpg)
Usaremos con en anteriores ocasiones Tasmotizer para grabar el firmware y no hacerlo por la linea de comandos
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-46.png)
Lo primero será darle alimentación con el botón pulsado para entrar en el modo de programación , una vez en dicho modo haremos una copia del firmware original
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-47.png)
Una vez realizado el backup , automáticamente borrara el contenido de la memoria de programa y grabara en nuevo firmware que será la versión completa del ultimo binario de tasmota
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-48.png)
SI todo es correcto reiniciaremos el modulo
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-49.png)
Y nos aparecerá la nueva red a la que conectarnos.
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-50.png)
Seleccionamos la red a la que nos conectaremos , y el modulo se volverá a reiniciar
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-51.png)
Una vez desde nuestra propia red seleccionaremos el tipo de modulo eligiendo la plantilla del IFan03
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-52.png)
Después de reiniciarse el modulo ya podemos ver el interruptor de la luz , como las cuatro velocidades del ventilador
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-53.png)
Configuramos toda la parte de MQTT
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-54.png)
Cambiamos el nombre al dispositivo
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-57.png)
Después de reiniciarlo si todo es correcto en MQTT Explorer podremos ver la comunicación hacia el servidor MQTT
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-56.png)
En la sección de mqtt del configuration.yaml definiremos nuestro elemento fan
fan: - unique_id: ventilador_oriol name: "Ventilador Oriol" command_topic: "cmnd/tasmota_8FA03F/FanSpeed" state_topic: "stat/tasmota_8FA03F/RESULT" state_value_template: > {% if value_json.FanSpeed is defined %} {% if value_json.FanSpeed == 0 -%}off{%- elif value_json.FanSpeed > 0 -%}on{%- endif %} {% else %} {% if states.fan.tasmota_8FA03F.state == 'off' -%}off{%- elif states.fan.tasmota_8FA03F.state == 'on' -%}on{%- endif %} {% endif %} availability_topic: "tele/tasmota_8FA03F/LWT" payload_off: "off" payload_on: "on" payload_available: Online payload_not_available: Offline percentage_command_template: > {% if ( value >= 1 ) and ( value <= 33 ) %} 1 {% elif ( value > 33 ) and ( value <= 66 ) %} 2 {% elif ( value > 66 ) and ( value <= 100 ) %} 3 {% elif value < 0 %} 0 {% elif value > 100 %} 0 {% else %} 0 {% endif %} percentage_command_topic: "cmnd/tasmota_8FA03F/FanSpeed" percentage_state_topic: "stat/tasmota_8FA03F/RESULT" percentage_value_template: > {% if value_json.FanSpeed == 1 %} 33 {% elif value_json.FanSpeed == 2 %} 66 {% elif value_json.FanSpeed == 3 %} 100 {% else %} 0 {% endif %} qos: 1
En la sección de mqtt del configuration.yaml definiremos nuestro elemento light para controlar la luz del ventilador
- name: ventilador_oriol state_topic: "stat/tasmota_8FA03F/POWER1" state_value_template: "{{ value_json['values']['POWER1'] }}" command_topic: "cmnd/tasmota_8FA03F/POWER1" availability_topic: "tele/tasmota_8FA03F/LWT" qos: 1 payload_on: "ON" payload_off: "OFF" payload_available: "Online" payload_not_available: "Offline" retain: false
Para dejarlo un poco mas bonito en nuestro panel lovelace podemos usar esta tarjeta https://github.com/finity69x2/fan-percent-button-row
La añadiremos en los repositorios personalizados.
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-58-1024x578.png)
Añadiremos la url en configuration.yaml
url: /hacsfiles/fan-percent-button-row/fan-percent-button-row.js type: module
Y modificaremos nuestro panel lovelace para que aparezcan todos los elementos
- type: divider - switch.enchufe_16_mosq_oriol - type: divider - fan.ventilador_oriol - light.ventilador_oriol - type: divider - entity: fan.ventilador_oriol type: custom:fan-percent-button-row name: Ventilador Oriol customTheme: true customSetpoints: true lowPercent: 33 medPercent: 66 hiPercent: 100 - binary_sensor.sensor_puerta_armario_oriol_evento - type: divider
Así quedaria la sección del ventilador en nuestro panel
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-59.png)
Pasaremos a definir las automatizaciones , esta por ejemplo al abrir una puerta de un armario que esta cerca apaga el ventilador si esta activo y da un aviso
- alias: apagado del ventilador al abir la puerta del armario luz ventilador encendida initial_state: 'on' trigger: - platform: state entity_id: binary_sensor.sensor_puerta_armario_oriol_evento to: 'on' condition: - condition: state entity_id: fan.ventilador_oriol state: 'on' action: # Ventilador Oriol - service: fan.turn_off entity_id: fan.ventilador_oriol - service: light.toggle entity_id: light.ventilador_oriol - delay: 00:00:02 - service: light.toggle entity_id: light.ventilador_oriol - delay: 00:00:02 - service: light.toggle entity_id: light.ventilador_oriol - delay: 00:00:02 - service: light.toggle entity_id: light.ventilador_oriol - service: light.turn_on entity_id: light.ventilador_oriol - service: notify.notif_telegram_bot data: message: | {{"\U0001F4A8"}}{{"\U0001F4A8"}}{{"\U0001F4A8"}}{{"\U0001F4A8"}} ¡¡¡ Puerta armario Oriol *abierta* ventilador parado !!! {{"\U0001F4A8"}}{{"\U0001F4A8"}}{{"\U0001F4A8"}}{{"\U0001F4A8"}}
Estas por ejemplo serian algunas de las acciones para controlar con un mando remoto ikea como este
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-64.png)
Por ejemplo con las flechas izquierda y derecha disminuiria y aumentaría la velocidad del ventilador de forma rotatoria , 0 -1 -2 – 3 – 0 y 3 – 2 – 1 – 0 – 3
#################################### ########## ACCIONES ORIOL ########## #################################### - alias: pulsador tiras led oriol simple click id: pulsador tiras led oriol simple click initial_state: 'on' trigger: - platform: state entity_id: sensor.puls_leds_oriol_evento to: 'single' - platform: state entity_id: sensor.ikea_mando_2_evento to: "toggle" action: - service: light.toggle entity_id: light.ventilador_oriol - alias: pulsador tiras led oriol triple click id: pulsador tiras led oriol triple click initial_state: 'on' trigger: - platform: state entity_id: sensor.puls_leds_oriol_evento to: 'triple' - platform: state entity_id: sensor.ikea_mando_2_evento to: brightness_up_click action: - service: light.turn_on entity_id: light.tira_led_cama_oriol - service: light.turn_on entity_id: light.tira_led_mesa_oriol - service: light.turn_on entity_id: light.ventilador_oriol - alias: pulsador tiras led oriol hold press id: pulsador tiras led oriol hold press initial_state: 'on' trigger: - platform: state entity_id: sensor.puls_leds_oriol_evento to: 'hold' - platform: state entity_id: sensor.ikea_mando_2_evento to: brightness_down_click action: - service: light.turn_off entity_id: light.tira_led_cama_oriol - service: light.turn_off entity_id: light.tira_led_mesa_oriol - service: light.turn_off entity_id: light.ventilador_oriol - alias: pulsador ikea oriol flecha izquierda id: pulsador ikea oriol flecha izquierda initial_state: 'on' trigger: - platform: state entity_id: sensor.ikea_mando_2_evento to: arrow_left_click action: - service: fan.turn_on entity_id: fan.ventilador_oriol - service: mqtt.publish data: topic: "cmnd/tasmota_8FA03F/FanSpeed" payload_template: > {% set velocidad = states.fan.ventilador_oriol.attributes['percentage']| int(0) %} {% if ( velocidad >= 1 ) and ( velocidad <= 33 ) %} 0 {% elif ( velocidad >= 34 ) and ( velocidad <= 66 ) %} 1 {% elif ( velocidad >= 100 ) %} 2 {% elif ( velocidad == 0 ) %} 3 {% endif %} - delay: 00:00:01 - alias: pulsador ikea oriol flecha derecha id: pulsador ikea oriol flecha derecha initial_state: 'on' trigger: - platform: state entity_id: sensor.ikea_mando_2_evento to: arrow_right_click action: - service: fan.turn_on entity_id: fan.ventilador_oriol - service: mqtt.publish data: topic: "cmnd/tasmota_8FA03F/FanSpeed" payload_template: > {% set velocidad = states.fan.ventilador_oriol.attributes['percentage']| int(0) %} {% if ( velocidad >= 1 ) and ( velocidad <= 33 ) %} 2 {% elif ( velocidad >= 34 ) and ( velocidad <= 66 ) %} 3 {% elif ( velocidad >= 100 ) %} 0 {% elif ( velocidad == 0 ) %} 1 {% endif %} - delay: 00:00:01 - alias: luz oriol conmutadores 1 y 2 single id: luz oriol conmutadores 1 y 2 single initial_state: 'on' trigger: - platform: state entity_id: sensor.puls_conmut_1_oriol_evento to: 'single' - platform: state entity_id: sensor.puls_conmut_2_oriol_evento to: 'single' action: - service: light.toggle entity_id: light.ventilador_oriol - alias: luz oriol hold press 1 y 2 apagar todo id: luz oriol hold press 1 y 2 apagar todo initial_state: 'on' trigger: - platform: state entity_id: sensor.puls_conmut_1_oriol_evento to: 'hold' - platform: state entity_id: sensor.puls_conmut_2_oriol_evento to: 'hold' action: - service: light.turn_off entity_id: light.ventilador_oriol - service: light.turn_off entity_id: light.tira_led_cama_oriol - service: light.turn_off entity_id: light.tira_led_mesa_oriol
Si queremos que sea lineal del estilo 0 – 1 – 2 – 3 y 3 – 2 – 1 – 0 cambiaríamos el template por este
- alias: pulsador ikea oriol flecha izquierda id: pulsador ikea oriol flecha izquierda initial_state: 'on' trigger: - platform: state entity_id: sensor.ikea_mando_2_evento to: arrow_left_click action: - service: fan.turn_on entity_id: fan.ventilador_oriol - service: mqtt.publish data: topic: "cmnd/tasmota_8FA03F/FanSpeed" payload_template: > {% set velocidad = states.fan.ventilador_oriol.attributes['percentage']| int(0) %} {% if ( velocidad >= 1 ) and ( velocidad <= 33 ) %} 0 {% elif ( velocidad >= 34 ) and ( velocidad <= 66 ) %} 1 {% elif ( velocidad >= 100 ) %} 2 {% elif ( velocidad == 0 ) %} 0 {% endif %} - delay: 00:00:01 - alias: pulsador ikea oriol flecha derecha id: pulsador ikea oriol flecha derecha initial_state: 'on' trigger: - platform: state entity_id: sensor.ikea_mando_2_evento to: arrow_right_click action: - service: fan.turn_on entity_id: fan.ventilador_oriol - service: mqtt.publish data: topic: "cmnd/tasmota_8FA03F/FanSpeed" payload_template: > {% set velocidad = states.fan.ventilador_oriol.attributes['percentage']| int(0) %} {% if ( velocidad >= 1 ) and ( velocidad <= 33 ) %} 2 {% elif ( velocidad >= 34 ) and ( velocidad <= 66 ) %} 3 {% elif ( velocidad >= 100 ) %} 3 {% elif ( velocidad == 0 ) %} 1 {% endif %}
El montaje no tiene perdida alguna ya que solo hay que darle 220 y luego hay tres cables de color blanco , negro y azul que coinciden con los mismos colores en el ventilador.
El controlador cabe perfectamente en sustitución del original en la parte superior del ventilador , una vez finalizado quedaria así
![](https://www.rivas.cloud/wp-content/uploads/2023/06/image-65.png)
Y con esto y un bizcocho ….