Utilisation de la dérivée

Bonjour,

Je cherche à déclencher une VMC si l’humidité augmente d’un certain pourcentage en peu de temps (signe d’une douche par exemple).

J’ai compris qu’il fallait utiliser la dérivée mais je ne comprends pas bien son fonctionnement, quelqu’un à un exemple qui se rapproche de mon cas d’utilisation ?

Merci d’avance

Salut

j’avais eu la même idée mais j’ai opté pour une autre solution

en effet en fonction de la sensibilité de ton capteur et surtout de la fréquence de rafraichissement mettre en place une devirée ne fonctionne pas a tous les coups surtout si la valeur de l’humidité est élevée dans la pièce concernée.

ce que j’ai mis en place c’est que dès que la valeur de l’humidité est > a 80% j’active ma VMC pendant 1 Heure

Le problème de ta solution (que j’utilise aussi) c’est que l’humidité ambiante change dans l’année et donc je me retrouve souvent soit avec la VMC qui ne se lance pas car trop loin de la consigne ou alors elle se lance alors qu’il n’y a pas besoin.

Bonjour,

je vais tenter d’aider sur ce point. J’ai une solution parfaitement fonctionnelle chez moi : depuis que je l’ai implémentée, je n’ai jamais loupé la détection d’une douche. Cependant, je ne peux livrer de solution clef en main car ma solution tourne sur Domoticz avec un script Dzvents. Comme prérequis, il faut aussi un capteur de température et un capteur d’humidité dans la pièce surveillée.

Je me suis inspiré des discussions du forum easydomoticz :
https://www.easydomoticz.com/forum/viewtopic.php?t=2869&start=30

Au lieu de surveiller l’humidité, je surveille l’humidité absolue. J’ai un capteur virtuel qui est dédié à ça. Ensuite, j’ai obtenu mes seuils de manière empirique. De mémoire, si l’humidité absolue s’élève de + de 2 unités en moins de 2 minutes, c’est qu’une douche est en cours. Ensuite, je déclenche la vitesse 2 de ma VMC jusqu’à un retour de la valeur pré-déclenchement + un delta à définir selon son envie (si delta = 0, la VMC ne s’arrêtait des fois pas car l’humidité absolue varie naturellement au cours de la journée).

Je suis très satisfait de cette méthode. J’espère que vous pourrez vous en inspirer.

Merci pour ce sujet ! :ok_hand:
Avez vous des capteurs d’humidité à conseiller ?

J’utilise les Aqara de mon côté.

1 « J'aime »

Merci pour ton retour mais je ne suis pas certain de saisir :thinking:

Ton capteur virtuel fait la moyenne de l’humidité dans la journée et c’est celui-ci que tu utilises pour le déclenchement de la VMC ?

Bonsoir,

j’utilise des capteurs humidité / température xiaomi avec une clé Conbee 2.

J’ai créé un capteur virtuel d’humidité absolue dans ma salle de bain car :

  • j’ai ainsi un graphique qui me permet de consulter l’évolution.
  • Le langage de programmation DzVents de Domoticz intègre des fonctions statistiques appelables sur les capteurs.

Ainsi, je peux calculer très facilement les moyennes sur les périodes qui m’intéressent et les comparer aux valeurs instantanées. Je ne sais pas si c’est facilement reproductible sur HA que je n’utilise à ce jour que pour son plugin Frigate.

Ok merci je vais me renseigner.

Peux-tu néanmoins partager ton code pour une dérivée ?

Perso j’utilise https://github.com/dolezsa/thermal_comfort qui permet d’obtenir une valeur d’humiditée absolue que je compare avec celle de l’extérieur.

La valeur d’humidité (%) n’est pas très précis par contre pour mon capteur.

Je n’ai pas encore eu (pris) le temps de définir une algo afin de permettre l’arrêt de la VMC quand l’humidité ne baisse plus trop.

