Bonsoir Greg.O,
Solutions que j'ai retenu pour ma part:
1 Fibaro FGR 222 Près du tableau de distribution pour couper la phase avant l'interrupteur existant qui permet quand à lui de forcer l'arrêt, de choisirr une des deux vitesses (Interrupteur type "volet roulant" qui permet une protection Mécanique pour ne pas alimenter les deux vitesse en même temps)
Il te reste un deuxième contact pour un autre usage.
Pour le pilotage, soit choix différents modes gérés par Blockly et des sondes DANSFOSS avec des seuils Pré établis de % H , Manuellement etc ..
soit par le Script du WIKI que je teste depuis quelques semaines et qui fonctionne pas Mal.
https://www.domoticz.com/wiki/Humidity_control
Voici une version en grande partie "Francisée"
Code : Tout sélectionner
--[[
script_time_humidity.lua https://www.domoticz.com/wiki/Humidity_control
Créez d'abord les variables utilisateur suivantes dans Domoticz en accédant à <domoticzserver> / # / UserVariables:
humCounter : (type = entier, valeur = 0)
humidityTmin5 : (type = entier, valeur = 0)
humidityTmin10 : (type = entier, valeur = 0)
targetFanOffHumidity : (type = entier, valeur = 0)
fanMaxTimer : (type = entier, valeur = 0)
fanFollowsProgram : (type = entier, valeur = 0)
Note: le script prendra soin des valeurs de ces variables alors ne les éditez pas vous-même! Il est nécessaire de contrôler l'état et les valeurs de report entre chaque exécution de script.
Ce script contrôle l'humidité dans un réglage de salle de bain typique en détectant
des augmentations relatives de l'humidité sur une courte période.
Bien sûr, il nécessite un capteur d'humidité et un commutateur binaire contrôlant un ventilateur / ventilateur.
(il n'y a pas de disposition pour les ventilateurs à vitesse variable ici!)
Comment cela fonctionne (en supposant les constantes par défaut telles que définies ci-dessous):
Toutes les 5 minutes, une lecture est faite. Chaque lecture est stockée ensemble
avec la lecture précédente et est stocké dans deux variables utilisateur (humiditéTmin5 et humiditéTmin10).
Donc, il a deux lectures au cours des 10 dernières minutes.
Il prend ensuite le plus bas des deux et le compare avec la dernière lecture et
calcule un delta.
Si le delta est 3 ou plus (voir les constantes) alors le ventilateur sera démarré
on calcule l'humidité cible et le programme de diminution d'humidité est démarré (fanFollowsProgram = 1).
Dès lors, toutes les 5 minutes, l'humidité actuelle est comparée à
humidité cible stockée. Fondamentalement, si cette cible est atteinte, le ventilateur est éteint
et le 'programme' est terminé.
Bien sûr, il est possible que la cible ne soit jamais atteinte (pourrait commencer à pleuvoir dehors
ou peu importe). Ensuite, il y a un failsafe (FAN_MAX_TIME) après quoi le ventilateur
sera éteint.
De plus, il détectera si le ventilateur est éteint manuellement pendant un programme
ou lorsqu'il est allumé avant le démarrage du programme.
Le long des lignes, il imprime sur le journal et envoie des notifications
mais bien sûr vous pouvez l'éteindre en supprimant ces lignes.
--]]
print('Controle Ventilation')
commandArray = {}
if(otherdevices['VMC_Auto_Val_Cible'] == 'On') then--Ajouté au scipt d'origine pour permettre l'arrêt de ce script
-- declare les constantes
-- A adapter à votre situation
SAMPLE_INTERVAL = 3 -- temps en minutes quand une logique de script se produira
FAN_DELTA_TRIGGER = 2 -- augmentation de l'humidité qui déclenchera le ventilateur
FAN_MAX_TIME = 12 -- nombre maximal de cycles d'échantillonnage sur lesquels le ventilateur peut être activé,
-- au cas où nous n'atteindrions jamais l'humidité cible
TARGET_OFFSET = 1 -- le ventilateur s'éteint si la cible + le décalage est atteint
-- (peut-être que cela prend trop de temps pour atteindre la véritable cible due aux serviettes mouillées, etc.)
FAN_NAME = 'VMC' -- nom exact de l'appareil qui allume / éteint le ventilateur
Memo_On_Vmc= 'Memo_On_VMC_Auto_Val_Cible'--Memorisation Marche VMC par le Script time (Permet commande Manuelle par "Controle-Humidite-Marche-VMC-6_sansdetecttoil", Blockly device si Memo= Off)
SENSOR_NAME = 'Moyenne_Humidité_Pieces_d_eau' -- nom exact de l'appareil du capteur d'humidité
TEST_MODE = false -- lorsque true TEST_MODE_HUMVAR est utilisé à la place du capteur réel
TEST_MODE_HUMVAR = 'testHumidity' -- valeur d'humidité fausse, donnez-lui une valeur de test dans domoticz / uservars
-- obtenir les variables globales:
-- ce script s'exécute toutes les minutes, humCounter est utilisé pour créer des périodes SAMPLE_INTERVAL
humCounter = tonumber(uservariables['humCounter'])
humidityTmin5 = tonumber(uservariables['humidityTmin5']) -- lecture la plus jeune
humidityTmin10 = tonumber(uservariables['humidityTmin10']) -- lecture la plus ancienne
targetFanOffHumidity = tonumber(uservariables['targetFanOffHumidity']) -- Humidité cible
fanMaxTimer = tonumber(uservariables['fanMaxTimer'])
fanFollowsProgram = tonumber(uservariables['fanFollowsProgram']) -- marqueur indiquant que le
-- programme de diminution est démarré
target = 0 -- maintiendra l'humidité cible au démarrage du programme
-- obtenir la valeur d'humidité actuelle
if (TEST_MODE) then
current = tonumber(uservariables[TEST_MODE_HUMVAR])
else
current = otherdevices_humidity[SENSOR_NAME]
end
-- vérifier si le capteur est allumé ou a une lecture bizarre
if (current == 0 or current == nil) then
print('Valeur Nulle. Ignorer cette donnée')
return commandArray
end
print('Current humidity:' .. current)
print('targetFanOffHumidity:' .. targetFanOffHumidity)
print('humidityTmin5: ' .. humidityTmin5)
print('humidityTmin10: ' .. humidityTmin10)
print('fanMaxTimer: ' .. fanMaxTimer)
print('humCounter:' .. humCounter)
print('fanFollowsProgram:' .. fanFollowsProgram)
-- augmenter le compteur de cycles
humCounter = humCounter + 1
if (humCounter >= SAMPLE_INTERVAL) then
if (humidityTmin5 == 0) then
-- initialisation, supposons que c'est la première fois
humidityTmin5 = current
humidityTmin10 = current
end
humCounter = 0 -- reset the cycle counter
-- Choisissez la valeur d'historique la plus basse pour calculer le delta
-- cela permet également de s'assurer que deux petits deltas relatifs au cours des 2 dernières minutes d'intervalle sont traités comme une plus grande augmentation
-- et donc va toujours déclencher le ventilateur
-- Je ne veux pas utiliser un intervalle plus long à la place parce que je veux que le ventilateur commence le plus tôt possible
-- (donc plutôt après 5 minutes au lieu de 15 minutes car les miroirs de la salle de bain deviennent un peu inutiles ;-)
delta = current - math.min(humidityTmin10, humidityTmin5)
print('Delta: ' .. delta)
-- Choisissez la valeur d'historique la plus basse
target = math.min(humidityTmin10, humidityTmin5) + TARGET_OFFSET
-- décaler les mesures précédentes
humidityTmin10 = humidityTmin5
-- et stocker le courant
humidityTmin5 = current
if (otherdevices[FAN_NAME]=='Off' or (otherdevices[FAN_NAME]=='On' and fanFollowsProgram==0)) then
-- soit le ventilateur est éteint soit il est allumé mais le programme de diminution n'a pas démarré
-- dans ce dernier cas, nous commençons le programme de toute façon. Cela pourrait arriver si quelqu'un allume le ventilateur
-- manuellement parce qu'il / elle est sur le point de prendre une douche et n'aime pas les miroirs humides.
-- Je ne le fais pas parce que le ventilateur enlève la chaleur de la salle de bains et je veux que cela se produise
-- aussi tard que possible ;-)
if (fanFollowsProgram == 1 and otherdevices[FAN_NAME]=='Off') then
-- probablement quelqu'un a éteint la VMC alors que le programme était en cours d'exécution
fanFollowsProgram = 0
end
-- voir si nous devons l'activer
if (delta >= FAN_DELTA_TRIGGER) then
-- le temps de démarrer le ventilateur
commandArray[FAN_NAME] = 'On'
commandArray['OpenURL'] = 'http://192.168.0.13:8091/json.htm?type=setused&idx=47&name=VMC&description=R2%20(Sortie%202)-%20%20FIBARO%20SGS-222%20%20Situe%20pres%20de%20la%20porte%20sectionnelle%2C%20Boitier%20commun%20%C3%A0%20Eclairage%20sous%20sol-Command%C3%A9e%20par%20blocky%20et%20selecteur%20dummy&strparam1=&strparam2=&protected=false&switchtype=0&customimage=166&used=true&addjvalue=0&addjvalue2=0&options='
commandArray[Memo_On_Vmc] = 'On'
targetFanOffHumidity = target
if (fanFollowsProgram == 1) then
print('La VMC était déjà en marche mais nous commençons le programme de déshumidification')
end
fanFollowsProgram = 1
-- régler l'arrêt de sécurité
fanMaxTimer = FAN_MAX_TIME
print('Augmentation de l humidité, démarrer la VMC , Delta: ' .. delta)
print('Humidité cible pour démarrer la VMC:' ..targetFanOffHumidity)
commandArray['SendNotification'] = 'La VMC est Démarrée # Elle a été activée au niveau d humidité ' .. current .. '#0'
end
else
if (fanMaxTimer > 0) then
-- possible que quelqu'un ait démarré la VMC manuellement
fanMaxTimer = fanMaxTimer - 1
end
if (fanFollowsProgram == 1) then -- pas démarré manuellement
if (delta >= FAN_DELTA_TRIGGER) then
-- ok, il y a une autre augmentation de l'humidité FAN_DELTA_TRIGGER
-- Lorsque cela se produit, nous réinitialisons le fanMaxTimer à un nouveau décompte
-- parce que nous devons ventiler un peu plus longtemps en raison de l'humidité supplémentaire
print('Une autre grande augmentation détectée, réinitialisation de la minuterie max. Delta: ' .. delta)
fanMaxTimer = FAN_MAX_TIME
end
-- d'abord voir si elle peut être désactivée
if (current <= targetFanOffHumidity or fanMaxTimer==0) then
commandArray[FAN_NAME] = 'Off'
--ci après remplacement icone sur le device "VMC" pour indiquer que la dernière commande a été par ce script
commandArray['OpenURL'] = 'http://192.168.0.13:8091/json.htm?type=setused&idx=47&name=VMC&description=R2%20(Sortie%202)-%20%20FIBARO%20SGS-222%20%20Situe%20pres%20de%20la%20porte%20sectionnelle%2C%20Boitier%20commun%20%C3%A0%20Eclairage%20sous%20sol-Command%C3%A9e%20par%20blocky%20et%20selecteur%20dummy&strparam1=&strparam2=&protected=false&switchtype=0&customimage=167&used=true&addjvalue=0&addjvalue2=0&options='
commandArray[Memo_On_Vmc] = 'Off'
msg = ''
if (fanMaxTimer == 0 and current > targetFanOffHumidity) then
msg = 'La cible n est pas atteinte mais le délai de sécurité est déclenché.'
print(msg)
else
msg = 'Humidité cible atteinte'
print(msg)
end
print('Eteindre la VMC')
msg = msg .. 'Désactivation de la VMC'
targetFanOffHumidity = 0
fanMaxTimer = 0
fanFollowsProgram = 0
-- réinitialiser l'historique dans ce cas .. on recommence partout
-- Tmin10 est toujours dans la zone 'VMC = On'
humidityTmin10 = humidityTmin5
commandArray['SendNotification'] = 'La VMC est Arrêtée #' .. msg .. '#0'
else
-- nous n'avons pas encore atteint la cible
print('Humiditée delta: ' .. delta)
end
end
end
print('Nouvelles valeurs >>>>>>>>>>>')
print('humidityTmin5: ' .. humidityTmin5)
print('humidityTmin10: ' .. humidityTmin10)
print('fanMaxTimer: ' .. fanMaxTimer)
print('humCounter:' .. humCounter)
print('fanFollowsProgram:' .. fanFollowsProgram)
print('------ target: ' .. targetFanOffHumidity)
end
-- sauvegarder les globales
commandArray['Variable:humCounter'] = tostring(humCounter)
commandArray['Variable:humidityTmin10'] = tostring(humidityTmin10)
commandArray['Variable:humidityTmin5'] = tostring(humidityTmin5)
commandArray['Variable:targetFanOffHumidity'] = tostring(targetFanOffHumidity)
commandArray['Variable:fanMaxTimer'] = tostring(fanMaxTimer)
commandArray['Variable:fanFollowsProgram'] = tostring(fanFollowsProgram)
end
return commandArray
Attention, les commandes Type "commandArray['OpenURL'] = '
http://192.168.0.13:80..." sont destinées à Modifier les icones en Fonction de la dernière commande de la VMC et doivent donc être supprimées.

- Select_VMC.PNG (133.11 Kio) Consulté 23408 fois
Tout mon chauffage est également Géré par DOMOTICZ depuis 2 hivers (Vannes DANFOSS, TOPP pour le 2 dernières, et sondes OREGON)
Cordialement
Bertrand