Bonjour
j’ai depuis 15 ans une VMC double flux duolixMAX, pilotée via une télécommande qui remonte pas mal d’info
mais pas très paramétrable ni domotisable : réduire les ventilateurs quand il n’y a personne, augmenter le débit quand l’humidité monte dans la SDB pour ainsi optimiser la conso. La bébête consommait 50w 24h/24h ! Très utile quand on a tempo en jour rouge ou il faut optimiser sa conso.
j’ai donc démonté la carte interne, regarder la ref des ventilateurs :des embpapast, qui se pilotent par PWM ! bingo c’est pilotable via un ESP.
j’utilise donc une alim 230V/10V qui alimente une carte ESP32 4 relay :
- les relais me permettent de piloter le bypass et le grand début cuisine
- 2 sorties pwm pour piloter les ventilateurs (je peux ainsi piloter différemment l’aspiration ou le soufflage de manière à être bien à l’équilibre dans la maison). Il faut utiliser 2 transistors pour convertir le pwm qui sort de l’esp en 3v en pwm 10v. Ce convertisseur se trouve facilement sur Amazon ou alim pour qq euros. C’est souvent utilisé pour convertir le 3.3v en 5v.
- 2 entrées pour récupérer leur vitesse reel (RPM / rotation par minute)
- 4 sondes Dallas pour les températures des entrées/sorties d’air de la VMC
- 3 entrée analogique pour mesurer la tension d’alim + relire les tensions pwm.
Le tout monte dans un boîtier plastique a l’extérieur de la Vmc pour pouvoir intervenir facilement. Déjà 6 mois que ça tourne sans soucis.
Quelques automatisation pour déclencher un boost Sdb quand l’humidité est élevé, et me prévenir quand les filtres sont salles ( la conso augmente que c’est salle): ca m’a servie hier soir, il y avait un bouchon dans mes gaines → légère surconso détectée par une automatisation
la partie pilotage:
et
la partie contrôle :
et un affichage (image issue d’un autre post :))
code de l’ESP :
esphome:
name: esp32-vmc
friendly_name: ESP32-VMC
on_boot:
priority: 600
then:
- output.set_level:
id: pwm_extraction
level: "20%"
- output.set_level:
id: pwm_insertion
level: "20%"
- switch.turn_off: relais1
- switch.turn_off: relais2
- switch.turn_off: relais3
- switch.turn_off: relais4
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "1Iq5/NWe6JTwkEOU0hekxBtY9MOoOHs/KgjigJUkD6M="
ota:
- platform: esphome
password: "bd190d8325db3f67478f98241d3f373b"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 192.168.1.87
gateway: 192.168.1.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp32-Vmc Fallback Hotspot"
password: "FwtY86Teh3ew"
captive_portal:
web_server: # creates a web server where you can access all this stuff without home assistant (good for debugging or working headless (no HA))
port: 80
include_internal: true
ota: true
#pour sonde Dallas
one_wire:
- platform: gpio
pin: 18
sensor:
## tension alim
- platform: adc
pin: 34 # entre analogique ADC1_CH6 entree 0-1V
name: "Alim PWM"
update_interval: 120s
filters:
- sliding_window_moving_average:
window_size: 10
send_every: 10
- multiply: 15.87 # resistance 15k + 220k
- platform: adc
pin: 39 # entre analogique ADC1_CH6 entree 0-1V
name: "Alim PWM out"
update_interval: 1ms
filters:
- sliding_window_moving_average:
window_size: 10000
send_every: 10000
- multiply: 15.87 # resistance 15k + 220k
- platform: adc
pin: 36 # entre analogique ADC1_CH6 entree 0-1V
name: "Alim PWM in"
update_interval: 1ms
filters:
- sliding_window_moving_average:
window_size: 10000
send_every: 10000
- multiply: 15.87 # resistance 15k + 220k
# Send WiFi signal strength & uptime to HA
- platform: wifi_signal
name: WiFi
update_interval: 120s
- platform: dht
pin: 19
temperature:
name: "Temperature air SDB "
humidity:
name: "Humidity air SDB "
update_interval: 60s
- platform: dallas_temp
address: 0xdc00000e68dd4c28
name: "VMC temp air insufle"
id: vmc_temp_air_insufle
update_interval: 60s
filters:
- offset: 0.0
- platform: dallas_temp
address: 0x9a00000e6a1aee28
name: "VMC temp air extrait"
id: vmc_temp_air_extrait
update_interval: 60s
filters:
- offset: -0.0
- platform: dallas_temp
address: 0x2400000e69845128
name: "VMC air neuf ext"
id: vmc_temp_air_neuf_ext
update_interval: 60s
filters:
- offset: 0.0
- platform: dallas_temp
address: 0xcf00000e6a26a928
name: "VMC temp vicie ext"
id: vmc_temp_vicie_ext
update_interval: 60s
filters:
- offset: -0.0
- platform: homeassistant
name: "vmc pwm extraction de HA"
entity_id: sensor.vmc_pwm_extraction
unit_of_measurement: "%"
accuracy_decimals: 0
id: vmc_pwm_extraction_de_ha
on_value:
then:
- output.set_level:
id: pwm_extraction
level: !lambda |-
return id(vmc_pwm_extraction_de_ha).state ;
- platform: homeassistant
name: "vmc pwm insertion de HA"
entity_id: sensor.vmc_pwm_insertion
unit_of_measurement: "%"
accuracy_decimals: 0
id: vmc_pwm_insertion_de_ha
on_value:
then:
- output.set_level:
id: pwm_insertion
level: !lambda |-
return id(vmc_pwm_insertion_de_ha).state ;
- platform: pulse_counter
pin:
number: 21 # Connect to any input PIN on the ESP
mode:
input: true
pullup: true
unit_of_measurement: 'RPM'
id: fan_speed_extraction
name: Fan Speed extraction
accuracy_decimals: 0
update_interval: 10s
filters:
- multiply: 1 # Depending on how many pulses the fan sends per round - should be 0.5 or 1 - try...
- platform: pulse_counter
pin:
number: 22 # Connect to any input PIN on the ESP
mode:
input: true
pullup: true
unit_of_measurement: 'RPM'
id: fan_speed_insertion
name: Fan Speed insertion
accuracy_decimals: 0
update_interval: 10s
filters:
- multiply: 1 # Depending on how many pulses the fan sends per round - should be 0.5 or 1 - try...
output:
## commande ventilateur extraction air
- platform: ledc
pin: 16
frequency: 10000 Hz
channel: 0
id: pwm_extraction
#inverted: true
# my fans stop working below 10% powerful.
# also they're powerful and loud, cap their max speed to 80%
# At 0, actually turn it off, otherwise the power keeps going.
zero_means_zero: true
min_power: 0
max_power: 1
## commande ventilateir insertion air
- platform: ledc
pin: 17
frequency: 10000 Hz
channel : 5
id: pwm_insertion
#inverted: true
# my fans stop working below 10% powerful.
# also they're powerful and loud, cap their max speed to 80%
# At 0, actually turn it off, otherwise the power keeps going.
zero_means_zero: true
min_power: 0
max_power: 1
switch:
#relais 1
- platform: gpio
name: "relais1"
pin: 32
# inverted: True
id: relais1
- platform: gpio
name: "relais2"
pin: 33
# inverted: True
id: relais2
- platform: gpio
name: "relais3"
pin: 25
# inverted: True
id: relais3
- platform: gpio
name: "relais4"
pin: 26
# inverted: True
id: relais4
# bypass (= boost des ventilateur + le volet by pass se ferme)
- platform: template
name: "Bypass"
optimistic: True
on_turn_on:
then:
- switch.turn_on: relais1
- switch.turn_off: relais2
- delay: 60s
- switch.turn_off: relais1
- switch.turn_off: relais2
on_turn_off:
then:
- switch.turn_on: relais1
- switch.turn_on: relais2
- delay: 60s
- switch.turn_off: relais1
- switch.turn_off: relais2
# turbo Cuisine (= boost des ventilateur + le volet salle de bain se ferme)
- platform: template
name: "turbo Cuisine"
optimistic: True
on_turn_on:
then:
- switch.turn_on: relais3
- switch.turn_on: relais4
- delay: 60s
- switch.turn_off: relais3
- switch.turn_off: relais4
on_turn_off:
then:
- switch.turn_on: relais3
- switch.turn_off: relais4
- delay: 60s
- switch.turn_off: relais3
- switch.turn_off: relais4
Et la partie électronique ( je sais peut mieux faire en routage de fil!) a droite l’entrée 230v et l’alim 230/10v et a gauche l’esp avec ses 4 relais.