alias: VMC Ventilation SDB
description: Ventilation SDB
trigger:
  - platform: numeric_state
    entity_id: sensor.sdb_dew_point
    above: 13
  - platform: numeric_state
    entity_id: sensor.exterieur_dew_point
    below: "11.5"
  - platform: event
    event_type: homeassistant_start
    id: ha_restart
condition:
  - condition: or
    conditions:
      - condition: and
        conditions:
          - condition: numeric_state
            entity_id: sensor.exterieur_dew_point
            below: "11.5"
          - condition: numeric_state
            entity_id: sensor.sdb_dew_point
            above: 13
      - condition: and
        conditions:
          - condition: state
            entity_id: light.sonoff_01minizb_4febc024_on_off
            state: "on"
          - condition: trigger
            id: ha_restart
action:
  - type: turn_on
    device_id: 3c3d6f675c5d59e015c83cfd7d4282ed
    entity_id: light.sonoff_01minizb_4febc024_on_off
    domain: light
  - wait_for_trigger:
      - platform: template
        value_template: >-
          {{ states('sensor.sdb_dew_point') | float < 12.5 or
          states('sensor.exterieur_dew_point') | float > 12 }}
  - type: turn_off
    device_id: 3c3d6f675c5d59e015c83cfd7d4282ed
    entity_id: light.sonoff_01minizb_4febc024_on_off
    domain: light
mode: single

Bonsoir,

désolé mais je n’avais pas activé la surveillance du sujet.

Quel code veux-tu ? En Lua ? Ou l’algorithme ?

Je demandais le code de @jrvrcd mais tu peux déposer le tien en Lua, ça aidera peux-être des personnes.

Voici donc mon script en DzVents (langage spécifique à Domoticz basé sur Lua). Ce langage permet une grande simplification des calculs statistiques sur une base de données (telles que les moyennes, utiliser les x dernières valeures, la valeur il y a x hh:mm:ss …).

Le principe :

  • se déclenche toutes les minutes
  • fait 3 calculs pour les 3 sdb
  • détection d’une douche <=> augmentation de l’humidité absolue de 20% en 10 minutes
  • cible à atteindre pour éteindre la ventilation = l’humidité absolue repasse sous la moyenne de la valeur d’humidité absolue des 2 dernières heures.
  • Script met à jour une variable indiquant le besoin de ventilation ou pas. Un autre script met la VMC en vitesse 2 ou 1.
--[[
-- Script de calcul de l'humidité absolue d'une pièce.
-- 
-- Calcul de la moyenne sur 6 heures de l'humidité absolue de chaque pièce
-- Ventilation s'arrête aussi si l'humidité absolue devient inférieure à la moyenne de l'humidité absolue sur les
-- 30 dernières minutes. En effet, il arrivait que, malgré la ventilation, l'humidité abs ne repassait jamais
-- sous la cible dans le cas ou la douche était prise alors que l'humidité était en train de monter par execute
--
----------------------------------------------------------------------------------------------------------------------------------
-- V1.0 : la valeur à laquelle on compare l'humidité absolue pour savoir s'il faut ventiler est faite sur les 6 dernières heures 
-- V1.1 : la ventilation ne s'arrêtait pas lorsque la douche était prise alors que l'humidité absolue était en phase d'augmentation. 
--        Changement de la durée de la moyenne. On passe à des valeurs plus courtes (30 min)
--
------------------------------------------------------------------------------------------------------------------------------------    
--
--  Variables à éditer 
--
--------------------------------------------
]]--

local scriptName = 'Calcul_Hum_Abs_SDB'
local scriptVersion = '1.1'

