Hello,
Vu que j’aime bien tout casser, il m’a pris l’envie de passer mon Diffuseur Maxcio de Tasmota vers ESPHome.
Il fonctionnait avec ce template.
Avec un simple Tuya Fan ça pourrait fonctionner, si la consception de l’appareil n’était pas douteuse.
En effet, on a DPID 1 qui détermine si oui ou non le diffuseur est allumé, et DPId103 qui détermine le mode turbo ou non.
ça pourrait être simple sauf qu’en plus de renvoyer 0 en mode normal et 1 en mode turbo, ça renvoie 2 quand le diffuseur est éteint.
Du coup j’ai fait un capteur seulement interne pour passer le ventilateur sur off quand DPId103 est sur 2, sauf que du coup même si le ventilateur renvoyé dans Home-Assistant est éteint, pour Google Assistant par exemple le diffuseur est toujours indiqué comme allumé vu que la vitesse est sur 100%, vu que j’ai trois vitesses, la troisième étant éteint, en fait la même chose que 0.
Même en passant la vitesse sur 0% dans Home-Assistant, elle est remise à 100% vu que DPId103 est sur 100%.
Avec Tasmota j’avais ajouté une condition dans le template fan pour que quand dpID103 est sur 2 le ventilateur est bien éteint avec la vitesse à 0, du coup ça fonctionnait.
Outre une lubie, le passage à ESPHome était pour m’éviter d’avoir des switches qui ne servent à rien, je souhaitais avoir directement le ventilateur remonté par ESPHome dans Home-Assistant.
Je pensais utiliser un output template et un speed fan, mais je n’arrive à rien.
Quelqu’un aurait-il une piste (à part revenir à Tasmota) pour solutionner ce souci de vitesse ?
Vu qu’il est impossible d’utiliser des lambda dans write_action
(aparemment), je pensais le faire pour agir en fonction de ce qui est dans DPid103 : si 0 50% pour la vitesse, si 1 100% et si 2 c’est 0% en vérifiant également que DPId1 a toujours un état cohérent.
J’ai bien du code avec un output template mais il prend du C++ pour du YAML non valide.
Désolé pour le pavé, j’ai tenté d’aller au plus court mais je ne sais pas trop comment 
Au cas où ça pourrait en inspirer certains, voici le code non-fonctionnel, avec la partie fonctionnelle mais éteint en vitesse maximale commentée.
substitutions:
piece: Bureau
sufix: bureau
esphome:
name: diffuseur-${sufix}
platform: ESP8266
board: esp01_1m
project:
name: "Nardol.maxcio_diffuser"
version: "1.0.0"
#web_server:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_key
ap:
password: !secret ap_key
captive_portal:
api:
password: !secret api_pass
ota:
password: !secret ota_pass
uart:
baud_rate: 9600
tx_pin: GPIO1
rx_pin: GPIO3
# debug:
logger:
baud_rate: 0
level: NONE
tuya:
binary_sensor:
- platform: "tuya"
name: Eau Diffuseur ${piece}
id: eau_diffuseur_${sufix}
sensor_datapoint: 12
device_class: "problem"
- platform: tuya
name: ""
id: power
sensor_datapoint: 1
internal: true
fan:
#- platform: tuya
#name: "Diffuseur ${piece}"
#id: diffuseur_${sufix}
#switch_datapoint: 1
#speed_datapoint: 103
#speed_count: 3
- platform: speed
output: fan_output
name: "Diffuseur ${piece}"
speed_count: 2
output:
- platform: template
id: fan_output
type: float
write_action:
then:
- lambda: -|
if (state == 50) id(turbo).publish(false);
else if (state == 100) id(turbo).publish(true);
else:
switch.turn_off: power
sensor:
- platform: tuya
name: ""
id: turbo
sensor_datapoint: 103
internal: true
#on_value_range:
#above: 2
#then:
#- fan.turn_off: diffuseur_${sufix}
light:
- platform: tuya
name: Leds Diffuseur ${piece}
id: leds_diffuseur_${sufix}
dimmer_datapoint: 111
switch_datapoint: 11
min_value: 1
La partie commentée dans le sensor turbo me permettait au moins de faire en sorte que l’état du ventilateur soit affiché à off dans Home Assistant, mais la vitesse restait désespérément et logiquement à 100% à cause de dpID103.
Home Assistant 2021.8 est de très bon aloi. Maintenant, Google Assistant annonce le diffuseur comme éteint comme il faut malgré sa vitesse à 100%.
Je ne sais pas si on peut vraiment parler de la solution, du coup si quelqu’un a une idée pour rendre tout ça plus propre je reste preneur, en attendant ça rend la chose plus gérable et m’incite d’avantage à mettre également à jour mon deuxième diffuseur 