first commit

This commit is contained in:
Souti
2025-03-06 11:09:58 +01:00
commit 11f7d440ff
330 changed files with 38306 additions and 0 deletions

601
lua/old/script_time_vmc.old Executable file
View File

@@ -0,0 +1,601 @@
-- http://easydomoticz.com/forum/viewtopic.php?f=17&t=2869&hilit=vmc
require "scripts/lua/fonctions2"
commandArray = {}
--recupere les minutes
time=os.time()
minutes=tonumber(os.date('%M',time))
--jour=tonumber(os.date('%w',time))
heures=tonumber(os.date('%H',time))
if minutes%10 == 6 then
INTERVAL_MESURE = 2 -- Nombre d'intervals de mesure entre deux cycles d'analyse de l'humidité (en nombre de cycles = nombre de minutes)
SEUIL_DECLENCHEMENT_VMC = 2 -- Augmentation en % au-delà de laquelle on déclenche la GV de la VMC
NbCycles_Max_GV_VMC = 5 -- Nombre de cycles maximum durant lequel la GV de la VMC peut rester ON
-- à partir du moment où il n'y a plus d'augmentation de l'humidité entre deux mesures
Anticipation_Arret= 1 -- l'arrêt de la grande vitesse se fera à l'humidité avant déclenchement de la GV plus cette valeur
-- ce qui permet d'anticiper l'arrêt de la grande vitesse avant d'atteindre la valeur initiale
NOM_INTERRUPTEUR_PILOTAGE_VMC = 'VMC'
NOM_INTERRUPTEUR_OnOff_VMC = 'VMC-OnOff'
NOM_INTERRUPTEUR_GV_VMC = 'VMC-GV'
NOM_CAPTEUR_HUMIDITE1 = 'TemperatureSDB'
NOM_CAPTEUR_HUMIDITE2 = 'TemperatureCuisine'
NOM_INTERRUPTEUR_DEBUG = 'Debug'
NOM_INTERRUPTEUR_TEST = 'Test-GV-SDB'
--NOM_CAPTEUR_VIRTUEL_HYGRO_MOYENNE= 'Hygro_Maison_Moyenne'
VALEUR_TEST_HUMIDITE1 = 'VMC_TST_HUM_SDB1' -- valeur de test pour l'umidité positionné dans les variables domoticz
VALEUR_TEST_HUMIDITE2 = 'VMC_TST_HUM_SDB2' -- valeur de test pour l'umidité positionné dans les variables domoticz
-- ---------------------------------------------------------------------
-- Récupération de paramètres de Domoticz passés par les interrupteurs
-- ---------------------------------------------------------------------
if(otherdevices[NOM_INTERRUPTEUR_DEBUG]=='On') then -- Si le mode debug est activé dans Domoticz (inter debug sur on)
MODE_DEBUGG= true
else
MODE_DEBUGG= false
end
if(otherdevices[NOM_INTERRUPTEUR_TEST]=='On') then -- Si le mode test est activé dans Domoticz (inter Test sur on)
MODE_TEST=true
else
MODE_TEST=false
end
-- MODE_TEST=true
if MODE_DEBUGG== true then
print(' ')
print('>>>>>>>>>>>>>> Script de controle de la VMC v1.0 <<<<<<<<<<<<<<<<<<<<<')
end
-- ----------------------------------------------------------------------------------
-- --Récupération de toutes les variables Domoticz servant au script et remise à 0 --
-- ----------------------------------------------------------------------------------
VMC_VAR_Compteur_Cycles = tonumber(uservariables['VMC_VAR_Compteur_Cycles']) -- compteur de cycles
VMC_VAR_Histo_Hum1_SDB1 = tonumber(uservariables['VMC_VAR_Histo_Hum1_SDB1']) -- mesure la plus récente SDB1
VMC_VAR_Histo_Hum1_SDB2 = tonumber(uservariables['VMC_VAR_Histo_Hum1_SDB2']) -- mesure la plus récente SDB2
VMC_VAR_Histo_Hum2_SDB1 = tonumber(uservariables['VMC_VAR_Histo_Hum2_SDB1']) -- mesure la plus ancienne SDB1
VMC_VAR_Histo_Hum2_SDB2 = tonumber(uservariables['VMC_VAR_Histo_Hum2_SDB2']) -- mesure la plus ancienne SDB2
VMC_VAR_Cible_Hum_GV_Off_SDB1 = tonumber(uservariables['VMC_VAR_Cible_Hum_GV_Off_SDB1']) -- Cible à atteindre pour arrêter la deshumidification SDB1 lorsqu'elle est active
VMC_VAR_Cible_Hum_GV_Off_SDB2 = tonumber(uservariables['VMC_VAR_Cible_Hum_GV_Off_SDB2']) -- Cible à atteindre pour arrêter la deshumidification SDB2 lorsqu'elle est active
VMC_VAR_TimerSecuriteArret_SDB1 = tonumber(uservariables['VMC_VAR_TimerSecuriteArret_SDB1']) -- Nb de cycles restants avant l'arrête automatique de sécurité de la SDB1
VMC_VAR_TimerSecuriteArret_SDB2 = tonumber(uservariables['VMC_VAR_TimerSecuriteArret_SDB2']) -- Nb de cycles restants avant l'arrête automatique de sécurité de la SDB2
VMC_VAR_Deshumidification_On_SDB1 = tonumber(uservariables['VMC_VAR_Deshumidification_On_SDB1']) -- Vaut 1 si la deshumidification est en cours dans la SDB1, 0 sinon
VMC_VAR_Deshumidification_On_SDB2 = tonumber(uservariables['VMC_VAR_Deshumidification_On_SDB2']) -- Vaut 1 si la deshumidification est en cours dans la SDB2, 0 sinon
Cible_Humidite_SDB1 = 0 -- Variable servant à calculer la cible d'humidité lorsuqe la déshumidification s'active pour la SDB1
Cible_Humidite_SDB2 = 0 -- Variable servant à calculer la cible d'humidité lorsuqe la déshumidification s'active pour la SDB2
Humidite_Actuelle_EXT = tonumber(otherdevices_humidity["BarometreLaGacilly"])
Temperature_Actuelle_EXt = tonumber(otherdevices_temperature["BarometreLaGacilly"])
-- ********************************************************************
-- SI L'UTILISATEUR A ACTIVé LA VMC DE MANIERE MANUELLE ON N'EXECUTE --
-- PAS LE SCRIPT ET ON POSITIONNE LA VMC A LA BONNNE VALEUR
-- ********************************************************************
Etat_Pilotage_VMC = tonumber(otherdevices_svalues[NOM_INTERRUPTEUR_PILOTAGE_VMC]) -- récupération de l'état de l'inter 4 positions de pilotage de la VMC
print('Etat_Pilotage_VMC='..tostring(Etat_Pilotage_VMC))
if Etat_Pilotage_VMC < 30 then -- Si inter sur mode différent d'automatique (qui vaut 30)
if Etat_Pilotage_VMC == 0 then -- Si inter sur VMC Off
print('VMC arretee manuellement via l interrupteur. Sortie du script')
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'Off'
commandArray[NOM_INTERRUPTEUR_GV_VMC] = 'Off'
end
if Etat_Pilotage_VMC == 10 then -- Si inter sur VMC petite vitesse
print('VMC positionnee en marche / petite vitesse via l interrupteur. Sortie du script')
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'On'
commandArray[NOM_INTERRUPTEUR_GV_VMC] = 'Off'
end
if Etat_Pilotage_VMC == 20 then -- si inter sur VMC grande vitesse
print('VMC positionnee en marche / grande vitesse via l interrupteur. Sortie du script')
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'On'
commandArray[NOM_INTERRUPTEUR_GV_VMC] = 'On'
end
print('NOM_CAPTEUR_HUMIDITE1 '..tostring(tonumber(otherdevices_humidity[NOM_CAPTEUR_HUMIDITE1])))
-- On n'est plus en mode automatique donc on sort du script après l'avoir remis à 0 (réinitialisation de toutes les variables)
commandArray['Variable:VMC_VAR_Compteur_Cycles'] = '0'
commandArray['Variable:VMC_VAR_Histo_Hum2_SDB1'] = tostring(math.floor(tonumber(otherdevices_humidity[NOM_CAPTEUR_HUMIDITE1])))
commandArray['Variable:VMC_VAR_Histo_Hum1_SDB1'] = tostring(math.floor(tonumber(otherdevices_humidity[NOM_CAPTEUR_HUMIDITE1])))
commandArray['Variable:VMC_VAR_Cible_Hum_GV_Off_SDB1'] = '0'
commandArray['Variable:VMC_VAR_TimerSecuriteArret_SDB1'] = '0'
commandArray['Variable:VMC_VAR_Deshumidification_On_SDB1'] = '0'
commandArray['Variable:VMC_VAR_Histo_Hum2_SDB2'] = tostring(math.floor(tonumber(otherdevices_humidity[NOM_CAPTEUR_HUMIDITE2])))
commandArray['Variable:VMC_VAR_Histo_Hum1_SDB2'] = tostring(math.floor(tonumber(otherdevices_humidity[NOM_CAPTEUR_HUMIDITE2])))
commandArray['Variable:VMC_VAR_Cible_Hum_GV_Off_SDB2'] = '0'
commandArray['Variable:VMC_VAR_TimerSecuriteArret_SDB2'] = '0'
commandArray['Variable:VMC_VAR_Deshumidification_On_SDB2'] = '0'
return commandArray
end
print('mode automatique')
-- **************************************
-- Recuperation des valeurs d'humidite
-- **************************************
if (MODE_TEST) then
-- Si on est en mode test, on prends les valeurs fixées dans les variables DOMOTICZ
Humidite_Actuelle_SDB1 = tonumber(uservariables['VMC_TST_HUM_SDB1'])
Humidite_Actuelle_SDB2 = tonumber(uservariables['VMC_TST_HUM_SDB2'])
Hygro_Moyenne_Maison = tonumber(uservariables['VMC_TST_HUM_MOYENNE_MAISON'])
else
-- Si on est en mode normal, on prends les valeurs remontées par les capteurs
Humidite_Actuelle_SDB1 = otherdevices_humidity[NOM_CAPTEUR_HUMIDITE1]
Humidite_Actuelle_SDB2 = otherdevices_humidity[NOM_CAPTEUR_HUMIDITE2]
Humidite_Actuelle_CELLIER = otherdevices_humidity["TemperatureCellier"]
Hygro_Moyenne_Maison = math.max(Humidite_Actuelle_SDB1, Humidite_Actuelle_CELLIER) -- otherdevices_humidity[NOM_CAPTEUR_VIRTUEL_HYGRO_MOYENNE]
end
print('Hygro_Moyenne_Maison='..tostring(Hygro_Moyenne_Maison))
-- L'humidité maximum acceptable dans la salle de bain est le maximum de la valeur moyenne humidité
-- en cours dans la maison et de la valeur fixées
-- Cette humidité max permet de maintenir la VMC en petite vitesse même si l'humidité de la salle de
-- bain est redescendue après un pic
Maximum_Humidite_Acceptable_SDB = math.max(tonumber(uservariables['Hygro_Max_SDB']), Hygro_Moyenne_Maison)
-- ******************************************************************************
-- Sortie du script si les valeurs d'humidité récupérées ne sont pas exploitables
-- *******************************************************************************
if (Humidite_Actuelle_SDB1 == 0 or Humidite_Actuelle_SDB1 == nil) then
print('Pas de signal du capteur ' .. NOM_CAPTEUR_HUMIDITE1 .. '. Sortie du script')
return commandArray
end
if (Humidite_Actuelle_SDB2 == 0 or Humidite_Actuelle_SDB2 == nil) then
print('Pas de signal du capteur ' .. NOM_CAPTEUR_HUMIDITE2 .. '. Sortie du script')
return commandArray
end
if (Hygro_Moyenne_Maison== 0 or Hygro_Moyenne_Maison== nil) then
print('Pas de signal du capteur virtuel d humidite moyenne de la maison, Sortie du script')
return commandArray
end
print('Les capteurs sont ok ')
-- ************************************************************************************
-- Le script est executé toutes les minutes, on augmente la valeur du compteur de cycle
-- ************************************************************************************
VMC_VAR_Compteur_Cycles = VMC_VAR_Compteur_Cycles + 1
-- ***************************************************************************************************
-- On commence par traiter l'humidité globale de la maison pour savoir si la VMC doit être activée ou non
-- ***************************************************************************************************
local humidite_ext = humiditeAbsolue(Temperature_Actuelle_EXt, Humidite_Actuelle_EXT)
local humidite_sdb = humiditeAbsolue(tonumber(otherdevices_temperature["TemperatureSDB"]),
tonumber(otherdevices_humidity["TemperatureSDB"]))
if humidite_ext > humidite_sdb then
print("L'humidité extérieure est trop élevée. Arret VMC")
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'Off'
commandArray[NOM_INTERRUPTEUR_GV_VMC] = 'Off'
return commandArray
else
if Hygro_Moyenne_Maison > uservariables['Hygro_Max_Maison'] then
Hygro_Max_Depassee = 1 -- L'humidité de la maison est trop importante on active la VMC
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'On'
else -- L'humidité de la maison est correcte
Hygro_Max_Depassee = 0
if VMC_VAR_Deshumidification_On_SDB1 == 0 and VMC_VAR_Deshumidification_On_SDB2 == 0 then
if Humidite_Actuelle_SDB1 <= Maximum_Humidite_Acceptable_SDB and
Humidite_Actuelle_SDB2 <= Maximum_Humidite_Acceptable_SDB
then
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'Off' -- on arrête la VMC si aucune des salles de bains n'est utilisée et que l'humidité des salles de bain est acceptable
else
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'On' -- on allume la VMC si aucune des salles de bains n'est utilisée mais que l'humidité des salles de bain n'est pas acceptable
end
end
end
end
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
print('***************')
print('ETAT ACTUEL : ')
print('***************')
if Hygro_Moyenne_Maison <= uservariables['Hygro_Max_Maison']
and VMC_VAR_Deshumidification_On_SDB1 ==0
and VMC_VAR_Deshumidification_On_SDB2 == 0
then
if Humidite_Actuelle_SDB1 <= Maximum_Humidite_Acceptable_SDB and Humidite_Actuelle_SDB2 <= Maximum_Humidite_Acceptable_SDB then
print('[Hygro Maison] - Hygrometrie correcte (' .. Hygro_Moyenne_Maison .. '% vs ' .. uservariables['Hygro_Max_Maison'] ..'% max) et aucune salle de bain en cours d utilisation, desactivation de la vmc')
else
print('[Hygro Maison] - Hygrometrie correcte (' .. Hygro_Moyenne_Maison .. '% vs ' .. uservariables['Hygro_Max_Maison'] ..'% max), aucune salle de bain en cours d utilisation mais humidite SDB toujours trop elevee, VMC laissee active en petite vitesse')
end
else
if VMC_VAR_Deshumidification_On_SDB1 ==0 and VMC_VAR_Deshumidification_On_SDB2 == 0 then
print('[Hygro Maison] - Hygrometrie incorrect (' .. Hygro_Moyenne_Maison .. '% vs ' .. uservariables['Hygro_Max_Maison'] ..'% max), maintien de la VMC meme si aucune salle de bain en cours d utilisation')
end
end
if VMC_VAR_Deshumidification_On_SDB1 == 0 then
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - Deshumidification OFF - actuelle : ' .. Humidite_Actuelle_SDB1 .. '% / Precedente : ' .. VMC_VAR_Histo_Hum1_SDB1 .. '% / Cycle -2 : ' .. VMC_VAR_Histo_Hum2_SDB1 .. '%')
else
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - Deshumidification ON - actuelle : ' .. Humidite_Actuelle_SDB1 .. '% / Precedente : ' .. VMC_VAR_Histo_Hum1_SDB1 ..'% / Cycle -2 : ' .. VMC_VAR_Histo_Hum2_SDB1 .. '% / Cible arret : ' .. VMC_VAR_Cible_Hum_GV_Off_SDB1 .. '% / arret de securite dans ' .. VMC_VAR_TimerSecuriteArret_SDB1 .. ' cycle(s)')
end
if VMC_VAR_Deshumidification_On_SDB2 == 0 then
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - Deshumidification OFF - actuelle : ' .. Humidite_Actuelle_SDB2 .. '% / Precedente : ' .. VMC_VAR_Histo_Hum1_SDB2 .. '% / Cycle -2 : ' .. VMC_VAR_Histo_Hum2_SDB2 .. '%')
else
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - Deshumidification ON - actuelle : ' .. Humidite_Actuelle_SDB2 .. '% / Precedente : ' .. VMC_VAR_Histo_Hum1_SDB2 ..'% / Cycle -2 : ' .. VMC_VAR_Histo_Hum2_SDB2 .. '% / Cible arret : ' .. VMC_VAR_Cible_Hum_GV_Off_SDB2 .. '% / arret de securite dans ' .. VMC_VAR_TimerSecuriteArret_SDB2 .. ' cycle(s)')
end
end
if (VMC_VAR_Compteur_Cycles >= INTERVAL_MESURE) then
-- *************************************************************************************
-- Si le nombre de cycles a atteint l'interval de mesure fixé on commence l'analyse pour
-- identifier les besoins d'activation ou désactivation de la grande vitesse de la VMC
-- *************************************************************************************
VMC_VAR_Compteur_Cycles = 0 -- remise à 0 du compteur de cycle
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
print(' ')
print('***************')
print('ANALYSE : ')
print('***************')
print('Nombre de cycles atteint (' .. VMC_VAR_Compteur_Cycles .. '/' .. INTERVAL_MESURE .. '), realisation des tests pour adapter la vitesse VMC')
end
-- ***************************************************************************
-- Initialisation des historiques s'ils ne contiennent aucune information. On
-- positionne alors dans les deux historiques les valeurs d'hulidité actuelles
-- ***************************************************************************
if (VMC_VAR_Histo_Hum1_SDB1 == 0) then
-- Initialisation des valeurs historiques
VMC_VAR_Histo_Hum1_SDB1 = Humidite_Actuelle_SDB1
VMC_VAR_Histo_Hum2_SDB1 = Humidite_Actuelle_SDB1
end
if (VMC_VAR_Histo_Hum1_SDB2 == 0) then
-- Initialisation des valeurs historiques
VMC_VAR_Histo_Hum1_SDB2 = Humidite_Actuelle_SDB2
VMC_VAR_Histo_Hum2_SDB2 = Humidite_Actuelle_SDB2
end
-- ********************************************************************
-- Calcul des écarts maximum d'humidité constatés dans chacune des SDB
-- ********************************************************************
Ecart_Max_Humidite_SDB1 = Humidite_Actuelle_SDB1 - math.min(VMC_VAR_Histo_Hum2_SDB1, VMC_VAR_Histo_Hum1_SDB1)
Ecart_Max_Humidite_SDB2 = Humidite_Actuelle_SDB2 - math.min(VMC_VAR_Histo_Hum2_SDB2, VMC_VAR_Histo_Hum1_SDB2)
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - Ecart max d humidite constate sur les dernieres periodes : ' .. Ecart_Max_Humidite_SDB1)
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - Ecart max d humidite constate sur les dernieres periodes : ' .. Ecart_Max_Humidite_SDB2)
end
-- ********************************************************************************************************
-- Identification de la cible humidité à atteindre si la grande vitesse de la VMC est activée. Il s'agira
-- de redescendre à la plus basse des valeurs d'humidité de l'historique + un % défini dans "Anticipation_Arret"
-- ********************************************************************************************************
Cible_Humidite_SDB1 = math.min(VMC_VAR_Histo_Hum2_SDB1, VMC_VAR_Histo_Hum1_SDB1) + Anticipation_Arret
Cible_Humidite_SDB2 = math.min(VMC_VAR_Histo_Hum2_SDB2, VMC_VAR_Histo_Hum1_SDB2) + Anticipation_Arret
-- *****************************************************************************
-- Sauvegarde dans l'historique des mesures précédentes et de la mesure actuelle
-- *****************************************************************************
VMC_VAR_Histo_Hum2_SDB1 = VMC_VAR_Histo_Hum1_SDB1 -- L'historique le plus ancien reçoit l'historique plus récent de l'humidité
VMC_VAR_Histo_Hum2_SDB2 = VMC_VAR_Histo_Hum1_SDB2
VMC_VAR_Histo_Hum1_SDB1 = Humidite_Actuelle_SDB1 -- L'historique plus récent reçoit la valeur actuelle d'humidité
VMC_VAR_Histo_Hum1_SDB2 = Humidite_Actuelle_SDB2
-- ********************************************************************************************************
-- Remise à 0 des indicateurs précisant s'il y a eu un déclenchement de la GV pour une des SDB lors
-- de l'execution du script en cours. Pour l'instant aucune mise en route n'a été décidée/effectuée
-- ********************************************************************************************************
Declenchement_SDB1 = 0
Declenchement_SDB2 = 0
-- *****************************************************************************
-- Si le ventilateur est off alors qu'un des deux programmes est en route, on
-- force l'arrêt des programmes de déshumidification (arrêt manuel extérieur)
-- *****************************************************************************
if (otherdevices[NOM_INTERRUPTEUR_GV_VMC]=='Off')
and (VMC_VAR_Deshumidification_On_SDB1 == 1 or VMC_VAR_Deshumidification_On_SDB2 ==1)
then
VMC_VAR_Deshumidification_On_SDB1 = 0
VMC_VAR_Deshumidification_On_SDB2 = 0
end
-- *****************************************************************************************
-- Si la VMC n'est pas en grande vitesse ou si une des deux SDB n'est pas en grande vitesse
-- on identifie s'il est nécessaire de mettre en route la marche forcée pour une des SDBs
-- *****************************************************************************************
if otherdevices[NOM_INTERRUPTEUR_GV_VMC]=='Off'
or VMC_VAR_Deshumidification_On_SDB1 == 0
or VMC_VAR_Deshumidification_On_SDB2 == 0
then
-- **************************************************************************
-- Identification du besoin éventuel de déclenchement de la VMC pour la SDB1
-- Besoin identifié si humidité > au seuil de déclenchement et que le programme
-- de déshumidification n'est pas déjà activé pour cette SDB
-- **************************************************************************
if Ecart_Max_Humidite_SDB1 >= SEUIL_DECLENCHEMENT_VMC and VMC_VAR_Deshumidification_On_SDB1 == 0 then
commandArray[NOM_INTERRUPTEUR_GV_VMC] = 'On'
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'On'
VMC_VAR_Deshumidification_On_SDB1 = 1
VMC_VAR_Cible_Hum_GV_Off_SDB1 = Cible_Humidite_SDB1
VMC_VAR_TimerSecuriteArret_SDB1 = NbCycles_Max_GV_VMC
Declenchement_SDB1 = 1
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - Augmentation soudaine de l humidite. Activation de la VMC en grande vitesse. Ecart d humidite observe: ' .. Ecart_Max_Humidite_SDB1)
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - Cible a atteindre pour l extinction du ventilateur : ' ..VMC_VAR_Cible_Hum_GV_Off_SDB1)
end
else
if MODE_DEBUGG== true and Ecart_Max_Humidite_SDB2 >= SEUIL_DECLENCHEMENT_VMC and VMC_VAR_Deshumidification_On_SDB1 == 0 then
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - Ecart non significatif, pas de mise en route du programme de deshumidification')
end
end
-- **************************************************************************
-- Identification du besoin éventuel de déclenchement de la VMC pour la SDB2
-- Besoin identifié si humidité > au seuil de déclenchement et que le programme
-- de déshumidification n'est pas déjà activé pour cette SDB
-- **************************************************************************
if Ecart_Max_Humidite_SDB2 >= SEUIL_DECLENCHEMENT_VMC and VMC_VAR_Deshumidification_On_SDB2 == 0 then
commandArray[NOM_INTERRUPTEUR_GV_VMC] = 'On'
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'On'
VMC_VAR_Deshumidification_On_SDB2 = 1
VMC_VAR_Cible_Hum_GV_Off_SDB2 = Cible_Humidite_SDB2
VMC_VAR_TimerSecuriteArret_SDB2 = NbCycles_Max_GV_VMC
Declenchement_SDB2 = 1
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - Augmentation soudaine de l humidite. Activation de la VMC en grande vitesse. Ecart d humidite observe: ' .. Ecart_Max_Humidite_SDB2)
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - Cible a atteindre pour l extinction du ventilateur : ' ..VMC_VAR_Cible_Hum_GV_Off_SDB2)
end
else
if MODE_DEBUGG== true and Ecart_Max_Humidite_SDB1 >= SEUIL_DECLENCHEMENT_VMC and VMC_VAR_Deshumidification_On_SDB2 == 0 then
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - Ecart non significatif, pas de mise en route du programme de deshumidification')
end
end
end
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if Ecart_Max_Humidite_SDB1 < SEUIL_DECLENCHEMENT_VMC
and Ecart_Max_Humidite_SDB2 < SEUIL_DECLENCHEMENT_VMC
then
if MODE_DEBUGG== true then
print('Ecarts non significatif sur les deux SDB, pas de mise en route du programme de deshumidification')
end
end
-- *****************************************************************************************
-- Si la VMC est en grande vitesse après l'analyse du besoin effectuée ci-dessus
-- *****************************************************************************************
if (otherdevices[NOM_INTERRUPTEUR_GV_VMC]=='On') or VMC_VAR_Deshumidification_On_SDB1 == 1 or VMC_VAR_Deshumidification_On_SDB2 == 1 then
if (VMC_VAR_TimerSecuriteArret_SDB1 > 0) then -- Si le déshumidification est en courspour la SDB1 on diminue
VMC_VAR_TimerSecuriteArret_SDB1 = VMC_VAR_TimerSecuriteArret_SDB1 - 1 -- la valeur du timer de sécurité pour l'arrêt automatique
end
if (VMC_VAR_TimerSecuriteArret_SDB2 > 0) then -- Si le déshumidification est en courspour la SDB2 on diminue
VMC_VAR_TimerSecuriteArret_SDB2 = VMC_VAR_TimerSecuriteArret_SDB2 - 1 -- la valeur du timer de sécurité pour l'arrêt automatique
end
end
-- *****************************************************************************************
-- Si la VMC est en grande vitesse pour la SDB1 et que l'humidité continue d'augmenter
-- *****************************************************************************************
if (VMC_VAR_Deshumidification_On_SDB1 == 1) then
if (Ecart_Max_Humidite_SDB1 >= SEUIL_DECLENCHEMENT_VMC and Declenchement_SDB1 == 0) then
-- S'il y a encore un écart d'humidité constaté sur la dernière période (augmentation humidité toujours en cours) et qu'il n'y a pas
-- eu de déclenchement dans ce cycle, on considère qu'on n'a pas encore atteint l'humidité max et on remet à 0 la VMC_VAR_TimerSecuriteArret_SDB1
VMC_VAR_TimerSecuriteArret_SDB1 = NbCycles_Max_GV_VMC
if MODE_DEBUGG== true then
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - L humidite est toujours en augmentation, remise a 0 de la Securite Arret. Ecart constate sur la derniere periode : ' .. Ecart_Max_Humidite_SDB1)
end
end
end
-- *****************************************************************************************
-- Si la VMC est en grande vitesse pour la SDB2 et que l'humidité continue d'augmenter
-- *****************************************************************************************
if (VMC_VAR_Deshumidification_On_SDB2 == 1) then
if (Ecart_Max_Humidite_SDB2 >= SEUIL_DECLENCHEMENT_VMC and Declenchement_SDB2 == 0) then
-- S'il y a encore un écart d'humidité constaté sur la dernière période (augmentation humidité toujours en cours) et qu'il n'y a pas
-- eu de déclenchement dans ce cycle, on considère qu'on n'a pas encore atteint l'humidité max et on remet à 0 la VMC_VAR_TimerSecuriteArret_SDB2
VMC_VAR_TimerSecuriteArret_SDB2 = NbCycles_Max_GV_VMC
if MODE_DEBUGG== true then
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - L humidite est toujours en augmentation, remise a 0 de la Securite Arret. Ecart constate sur la derniere periode : ' .. Ecart_Max_Humidite_SDB2)
end
end
end
-- *************************************************************************************************************
-- Analyse pour identifier si la grande vitesse peut être arrêtée si elle a été activée auparavant.
-- Si les Timers de sécurité sont atteints ou que l'humidité est redescendu pour les deux SDB on
-- arrête la grande vitesse et on regarde si on peut arrêter complètement la VMC (si l'humidité globale est Ok)
-- *************************************************************************************************************
if (VMC_VAR_TimerSecuriteArret_SDB1 == 0 or Humidite_Actuelle_SDB1 <= VMC_VAR_Cible_Hum_GV_Off_SDB1) and (VMC_VAR_TimerSecuriteArret_SDB2 == 0 or Humidite_Actuelle_SDB2 <= VMC_VAR_Cible_Hum_GV_Off_SDB2) then
commandArray[NOM_INTERRUPTEUR_GV_VMC] = 'Off'
if Hygro_Max_Depassee == 0 then -- Si l'humidité maximum globale de la maison n'est pas atteinte
if Humidite_Actuelle_SDB1<= uservariables['Hygro_Max_SDB'] and Humidite_Actuelle_SDB2<= uservariables['Hygro_Max_SDB'] then -- Si l'humidité des deux SDB est inférieure à l'humidité maximum acceptable dans une SDB
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'Off' -- on arrête complètement la VMC
if MODE_DEBUGG== true then
print('[Hygro Maison] - Hygrometrie correcte (' .. Hygro_Moyenne_Maison .. '% vs ' .. uservariables['Hygro_Max_Maison'] ..'% max) et aucune salle de bain en cours d utilisation, desactivation de la vmc')
end
else
-- sinon (hygro maison Ok, mais humidité d'une des deux SDB dépasse la valeur maximum acceptable), on active la VMC en petite vitesse
commandArray[NOM_INTERRUPTEUR_OnOff_VMC] = 'On'
if MODE_DEBUGG== true then
print('[Hygro Maison] - Hygrometrie correcte (' .. Hygro_Moyenne_Maison .. '% vs ' .. uservariables['Hygro_Max_Maison'] ..'% max), aucune salle de bain en cours d utilisation mais humidite SDB toujours trop elevee, VMC laissee active en petite vitesse')
end
end
end
end
-- *************************************************************************************************************
-- Analyse pour identifier s'il faut arrêter la grande vitesse suite à atteinte du timer de sécurité sur la SDB1
-- *************************************************************************************************************
if (VMC_VAR_TimerSecuriteArret_SDB1 == 0 and Humidite_Actuelle_SDB1 > VMC_VAR_Cible_Hum_GV_Off_SDB1 and VMC_VAR_Deshumidification_On_SDB1 == 1) then
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - L humidite n est pas redescendue a sa valeur initiale (avant activation de la grande vitesse) mais le TimeOut de securite pour l arret est atteint. Arret de la grande vitesse de la VMC pour ' .. NOM_CAPTEUR_HUMIDITE1)
end
-- Si on a atteint le timer de sécurité on réinitialise l'historique avec la valeur d'hulidité actuelle ainsi que les variables de la SDB1
VMC_VAR_Histo_Hum2_SDB1 = VMC_VAR_Histo_Hum1_SDB1
VMC_VAR_Deshumidification_On_SDB1 = 0
VMC_VAR_Cible_Hum_GV_Off_SDB1 = 0
VMC_VAR_TimerSecuriteArret_SDB1 = 0
VMC_VAR_Deshumidification_On_SDB1 = 0
end
-- *************************************************************************************************************
-- Analyse pour identifier s'il faut arrêter la grande vitesse suite à retour à au taux d'humidité initial sur la SDB1
-- *************************************************************************************************************
if (VMC_VAR_TimerSecuriteArret_SDB1 > 0 and Humidite_Actuelle_SDB1 <= VMC_VAR_Cible_Hum_GV_Off_SDB1 and VMC_VAR_Deshumidification_On_SDB1 == 1) then
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - L humidite est redescendue a une valeur proche de sa valeur initiale ('.. VMC_VAR_Cible_Hum_GV_Off_SDB1 ..'%). Arret de la grande vitesse de la VMC pour ' .. NOM_CAPTEUR_HUMIDITE1)
end
-- On réinitialise l'historique avec la valeur d'hulidité actuelle ainsi que les variables de la SDB1
VMC_VAR_Histo_Hum2_SDB1 = VMC_VAR_Histo_Hum1_SDB1
VMC_VAR_Deshumidification_On_SDB1 = 0
VMC_VAR_Cible_Hum_GV_Off_SDB1 = 0
VMC_VAR_TimerSecuriteArret_SDB1 = 0
VMC_VAR_Deshumidification_On_SDB1 = 0
end
-- *************************************************************************************************************
-- Analyse pour identifier s'il faut arrêter la grande vitesse suite à atteinte du timer de sécurité sur la SDB2
-- *************************************************************************************************************
if (VMC_VAR_TimerSecuriteArret_SDB2 == 0 and Humidite_Actuelle_SDB2 > VMC_VAR_Cible_Hum_GV_Off_SDB2 and VMC_VAR_Deshumidification_On_SDB2 == 1) then
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - L humidite n est pas redescendue a sa valeur initiale (avant activation de la grande vitesse) mais le TimeOut de securite pour l arret est atteint. Arret de la grande vitesse de la VMC pour ' .. NOM_CAPTEUR_HUMIDITE2)
end
-- Si on a atteint le timer de sécurité on réinitialise l'historique avec la valeur d'hulidité actuelle ainsi que les variables de la SDB2
VMC_VAR_Deshumidification_On_SDB2 = 0
VMC_VAR_Cible_Hum_GV_Off_SDB2 = 0
VMC_VAR_TimerSecuriteArret_SDB2 = 0
VMC_VAR_Deshumidification_On_SDB2 = 0
VMC_VAR_Histo_Hum2_SDB2 = VMC_VAR_Histo_Hum1_SDB2
end
-- *************************************************************************************************************
-- Analyse pour identifier s'il faut arrêter la grande vitesse suite à retour à au taux d'humidité initial sur la SDB2
-- *************************************************************************************************************
if (VMC_VAR_TimerSecuriteArret_SDB2 > 0 and Humidite_Actuelle_SDB2 <= VMC_VAR_Cible_Hum_GV_Off_SDB2 and VMC_VAR_Deshumidification_On_SDB2 == 1) then
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - L humidite est redescendue a une valeur proche de sa valeur initiale ('.. VMC_VAR_Cible_Hum_GV_Off_SDB2 ..'%). Arret de la grande vitesse de la VMC pour ' .. NOM_CAPTEUR_HUMIDITE2)
end
-- On réinitialise l'historique avec la valeur d'hulidité actuelle ainsi que les variables de la SDB2
VMC_VAR_Deshumidification_On_SDB2 = 0
VMC_VAR_Cible_Hum_GV_Off_SDB2 = 0
VMC_VAR_TimerSecuriteArret_SDB2 = 0
VMC_VAR_Deshumidification_On_SDB2 = 0
VMC_VAR_Histo_Hum2_SDB2 = VMC_VAR_Histo_Hum1_SDB2
end
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
if (Humidite_Actuelle_SDB1 > VMC_VAR_Cible_Hum_GV_Off_SDB1 and VMC_VAR_TimerSecuriteArret_SDB1 > 0 and Declenchement_SDB1 == 0) then
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - Deshumidification toujours en cours, humidite actuelle = ' .. Humidite_Actuelle_SDB1.. '% ,cible = ' .. VMC_VAR_Cible_Hum_GV_Off_SDB1 .. '% ,TimerSecurite= ' .. VMC_VAR_TimerSecuriteArret_SDB1)
end
if (Humidite_Actuelle_SDB2 > VMC_VAR_Cible_Hum_GV_Off_SDB2 and VMC_VAR_TimerSecuriteArret_SDB2 > 0 and Declenchement_SDB2 == 0) then
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - Deshumidification toujours en cours, humidite actuelle = ' .. Humidite_Actuelle_SDB2.. '% ,cible = ' .. VMC_VAR_Cible_Hum_GV_Off_SDB2 .. '% ,TimerSecurite= ' .. VMC_VAR_TimerSecuriteArret_SDB2)
end
end
else
-- -----------------------------------
-- Affichage des infos en mode debug
-- -----------------------------------
if MODE_DEBUGG== true then
print('Nombre de cycles avant la realisation des tests d adaptation de la vitesse VMC non atteint (' .. VMC_VAR_Compteur_Cycles .. '/' .. INTERVAL_MESURE .. ')')
end
end
-- *******************************************************
-- Si la VMC est arrêtée on arrête aussi la grande vitesse
-- *******************************************************
if commandArray[NOM_INTERRUPTEUR_OnOff_VMC] == 'Off' then
commandArray[NOM_INTERRUPTEUR_GV_VMC] = 'Off'
end
if MODE_DEBUGG== true then
print(' ')
print('***************')
print('ETAT EN SORTIE : ')
print('***************')
if VMC_VAR_Deshumidification_On_SDB1 == 0 then
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - Deshumidification OFF - actuelle : ' .. Humidite_Actuelle_SDB1 .. '% / Precedente : ' .. VMC_VAR_Histo_Hum1_SDB1 .. '% / Cycle -2 : ' .. VMC_VAR_Histo_Hum2_SDB1 .. '%')
else
print('[' .. NOM_CAPTEUR_HUMIDITE1 .. '] - Deshumidification ON - actuelle : ' .. Humidite_Actuelle_SDB1 .. '% / Precedente : ' .. VMC_VAR_Histo_Hum1_SDB1 ..'% / Cycle -2 : ' .. VMC_VAR_Histo_Hum2_SDB1 .. '% / Cible arret : ' .. VMC_VAR_Cible_Hum_GV_Off_SDB1 .. '% / arret de securite dans ' .. VMC_VAR_TimerSecuriteArret_SDB1 .. ' cycle(s)')
end
if VMC_VAR_Deshumidification_On_SDB2 == 0 then
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - Deshumidification OFF - actuelle : ' .. Humidite_Actuelle_SDB2 .. '% / Precedente : ' .. VMC_VAR_Histo_Hum1_SDB2 .. '% / Cycle -2 : ' .. VMC_VAR_Histo_Hum2_SDB2 .. '%')
else
print('[' .. NOM_CAPTEUR_HUMIDITE2 .. '] - Deshumidification ON - actuelle : ' .. Humidite_Actuelle_SDB2 .. '% / Precedente : ' .. VMC_VAR_Histo_Hum1_SDB2 ..'% / Cycle -2 : ' .. VMC_VAR_Histo_Hum2_SDB2 .. '% / Cible arret : ' .. VMC_VAR_Cible_Hum_GV_Off_SDB2 .. '% / arret de securite dans ' .. VMC_VAR_TimerSecuriteArret_SDB2 .. ' cycle(s)')
end
if Hygro_Moyenne_Maison <= uservariables['Hygro_Max_Maison'] and VMC_VAR_Deshumidification_On_SDB1 ==0 and VMC_VAR_Deshumidification_On_SDB2 == 0 then
if Humidite_Actuelle_SDB1 <= Maximum_Humidite_Acceptable_SDB and Humidite_Actuelle_SDB2 <= Maximum_Humidite_Acceptable_SDB then
print('[Hygro Maison] - Hygrometrie correcte (' .. Hygro_Moyenne_Maison .. '% vs ' .. uservariables['Hygro_Max_Maison'] ..'% max) et aucune salle de bain en cours d utilisation, VMC desactivee')
else
print('[Hygro Maison] - Hygrometrie correcte (' .. Hygro_Moyenne_Maison .. '% vs ' .. uservariables['Hygro_Max_Maison'] ..'% max), aucune salle de bain en cours d utilisation mais humidite SDB toujours trop elevee, VMC laissee active en petite vitesse')
end
else
if Hygro_Moyenne_Maison > uservariables['Hygro_Max_Maison'] then
print('[Hygro Maison] - Hygrometrie incorrecte (' .. Hygro_Moyenne_Maison .. '% vs ' .. uservariables['Hygro_Max_Maison'] ..'% max), VMC activee')
end
end
end
-- Sauvegarde des variables
commandArray['Variable:VMC_VAR_Compteur_Cycles'] = tostring(VMC_VAR_Compteur_Cycles)
commandArray['Variable:VMC_VAR_Histo_Hum2_SDB1'] = tostring(math.floor(tonumber(VMC_VAR_Histo_Hum2_SDB1)))
commandArray['Variable:VMC_VAR_Histo_Hum1_SDB1'] = tostring(math.floor(tonumber(VMC_VAR_Histo_Hum1_SDB1)))
commandArray['Variable:VMC_VAR_Cible_Hum_GV_Off_SDB1'] = tostring(VMC_VAR_Cible_Hum_GV_Off_SDB1)
commandArray['Variable:VMC_VAR_TimerSecuriteArret_SDB1'] = tostring(VMC_VAR_TimerSecuriteArret_SDB1)
commandArray['Variable:VMC_VAR_Deshumidification_On_SDB1'] = tostring(VMC_VAR_Deshumidification_On_SDB1)
commandArray['Variable:VMC_VAR_Histo_Hum2_SDB2'] = tostring(math.floor(tonumber(VMC_VAR_Histo_Hum2_SDB2)))
commandArray['Variable:VMC_VAR_Histo_Hum1_SDB2'] = tostring(math.floor(tonumber(VMC_VAR_Histo_Hum1_SDB2)))
commandArray['Variable:VMC_VAR_Cible_Hum_GV_Off_SDB2'] = tostring(VMC_VAR_Cible_Hum_GV_Off_SDB2)
commandArray['Variable:VMC_VAR_TimerSecuriteArret_SDB2'] = tostring(VMC_VAR_TimerSecuriteArret_SDB2)
commandArray['Variable:VMC_VAR_Deshumidification_On_SDB2'] = tostring(VMC_VAR_Deshumidification_On_SDB2)
end
return commandArray