local device_temp1 = 'Temp_SDB_Etage'        	-- nom (entre ' ') ou idx  de la sonde de température sdb étage
local device_hum1 = 'Humidite_SDB_Etage'     	-- idx de la sonde d'humidité sdb étage
local device_hum_abs1 = 'Humidite_Abs_SDB_Etage'                  	-- nom (entre ' ') ou idx de l'éventuel dummy humidité absolue sdb etage
local device_temp2 = 'Temperature_SDB_Ewen'  	-- nom (entre ' ') ou idx  de la sonde de température sdb Ewen
local device_hum2 = 'Humidite_SDB_Ewen'      	-- idx de la sonde d'humidité sdb Ewen
local device_hum_abs2 = 'Humidite_Abs_SDB_Ewen'                	 	-- nom (entre ' ') ou idx de l'éventuel dummy humidité absolue sdb Ewen
local device_temp3 = 'Temperature_SDB_Laurie' 	-- nom (entre ' ') ou idx  de la sonde de température sdb Laurie
local device_hum3 = 'Humidite_SDB_Laurie'     	-- idx de la sonde d'humidité sdb étage
local device_hum_abs3 = 'Humidite_Abs_SDB_Laurie'    				  	-- nom (entre ' ') ou idx de l'éventuel dummy humidité absolue sdb Laurie
local Seuil_Declenchement_VMC = 1.5   			-- valeur au dessus de la moyenne à 6 heures au dessus de laquelle il faut déclencher la VMC
local Plancher_Humidite_Cible = 1.5 			-- valeur au dessus de la moyenne à 6 heures à laquelle on coupe la VMC


--------------------------------------------------------------------------------------------------------------------------------------------
-- PROGRAMME 
--------------------------------------------------------------------------------------------------------------------------------------------

return {
   active = true,
   
-- custom logging level for this script
    logging = {
                --level   = domoticz.LOG_DEBUG,
                level   = domoticz.LOG_INFO,     -- Seulement un niveau peut être actif; commenter les autres
                --level   = domoticz.LOG_ERROR,       -- Only one level can be active; comment others
                -- level   = domoticz.LOG_MODULE_EXEC_INFO,
                marker	= scriptName..' v'..scriptVersion
   },		
			  
   on = {
        timer = {
         'every 1 minutes'   -- pour avoir assez de valeurs d'humidité abs, je lance le script toutes les 1 minute
        }     
   },
   
   data = {
		   Duree_VentilationMin_1 = { initial = 0 },
		   Duree_VentilationMin_2 = { initial = 0 },
		   Duree_VentilationMin_3 = { initial = 0 },
	},
	
   execute = function(dz, timer)
      
	function HumAbs(t,hr)
            -- https://carnotcycle.wordpress.com/2012/08/04/how-to-convert-relative-humidity-to-absolute-humidity/
            -- Formule pour calculer l'humidité absolue
            -- Dans la formule ci-dessous, la température (T) est exprimée en degrés Celsius, l'humidité relative (hr) est exprimée en %, et e est la base des logarithmes naturels 2.71828 [élevée à la puissance du contenu des crochets]:
            -- Humidité absolue (grammes / m3 ) =  (6,122 * e^[(17,67 * T) / (T + 243,5)] * rh * 2,1674))/(273,15 + T)
            -- Cette formule est précise à 0,1% près, dans la gamme de température de -30 ° C à + 35 ° C
            ha = dz.utils.round((6.112 * math.exp((17.67 * t)/(t+243.5)) * hr * 2.1674)/ (273.15 + t),1)
            return ha
	end
	
	local capteurs = {
       { humabs = 'HumAbs1', besoin_ventil = 'Besoin_Ventilation_SDB_1', duree_ventil = 'Duree_VentilationMin_1' },
       { humabs = 'HumAbs2', besoin_ventil = 'Besoin_Ventilation_SDB_2', duree_ventil = 'Duree_VentilationMin_2' },
       { humabs = 'HumAbs3', besoin_ventil = 'Besoin_Ventilation_SDB_3', duree_ventil = 'Duree_VentilationMin_3' },
					}
					
	for _,sonde in ipairs(capteurs) do 
		local humabs_Tampon = sonde.humabs
		local X
		local Y
		
		local test = dz.globalData[humabs_Tampon].size
		dz.log('====  ' .. test .. ' ====', dz.LOG_DEBUG)
		if dz.globalData[humabs_Tampon].size <= 11 then      --** test sur la taille de la bdd me permet de gérer le cas
			dz.log('====  HELLO 1  ====', dz.LOG_DEBUG)      --** ou le pi démarre et que la bdd est vide (sinon ça génère
			X = 50                                           --** une erreur
			Y = 50
		else
			dz.log('====  HELLO 2  ====', dz.LOG_DEBUG)
			X = dz.globalData[humabs_Tampon].getAtTime('00:10:00').data
			Y = dz.globalData[humabs_Tampon].getLatest().data
		end
		
		--[[local Y = dz.globalData[humabs_Tampon].getLatest().data
		if Y == nil then                                              précédente version : bug si il n'y a pas de data stockées
			Y = 50
		end]]--
	
		local Douche_On = 100 * (( Y - X ) / X )  -- Taux d'augmentation de l'humidité absolue dans une SDB
		
		dz.log('====  ' .. sonde.besoin_ventil, dz.LOG_DEBUG)
		dz.log(' = ' .. tostring(dz.variables(sonde.besoin_ventil).value), dz.LOG_DEBUG)
		if (Douche_On >= 20) then
			if dz.variables(sonde.besoin_ventil).value == 'false' then
				dz.variables(sonde.besoin_ventil).set('true')
				dz.log(' = ' .. tostring(dz.variables(sonde.besoin_ventil).value), dz.LOG_DEBUG)
				dz.data[sonde.duree_ventil] = 0
			end
		end
	end
	
	--********************************************************************
	-- calculs pour la salle de bain à l'étage
	--********************************************************************
	local temperature1 = dz.devices(device_temp1).temperature
	local humidity1 = dz.devices(device_hum1).humidity
	local absHumidity1 = HumAbs(temperature1, humidity1)  
	--absHumidity1 = 11.4  -- pour tester

	dz.devices(device_hum_abs1).updateCustomSensor(absHumidity1) -- mis à jour du capteur virtuel de Domoticz
	  
	dz.globalData.HumAbs1.add(absHumidity1)                 -- fonctions statistiques sur l'humidité absolue de ma sdb

	--local Avg_AbsHumidity1_6H = dz.globalData.HumAbs1.avgSince('06:00:00')   -- calcul de la moyenne sur les 6 dernières heures de l'humidité relative
	local Cible1 = dz.globalData.HumAbs1.avgSince('02:00:00')	-- Cible1 est la valeur à laquelle on coupe la VMC
	--Avg_AbsHumidity1 = 11
	 
    dz.log('------------------------------------', dz.LOG_DEBUG)
	dz.log('Humidité absolue sdb étage =' .. absHumidity1, dz.LOG_DEBUG)
	dz.log('Cible humidité absolue sdb étage =' .. Cible1, dz.LOG_DEBUG)
	dz.log('------------------------------------', dz.LOG_DEBUG)
	dz.log("dz.variables('Besoin_Ventilation_SDB_1') =" .. tostring(dz.variables('Besoin_Ventilation_SDB_1').value), dz.LOG_DEBUG)

	  ----------------------------------------------------------------------------------------
	  -- S'il y a demande de ventilation
	  ----------------------------------------------------------------------------------------
	if (dz.variables('Besoin_Ventilation_SDB_1').value == 'true') then
		----------------------------------------------------------------------------
		-- si l'humidité absolue est en dessous du seuil souhaité mais que la ventilation 
		-- est toujours en marche alors on passe la ventilation à OFF et on affecte 0
		-- à la valeur cible d'humidité
		-----------------------------------------------------------------------------  
		dz.data.Duree_VentilationMin_1 = dz.data.Duree_VentilationMin_1 + 1
		
		if (absHumidity1 <= Cible1 + 0.1) then
						
				dz.log('------------------------------------', dz.LOG_DEBUG)
				dz.log('Durée de ventilation (min) =' .. dz.data.Duree_VentilationMin_1, dz.LOG_DEBUG)
				dz.log('Humidité absolue =' .. absHumidity1, dz.LOG_DEBUG)
				dz.log("Valeur cible d'humidité absolue  =" .. Cible1, dz.LOG_DEBUG)
				dz.log("Valeur cible d'humidité atteinte, on coupe la VMC ", dz.LOG_DEBUG)
				dz.log('------------------------------------', dz.LOG_DEBUG)	
				dz.notify("Domoticz", "Fin du Besoin de ventilation SDB du haut : l'humidité absolue (" .. tostring(absHumidity1) .. 
								" g/m3) a atteint la valeur cible (" .. Cible1 .. " g/m3)", dz.PRIORITY_LOW, "" , NSS_TELEGRAM)
				dz.notify("Domoticz","La ventilation a duré : ".. dz.data.Duree_VentilationMin_1 .. " minutes.", dz.PRIORITY_LOW, "" , NSS_TELEGRAM)
				
				dz.variables('Besoin_Ventilation_SDB_1').set('false')
		end

	end 
	
	  
	-- **************************************************************************************************************************
	-- calculs pour la salle de bain Ewen
	-- **************************************************************************************************************************
	
	local temperature2 = dz.devices(device_temp2).temperature
	local humidity2 = dz.devices(device_hum2).humidity
	local absHumidity2 = HumAbs(temperature2, humidity2)
	--absHumidity1 = 11.4  -- pour tester

	dz.devices(device_hum_abs2).updateCustomSensor(absHumidity2) -- mis à jour du capteur virtuel de Domoticz
	  
	dz.globalData.HumAbs2.add(absHumidity2)                 -- fonctions statistiques sur l'humidité absolue de ma sdb

	--local Avg_AbsHumidity2_6H = dz.globalData.HumAbs2.avgSince('06:00:00')   -- calcul de la moyenne sur les 6 dernières heures de l'humidité relative
	local Cible2 = dz.globalData.HumAbs2.avgSince('02:00:00')	
	--Avg_AbsHumidity1 = 11
	 
    dz.log('------------------------------------', dz.LOG_DEBUG)
	dz.log('Humidité absolue sdb Ewen =' .. absHumidity2, dz.LOG_DEBUG)
	dz.log('Cible humidité absolue sdb Ewen =' .. Cible2, dz.LOG_DEBUG)
	dz.log('------------------------------------', dz.LOG_DEBUG)
	dz.log("dz.variables('Besoin_Ventilation_SDB_2') =" .. tostring(dz.variables('Besoin_Ventilation_SDB_2').value), dz.LOG_DEBUG)
	 
	  ----------------------------------------------------------------------------------------
	  -- S'il y a demande de ventilation
	  ----------------------------------------------------------------------------------------
	if (dz.variables('Besoin_Ventilation_SDB_2').value == 'true') then
		----------------------------------------------------------------------------
		-- si l'humidité absolue est en dessous du seuil souhaité mais que la ventilation 
		-- est toujours en marche alors on passe la ventilation à OFF et on affecte 0
		-- à la valeur cible d'humidité
		-----------------------------------------------------------------------------  
		
		dz.data.Duree_VentilationMin_2 = dz.data.Duree_VentilationMin_2 + 1
		
		if (absHumidity2 <= Cible2 + 0.1) then
						
				dz.log('------------------------------------\n SDB EWEN\n', dz.LOG_DEBUG)
				dz.log('Durée de ventilation (min) =' .. dz.data.Duree_VentilationMin_2, dz.LOG_DEBUG)
				dz.log('Humidité absolue =' .. absHumidity2, dz.LOG_DEBUG)
				dz.log("Valeur cible  =" .. Cible2, dz.LOG_DEBUG)
				dz.log("Valeur cible d'humidité atteinte, on coupe la VMC ", dz.LOG_DEBUG)
				dz.log('------------------------------------', dz.LOG_DEBUG)	
				dz.notify("Domoticz", "Fin du Besoin de ventilation SDB Ewen : l'humidité absolue (" .. tostring(absHumidity2) .. 
								" g/m3) a atteint la valeur cible (" .. Cible2 .. " g/m3)", dz.PRIORITY_LOW, "" , NSS_TELEGRAM)
				dz.notify("Domoticz","SDB Ewen, la ventilation a duré : ".. dz.data.Duree_VentilationMin_2 .. " minutes.", dz.PRIORITY_LOW, "" , NSS_TELEGRAM)
				
				dz.variables('Besoin_Ventilation_SDB_2').set('false')
		end

	end 
	  
	  -- ************************************************************************
	  -- calculs pour la salle de bain Laurie
	  -- ************************************************************************
	
	local temperature3 = dz.devices(device_temp3).temperature
	local humidity3 = dz.devices(device_hum3).humidity
	local absHumidity3 = HumAbs(temperature3, humidity3)
	--absHumidity1 = 11.4  -- pour tester

	dz.devices(device_hum_abs3).updateCustomSensor(absHumidity3) -- mis à jour du capteur virtuel de Domoticz
	  
	dz.globalData.HumAbs3.add(absHumidity3)                 -- fonctions statistiques sur l'humidité absolue de ma sdb

	--local Avg_AbsHumidity3_6H = dz.globalData.HumAbs3.avgSince('06:00:00')   -- calcul de la moyenne sur les 6 dernières heures de l'humidité relative
	local Cible3 = dz.globalData.HumAbs3.avgSince('02:00:00')	
	--Avg_AbsHumidity1 = 11
	 
    dz.log('------------------------------------', dz.LOG_DEBUG)
	dz.log('Humidité absolue sdb Laurie =' .. absHumidity3, dz.LOG_DEBUG)
	dz.log('Cible humidité absolue sdb Laurie =' .. Cible3, dz.LOG_DEBUG)
	dz.log('------------------------------------', dz.LOG_DEBUG)
	dz.log("dz.variables('Besoin_Ventilation_SDB_3') =" .. tostring(dz.variables('Besoin_Ventilation_SDB_3').value), dz.LOG_DEBUG)
  
	  ----------------------------------------------------------------------------------------
	  -- S'il y a demande de ventilation
	  ----------------------------------------------------------------------------------------
	if (dz.variables('Besoin_Ventilation_SDB_3').value == 'true') then
		----------------------------------------------------------------------------
		-- si l'humidité absolue est en dessous du seuil souhaité mais que la ventilation 
		-- est toujours en marche alors on passe la ventilation à OFF et on affecte 0
		-- à la valeur cible d'humidité
		-----------------------------------------------------------------------------  
		
		dz.data.Duree_VentilationMin_3 = dz.data.Duree_VentilationMin_3 + 1
		
		if (absHumidity3 <= Cible3 + 0.1) then
						
				dz.log('------------------------------------\n SDB LAURIE\n', dz.LOG_DEBUG)
				dz.log('Durée de ventilation (min) =' .. dz.data.Duree_VentilationMin_3, dz.LOG_DEBUG)
				dz.log('Humidité absolue =' .. absHumidity3, dz.LOG_DEBUG)
				dz.log("Valeur cible d'humidité absolue =" .. Cible3, dz.LOG_DEBUG)
				dz.log("Valeur cible d'humidité atteinte, on coupe la VMC ", dz.LOG_DEBUG)
				dz.log('------------------------------------', dz.LOG_DEBUG)	
				dz.notify("Domoticz", "Fin du Besoin de ventilation SDB Laurie : \nl'humidité absolue (" .. tostring(absHumidity3) .. 
								" g/m3) a atteint la valeur cible (" .. Cible3 .. " g/m3)", dz.PRIORITY_LOW, "" , NSS_TELEGRAM)
				dz.notify("Domoticz","SDB Laurie, la ventilation a duré : ".. dz.data.Duree_VentilationMin_3 .. " minutes.", dz.PRIORITY_LOW, "" , NSS_TELEGRAM)
				
				dz.variables('Besoin_Ventilation_SDB_3').set('false')
		end

	end 
	  
	
   end   
}

J’imagine que c’est assez confu car c’est l’oeuvre d’un amateur (moi). En le reprenant aujourd’hui, j’ai mis un peu de temps à retrouver la signification de toutes les parties de mon code ! :sweat_smile:

Salut Pardon j’avais Zappé

La méthodologie utilisée:

dans ton configuration.yaml
tu rajoutes un timer

############################
# configuration des timers #
############################    

timer:
  vmc:
    duration: "01:00:00"

puis création de deux automations
la première qui va activer la VMC

alias: Start VMC
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.ble_humidity_thermometre_sdbain
    above: 80
condition: []
action:
  - service: timer.start
    data: {}
    target:
      entity_id: timer.vmc
  - type: turn_on
    device_id: eaa7b253ffd1c3d08362f0008a958a84
    entity_id: switch.vmc_relay
    domain: switch
mode: single

puis la seconde qui va désactiver la VMC quand le timer arrive a zero

alias: Stop VMC by timer
trigger:
  - platform: homeassistant
    event: start
  - platform: event
    event_type: timer.finished
    event_data:
      entity_id: timer.vmc
action:
  - type: turn_off
    device_id: 546e13870e12300556e9eb1e6aa5b736
    entity_id: switch.vmc_relay
    domain: switch

voila ce que ça donne
image

Il reste toujours cette problématique où la valeur d’humidité n’est pas systématiquement atteinte selon les saisons.

Salut
pour ma part j’ai jamais de loupé a toi de modifier le seuil de déclanchement .

Comme tu peux le constater ( bon il fait tres humide en ce moment )
la valeur de l’humidité chez moi ne descent que tres rarement en dessous de 60 %
une douche bien chaude meme rapide declanche facilement l’automatisation, car j’ai une petite pièce

rien ne t’empêche sinon d’utiliser la dérivée
mais pour ma part j’ai eu régulièrement des problèmes de déclanchement

tu te crées donc un nouveau sensor
sensor:

  • platform: derivative
    source: sensor.humidity
    name: humidity change

et tu utilises ce nouveau sensor comme trigger de ton automatisation

Bonjour, j’utilise une méthode beaucoup plus simple pour la vmc.
Une vmc, normalement, ne doit pas être arrêtée. Il faut trouver avec le suivi avec le graphe, les valeurs de l’humidité de la pièce, chacun à une pièce différente des autres.
La valeur sans douche, avec douche, fenêtre ouverte, fermée.

Chez moi,
sans douche, 50 à 60, et - de 50 fenêtre ouverte. vmc vitesse 1
avec douche, supérieur à 60. vmc vitesse 2
ce qui fait 2 automations simple.

2 automations,
VMC V1
Quand humidité SDB en dessous de 60, Vmc V2 désactivée, attend 5s (par sécurité), Vmc V1 activée.
VMC V2
Quand Humidité SDB au dessus de 60, Vmc V1 désactivée, attend 5s (par sécurité), Vmc V2 activée.

Fonctionne tout le temps depuis de nombreuses années d’abord jeedom et maintenant HA depuis 2 ans.
Jamais un raté parce que le changement lors d’une douche et très rapide, le capteur est a 1m de la douche près du plafond. Aeon labs multisensor 6 ZW100

Bonjour, pour ma part, je recommande fortement d’utiliser cette extension pour gérer la vitesse 2 de la VMC. Ça fonctionne parfaitement et c’est bien paramétrable.