Premier bilan d'une VMC double flux connectée

Vendredi, 26 Juillet 2013 06:00 GuyT
Imprimer
Note des utilisateurs: / 59
MauvaisTrès bien 

Je vous propose un premier bilan après six mois de fonctionnement d’une VMC double flux Atlantic connectée à une box domotique Vera. Vous découvrirez le couplage réalisé VMC – Box qui permet la production de statistiques et le pilotage du mode de ventilation : mode normal versus sur-ventilé / boost.

La production de statistiques - publiées sur les sites thingspeak et michamps-4B - est réalisée en mode non-intrusif par rapport à la VMC ce qui la rend utilisable quel que soit la marque / le modèle de VMC (tous les fabricants ne proposant pas toujours une mesure énergétique des gains).

Le pilotage du mode de ventilation (normal / boost) nécessite que le fabricant ait prévu une interface (point d’entrée) de commande, particulièrement dans le cas où les fonctionnalités de la VMC sont gérées par un module électronique.

Sommaire

- Quelques concepts des VMC double flux
- Architecture de l’installation
- Principe de production des statistiques
- Principe du pilotage du mode ventilation
- Conclusion
- Sources d’information
- Scripting du pilotage du mode ventilation
- Scripting de la production des statistiques

 

Quelques concepts des VMC double flux

Une VMC double flux ne nécessite pas d'entrées d'air au-dessus des fenêtres, elle prend l'air neuf à l'extérieur, le filtre (le rend plus pur en éliminant les particules de pollens / de suie, les acariens, …) au moyen de filtres haute efficacité et l'insuffle dans les pièces à vivre (séjour, chambre, …) grâce à des bouches d’air de soufflage et d’insufflation.

 

Une VMC double flux possède en son cœur, un échangeur thermique qui récupère l’énergie des calories de l’air vicié aspiré des pièces « polluées » (cuisine / salle de bain / WC) afin de réchauffer ou de rafraichir l’air neuf (aspiré de l’extérieur) qui est ensuite insufflé dans les pièces à vivre. Les constructeurs annoncent des économies d’énergie pouvant aller jusqu’à 20 %sur la facture de chauffage.

Personnellement, j’utilise une VMC double Atlantic DUOLIX MAX - dont je suis très content - qui fournit en standard la gestion d’un by-pass (géré automatiquement) et la gestion d’un puits canadien (pas mis en œuvre).

By-pass : consiste à by-passer l’échangeur (ne pas faire circuler l’air au travers de l’échangeur) en tenant compte des températures définies / configurées par l’utilisateur. En hiver / mi-saison, la VMC tire profit des journées ensoleillées lorsque la température de l’air aspiré à l’extérieur est supérieure à celle de l’air aspiré des pièces. En été, la VMC tire profit de la fraicheur des nuits lorsque la température de l’air aspiré à l’extérieur est inférieure à celle de l’air aspiré des pièces. Je vous recommande fortement une VMC avec by-pass intégré – certes plus cher – mais cette fonction est utilisée beaucoup plus souvent que l’on peut penser.

 

Puits canadien : consiste à faire circuler de l’air neuf dans une canalisation enterrée (la température est constante d’environ 10° Celsius aussi bien en hiver qu’en été) afin de tirer parti de l’énergie des calories contenues dans le sol. En hiver, l’air se réchauffe lors de son parcours dans le sol ; ce qui réduit d’autant le besoin en énergie pour réchauffer l’air extérieur. En été, l’air profite de la fraicheur du sol pour se rafraîchir ; ce qui réduit d’autant la température en entrée de la VMC.

Le schéma ci-dessous montre une partie des fonctionnalités de la télécommande : indications de températures de l’air (aspiré de l’extérieur, aspiré dans les pièces, insufflé dans les pièces, rejeté à l’extérieur), l’efficacité énergétique, le gain énergique en KWh (il ne vous reste plus qu’à faire le compte en euro). La télécommande permet d’indiquer les différents volumes d’air (modes : absence, normal, sur-ventilé), les températures liées au fonctionnement du by-pass, le mode d’utilisation de l’échangeur : automatique (la VMC détermine automatiquement le comportement à favoriser : réchauffement ou rafraichissement), manuel (l’utilisateur précise le comportement souhaité).

 

Architecture de l’installation

L’architecture est composée des éléments suivants :

- 1 box Z-Wave Vera 3 ou Vera lite

- 1 double interrupteur avec mesure de la consommation AEON LABS qui va commander : la mise sous tension / arrêt de la VMC, le mode normal versus sur-ventilé.

- 1 détecteur universel auquel sont connectés 4 capteurs de température Dallas DS18B20 (cf. article « Test du Détecteur Universel Fibaro FGBS-001 »). Ils permettent de mesurer les températures : air vicié aspiré des pièces du RDC, air vicié aspiré des pièces du 1er étage, air aspiré des combles (entrée de la VMC), air expulsé à l’extérieur.

- 1 carte relais Teracom TYCW122B-CM utilisée avec une sonde de température TST100 pour la mesure de la température de l’air insufflé dans les pièces du RDC et du 1er étage. Pour information, j’aurais pu utiliser un autre détecteur universel Fibaro avec un capteur de température Dallas DS18B20.

- 1 compte Thingspeak pour l’affichage de courbes de toutes sortes.

- 1 compte Michamps-4B pour l’affichage de courbes de consommation (le gain énergétique de ma VMC dans le cadre du présent article ; mais aussi la consommation électrique et d’eau qui fera l’objet d’un prochain article au cours de cet été).

 

Le schéma d’architecture montre - s’il en était besoin – que le métier de domoticien correspond à celui d’un intégrateur en système d’information. Les standards tel que Z-Wave, l’exposition de services / API par les équipements / les objets connectés facilitent cette intégration.

Les photos ci-dessous montrent comment souder les fils au capteur de température Dallas DS18B20.

Le fil rouge soudé au capteur doit être raccordé au fil rouge « power » du module Fibaro. Le fil blanc soudé au capteur doit être raccordé au fil blanc « TD 1-Wire Data » du module Fibaro. La tresse métallique soudée au capteur doit être raccordée au fil bleu « GND – 1-Wire (-) » du module Fibaro (pour plus d’information cf. article « Test du Détecteur Universel Fibaro FGBS-001 »).

 

Carte relais Teracom : je vous recommande très fortement d’effectuer la mise à jour du firmware de la carte relais afin de bénéficier de la version v2.06 qui est plus stable. Attention toutefois, la commande pour récupérer les informations a été modifié pour devenir http://adresse IP de la carte/status.xml? (exemple : http://192.168.1.202/status.xml?). La copie d’écran ci-dessous montre le résultat retourné par la carte relais.

 

Principe de production des statistiques

Le schéma ci-dessous illustre le positionnement des différentes sondes de température. La VMC DUOLUX MAX dispose de deux entrées pour l’air vicié extrait des pièces (ce qui nécessite deux sondes de température). Les sondes de température ne sont pas intrusives par rapport à la VMC, car elles sont insérées directement dans les conduits de ventilation ; pour se faire on pratique une petite incision avec un cutter dans les conduits, puis on glisse les sondes (si besoin on peut mettre un adhésif adapté afin d’éviter d’éventuelles déperditions d’air).

 

La formule utilisée pour le calcul du gain est la suivante :

Gain : 0.34 * 0.9 * Débit * (T_Insuf – T_Aspi) * Temps / 1000

 

o) 0,34 : capacité thermique volumique de l'air en Wh/m3 °C

o) 0,9 : rendement théorique de l’échangeur (on peut calculer un rendement réel)

o) Débit : débit de l’air en m3

o) T_Insuf : température de l’air insufflé dans les pièces

o) T_Aspi : température de l’air aspiré en entrée de la VMC

o) Temps : exprimé en heure

o)  1000 : pour le calcul en KWh

 

J’effectue deux calculs : le premier, du gain de la VMC ; le deuxième, du gain global incluant les gains VMC + les calories provenant des combles. En été (mode configurable dans les statistiques), les gains sont valorisés à zéro.

 

Actions à réaliser :

Il faut créer un compte sur www.thingspeak.com, cf. la vidéo réalisée par Fred «Comment créer un graphique de températures »

-  Exemple de ligne de commande html pour publier    des valeurs http://api.thingspeak.com/update?key=UXWIQCQGTH0KMWC9&field1=15&field2=120

- Exemple de ligne de commande html pour consulter les valeurs https://www.thingspeak.com/channels/6864

Il faut créer un compte sur http://www.michamps4b.be, cf. article « Un site pour surveiller sa consommation d'Energie» et demander au Web Master la procédure de publication (pour ce faire, il suffit envoyer un email à info@michamps4b.be).

 

La copie d’écran ci-dessous montre le virtual switch « Mode été », les différentes températures, le double interrupteur avec mesure de la consommation (ici en mode normal), les deux containers de variables.

 

Graphiques disponibles sur https://www.thingspeak.com/channels/4257

 

Rappel : les valeurs de températures des capteurs reliés au module universel Fibaro sont transmises en valeurs entières et non en valeurs décimales.

- Field 1 Chart - Température extérieur (issue du Web), capteur T1

- Field 2 Chart - Température de l’air vicié provenant du RDC, capteur T2

- Field 3 Chart - Température de l’air vicié provenant du 1er étage, capteur T3

- Field 4 Chart - Température de l’air neuf insufflé dans les pièces, capteur T4

- Field 5 Chart - Température de l’air neuf aspiré en entrée de la VMC, capteur T5

- Field 6 Chart - Température de l’air vicié expulsé à l’extérieur, capteur T6

 

Graphiques disponibles sur https://www.thingspeak.com/channels/4902

L’hiver ou lors de la mi-saison, une gaine serpente dans les combles de la maison, afin de récupérer des calories supplémentaires (journées ensoleillées). Cela a pour conséquence de réduire localement l’efficacité énergétique de la VMC mais d’augmenter le gain global.

 

Attention : on voit mon problème de connexion à internet, les valeurs ne sont pas été publiées

- Field 1 Chart – Différence entre la température de soufflage et la température en entrée de la VMC (combles)

- Field 2 Chart - Différence entre la température de soufflage et la température extérieur

 

Graphiques disponibles sur https://www.thingspeak.com/channels/4917

 

Attention : on voit mon problème de connexion à internet, les valeurs ne sont pas été publiées

- Field 1 Chart – Gain journalier de la VMC en KWh

- Field 2 Chart – Gain journalier global (VMC + combles) en KWh

- Field 3 Chart – Delta entre les deux gains en pourcentage

- Field 4 Chart – Gain cumulé de la VMC en KWh

- Field 5 Chart – Gain cumulé Global (VMC + combles) en KWh

 

Graphique disponible sur http://www.michamps4b.be/statistique-production-eau-chaude-thermique-de-Guyt.php

 

Principe du pilotage du mode ventilation

Les schémas et les photos ci-après montrent l’intégration à réaliser dans le cas bien précis de la VMC Atlantic Duolix Max. Si vous vous lancez à faire l’intégration par vous-même, je vous recommande d’être vraiment minutieux, de vérifier (électricité coupé) avec un multimètre que les branchements sont réalisés correctement « double check ».

 

 

Conclusion

La production des statistiques permet de disposer de premiers résultats pour la période du 9 janvier 2013 à ce jour, soit pour un peu plus qu’une demi-année (rappel : en mode été, le gain est valorisé à zéro) :

 

Voici quelques éléments financiers pour l’analyse :

Moins disant

VMC double flux (1)

1 683.92 €

Fournitures (gaines, bouches, …)

800 €

Installation (réalisée par moi-même)

0 €

TOTAL

environ 2 500 €

(1) Prix constatés sur le web

 

En première analyse, il est un peu tôt pour déterminer un retour sur investissement (ROI) réel ; d’autant que la météo n’arrête pas d’être capricieuse ; mais le ROI devrait se situer entre 5 et 7 ans. Mon objectif en réalisant cet investissement a été de réduire mes dépenses de fonctionnement liées à l’augmentation récurrente du coût des énergies.

Mais les avantages d’une VMC double flux ne se limitent pas à l’aspect financier, il faut prendre en compte les aspects qualitatifs suivants :

- finie la sensation de froid l’hiver due à l’air froid aspiré (l’air n’est plus à la température de l’extérieur), votre femme vous dira merci

- l’air aspiré est filtré des particules de pollens / de suie, des acariens, ce qui contribue à réduire les problèmes d’allergie

- ...

Dans un proche avenir, je vais ajouter deux registres électriques (cf. photo ci-dessous) afin de piloter automatiquement le flux d’air de l’extérieur. Pour ce faire, le flux d’air sera soit connecté directement à la VMC soit il serpentera dans les combles afin de gagner des calories supplémentaires lors des journées ensoleillées (ce dernier pourrait faire l’objet d’un autre article).

 

 

J’espère vous avoir donné suffisamment d’éléments afin de vous lancer dans une réflexion / analyse vous permettant de déterminer la pertinence ou non d’un projet d’installation d’une VMC double flux projet en tenant compte de votre contexte.

Et enfin, si vous avez aimé cet article ; n’hésitez pas à le partager sur les réseaux sociaux.

Vous n'avez pas compris un point ? Vous vous posez une question ? Vous pouvez nous contacter via le bouton Assistance sur votre gauche. N'hésitez pas à demander un rendez-vous téléphonique avec Domotics.

Vous avez aimé cet article ? Vous pouvez le partager sur vos réseaux sociaux pour soutenir son auteur et l'encourager à écrire de nouveaux articles ...

 

Cet article vous est proposé par Guy T.: Guy travaille dans le domaine des systèmes d'information pour le compte d'un opérateur de télécommunications. Il s'intéresse au bricolage en tout genre afin de rendre sa maison autant que faire se peut smart home tout en restant home sweet home. Il s'est lancé dans la domotique tout récemment en début d'année 2012.

 

Sources d’information

 

Scripting du pilotage du mode ventilation

Dans le cas du pilotage du mode de ventilation, on n’est pas obligé de faire du scripting. C’est ce que montre la création des deux scènes suivantes. Cette partie fournie les informations sur la façon de programmer le déclenchement de la VMC en mode sur-ventilé.

Scène « VMC Boost ON » à créer

Cette partie montre comment déclencher le mode sur-ventilé tous les jours à 12H30 et 19H30.

 

Scène « VMC Boost OFF » à créer

Cette partie montre comment stopper le mode sur-ventilé tous les jours à 13H30 et 20H30.

Scripting de la production des statistiques

Actions à réaliser :

 

Partie à mettre dans « Edit Startup Lua (Lua) »

-------------------------------------------------------------------

-- Startup LUA - VMC Double Flux

-------------------------------------------------------------------

VMC_Time0 = os.date('*t') -- Date & Heure de dernière mesure

VMC_GainJ1 = 0.00 -- Gain journalier VMC

VMC_GainJ2 = 0.00 -- Gain journalier VMC avec les combles

VMC_GainC1 = 0.00 -- Gain cumulé VMC

VMC_GainC2 = 0.00 -- Gain cumulé VMC avec les combles

VMC_Container1 = 218 -- Container de variables

VMC_Container2 = 233 -- Container de variables

VMC_Conso = 234 -- Switch - global avec Consommation

VMC_ON_OFF = 236 -- Switch Ligne 1

VMC_Surventilation = 235 -- Switch Ligne 2

-------------------------------------------------------------------

function my_unescape (l_string)

l_string = string.gsub(l_string, " ", "+")

return l_string

end

-------------------------------------------------------------------

-- Fonction My Notification vers Notify My Android

-- 4 paramètres : destinataire, nom de l'événement

-- description du message, priorité du message

--------------------------------------------------------------------

function my_notification (l_who, l_event, l_description, l_priority)

local l_url = "https://www.notifymyandroid.com/publicapi/notify?apikey="

local l_apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

local l_application = my_unescape("Maison - Domotique")

l_event = my_unescape(l_event)

l_description = my_unescape(os.date('%H:%M:%S') .." " ..l_description)

luup.inet.wget(l_url ..l_apikey .."&application=" ..l_application .."&event=" ..l_event .."&description=" ..l_description .."&priority=" ..l_priority)

return true

end

-------------------------------------------------------------------

-- Fonction d'extration de la valeur d'une variable

-------------------------------------------------------------------

function Extract2_XML(l_XML, l_tag, l_default)

local l_pattern = "(.-)"

local l_result = {}

for var in l_XML:gmatch(l_pattern) do

table.insert(l_result, var)

end

return l_result[1] or l_default

end

-------------------------------------------------------------------

function my_relay02(l_commande)

local http = require("socket.http")

http.TIMEOUT = 4

local l_result, l_status = http.request("http://" ..Relais02_IP .."/" ..l_commande)

if l_status == 200 then

R02_DigitalInput1 = Extract2_XML(l_result, "DigitalInput1","OPEN")

R02_DigitalInput2 = Extract2_XML(l_result, "DigitalInput2","OPEN")

R02_Relay1 = Extract2_XML(l_result, "Relay1", "OFF")

R02_Relay2 = Extract2_XML(l_result, "Relay2", "OFF")

R02_AnalogInput1 = Extract2_XML(l_result, "AnalogInput1", "0.0")

R02_AnalogInput2 = Extract2_XML(l_result, "AnalogInput2", "0.0")

R02_Temperature1 = Extract2_XML(l_result, "Temperature1", "20.0")

-- tonumber est à mettre que si une sonde est connectée

R02_Temperature1 = tonumber(string.sub(R02_Temperature1, 1, string.find(R02_Temperature1, "°C") -1))

R02_Temperature2 = Extract2_XML(l_result, "Temperature2", "20.0")

R02_Humidity1 = Extract2_XML(l_result, "Humidity1", "0")

R02_Humidity2 = Extract2_XML(l_result, "Humidity2", "0")

else

my_notification ("Guy", "* Problème relais 02 Teracom TCW122-CM *" , "Code erreur = " ..l_status,"2")

end

end

-------------------------------------------------------------------

-- Fonction Get_Container (valeur d'une variable)

-------------------------------------------------------------------

function Get_Container (l_device, l_variable, l_Expected_Type)

local l_value = ""

local l_value_Type = ""

l_value = luup.variable_get("urn:upnp-org:serviceId:VContainer1","Variable"..l_variable, l_device)

if (l_value == nil) then

my_notification ("Guy", "* Get_Container = " ..l_device .." Variable = " ..l_variable .." ***" , "Value = nil","2")

l_value = ""

end

if (l_Expected_Type == "number") then

l_value = tonumber(l_value)

l_value_Type = type(l_value)

if (l_Expected_Type ~= l_value_Type) then

my_notification ("Guy", "* Get_Container = " ..l_device .." Variable = " ..l_variable .." ***" , "Value Type = " ..l_value_Type ..", Expected_Type = " ..l_Expected_Type,"2")

l_value = 0

end

end

return l_value

end

-------------------------------------------------------------------

-- Fonction Get_Switch (device, valeur par défaut en cas d'erreur)

-------------------------------------------------------------------

function Get_Switch (l_device, l_default)

local l_value = ""

local l_device_category = luup.devices[l_device].category_num

--my_notification ("Guy", "* Get_Switch = " ..l_device, "Type of switch= " ..l_device_category,"2")

if l_device_category == 0 then

l_value = luup.variable_get("urn:upnp-org:serviceId:VSwitch1", "Status", l_device)

if (l_value == nil) then

my_notification ("Guy", "* Get_Switch (Status) = " ..l_device .." *" , "Value = nil","2")

l_value = l_default

end

elseif l_device_category == 3 or l_device_category == 8 then

l_value = luup.variable_get("urn:upnp-org:serviceId:SwitchPower1","Status", l_device)

if (l_value == nil) then

my_notification ("Guy", "* Get_Sensor = " ..l_device .." *" , "Value = nil","2")

l_value = l_default

end

else

my_notification ("Guy", "* Get_Switch = " ..l_device, "Type of switch not handled = "..l_device_category,"2")

end

return l_value

end

-------------------------------------------------------------------

-- Fonction Get_Temperature (device, valeur par défaut en cas d'erreur)

-------------------------------------------------------------------

function Get_Temperature (l_device, l_default)

local l_value = ""

l_value = luup.variable_get("urn:upnp-org:serviceId:TemperatureSensor1","CurrentTemperature", l_device)

if (l_value == nil) then

my_notification ("Guy", "* Get_Temperature = " ..l_device .." *" , "Value = nil","2")

l_value = l_default

else

l_value = tonumber(l_value)

end

return l_value

end

-------------------------------------------------------------------

-- Fonction Set_Container (container, variable, valeur d'une variable)

-------------------------------------------------------------------

function Set_Container(l_device, l_variable, l_value)

if (l_value == nil) then

my_notification ("Guy", "* Set_Container = " ..l_device .." Variable = " ..l_variable .." ***" , "Value = nil","2")

end

l_value = string.format(l_value)

luup.variable_set("urn:upnp-org:serviceId:VContainer1","Variable"..l_variable, l_value, l_device)

return true

end

Scène « VMC Mesures » à créer

 

----------------------------------------------------------------------

-- Schedule : toutes les 15 minutes

----------------------------------------------------------------------

-- Constantes utilisées

----------------------------------------------------------------------

-- Meteo_Temp_ID -- Météo Température actuelle

-- Mode_ETE_VS -- Virtual switch - Mode été

-- VMC_Time0 -- Date & Heure de dernière mesure

-- VMC_GainJ1 -- Gain journalier VMC

-- VMC_GainJ2 -- Gain journalier VMC + prise en compte des combles

-- VMC_GainC1 -- Gain cumulé VMC

-- VMC_GainC2 -- Gain cumulé VMC + prise en compte des combles

-- VMC_Container1 -- Numéro du Container

-- VMC_Container2 -- Numéro du Container

----------------------------------------------------------------------

-- Variables locales utilisées

----------------------------------------------------------------------

local l_Temp_Exterieur = 0 -- temp extérieur

local l_Temp_Air_Vicie0 = 0 -- temp Air Vicié RDC

local l_Temp_Air_Vicie1 = 0 -- temp Air Vicié 1° étage

local l_Temp_Air_Insuffle = 0 -- temp Air Insufflé dans les pièces

local l_Temp_Air_Aspire = 0 -- temp Air aspiré (extérieur / combles)

local l_Temp_Air_Refoule = 0 -- temp Air refoulé (extérieur)

local l_Delta_Insuf_Aspi = 0 -- Diff. temp Air Insufflé - Air Aspiré (combles)

local l_Delta_Insuf_Ext = 0 -- Diff. temp Air Insufflé - Air Extérieur

local l_Delta_Pourcentage = 0 -- % Air Insufflé - Air Extérieur

local l_VMC_Time1 = os.date('*t') -- Date & Heure de nouvelle mesure

local l_VMC_Time2 = 0.0 -- Delta entre les deux mesures

local l_Debit_N = "120" -- Débit d'air en régime normal

local l_Debit_B = "220" -- Débit d'air en régime Boost

local l_GainC1 = 0 -- Gain cumulé 1 (Air Insufflé - Aie Aspiré)

local l_GainC2 = 0 -- Gain cumulé 2 (Air Insufflé et Air Extérieur)

local l_GainP1 = 0 -- Gain 1 entre deux intervalles de temps

local l_GainP2 = 0 -- Gain 2 entre deux intervalles de temps

local l_Delta_GainJ = 0 -- Différence en % ente les deux gains (1 & 2)

local l_GainA1 = 0 -- Valeur du gain cumulé 1 du jour précédent

local l_GainA2 = 0 -- Valeur du gain cumulé 2 du jour précédent

local l_Mode_ETE = "0" -- Mode été (calculs de gains pas pris en compte)

local l_Mode_BOOST = "0" -- Mode Boost actif / inactif

local l_VMC_GainJ1 = "" -- Conversion en string du gain journalier 1

local l_VMC_GainJ2 = "" -- Conversion en string du gain journalier 2

local l_VMC_GainC1 = "" -- Conversion en string du gain Cumulé 1

local l_VMC_GainC2 = "" -- Conversion en string du gain Cumulé 2

--------------------------------------------------------

-- Lecture des capteurs / vitual switch

--------------------------------------------------------

-- Vérifie le mode courant été / autres saisons

l_Mode_ETE = Get_Switch (Mode_ETE_VS, "0")

-- Vérifie le mode BOOST

l_Mode_BOOST = Get_Switch (VMC_Surventilation, "0")

-- Température de l'air extérieur (donnée Web)

l_Temp_Exterieur = Get_Temperature(Meteo_Temp_ID, 99)

-- Température de l'air vicié aspiré au RDC - (Studio / Bureau)

l_Temp_Air_Vicie0 = Get_Temperature(210, 99)

-- Température de l'air vicié aspiré au 1er étage

l_Temp_Air_Vicie1 = Get_Temperature(209, 99)

-- Température de l'air Insufflé

my_relay02("status.xml?")

l_Temp_Air_Insuffle = R02_Temperature1

-- Température de l'air Asipré (extérieur)

l_Temp_Air_Aspire = Get_Temperature(212, 99)

-- Température de l'air Refoulé à l'extérieur

l_Temp_Air_Refoule = Get_Temperature(211, 99)

--------------------------------------------------------

-- Différents calculs réalisés

--------------------------------------------------------

-- Différence de température entre l'air insuflé (maison) et l'air aspiré (combles)

l_Delta_Insuf_Aspi = l_Temp_Air_Insuffle - l_Temp_Air_Aspire

-- si la différence est négative => le bypass est actif (hivers)

if l_Delta_Insuf_Aspi < 0 then

l_Delta_Insuf_Aspi = 0

end

-- Différence de température entre l'air insuflé (maison) et l'air extérieur (mesure web)

l_Delta_Insuf_Ext = l_Temp_Air_Insuffle - l_Temp_Exterieur

-- si la différence est négative => le bypass est actif (hivers) ou bien

if l_Delta_Insuf_Ext < 0 then

l_Delta_Insuf_Ext = 0

end

if l_Delta_Insuf_Ext < l_Delta_Insuf_Aspi then

l_Delta_Insuf_Ext = l_Delta_Insuf_Aspi

end

-- Différence de température en pourcentage

l_Delta_Pourcentage = 0

if l_Delta_Insuf_Ext > 0 then

l_Delta_Pourcentage = (l_Delta_Insuf_Ext - l_Delta_Insuf_Aspi) / l_Delta_Insuf_Ext * 100

end

-- Récupération du débit d'air "normal" du container

l_Debit_N = Get_Container(VMC_Container2,4, "number")

-- Récupération du débit d'air "boost" du container

l_Debit_B = Get_Container(VMC_Container2,5, "number")

-- Mesure de la différence de temps entre deux mesures

l_VMC_Time1 = os.date('*t')

if (l_VMC_Time1.hour >= VMC_Time0.hour) then

l_VMC_Time2 = ((l_VMC_Time1.hour * 3600 + l_VMC_Time1.min * 60 + l_VMC_Time1.sec) - (VMC_Time0.hour * 3600 + VMC_Time0.min * 60 + VMC_Time0.sec)) / 3600

else

l_VMC_Time2 = (((24 + l_VMC_Time1.hour) * 3600 + l_VMC_Time1.min * 60 + l_VMC_Time1.sec) - (VMC_Time0.hour * 3600 + VMC_Time0.min * 60 + VMC_Time0.sec)) / 3600

end

-- Mise à jour du temps de référence pour la mesure

VMC_Time0 = os.date('*t')

-- Calcul des gains dans l'intervalle de temps

if l_Mode_BOOST == "0" then

l_GainP1 = (0.34 * 0.9 * l_Debit_N * l_Delta_Insuf_Aspi * l_VMC_Time2 / 1000)

l_GainP2 = (0.34 * 0.9 * l_Debit_N * l_Delta_Insuf_Ext * l_VMC_Time2 / 1000)

else

l_GainP1 = (0.34 * 0.9 * l_Debit_B * l_Delta_Insuf_Aspi * l_VMC_Time2 / 1000)

l_GainP2 = (0.34 * 0.9 * l_Debit_B * l_Delta_Insuf_Ext * l_VMC_Time2 / 1000)

end

if l_Mode_ETE == "1" then

l_GainP1 = 0

l_GainP2 = 0

end

-- Calcul des gains cumulés

l_GainC1 = Get_Container(VMC_Container1,2, "number")

VMC_GainC1 = l_GainC1 + l_GainP1

l_GainC2 = Get_Container(VMC_Container1,3, "number")

VMC_GainC2 = l_GainC2 + l_GainP2

-- Calcul des gains journaliers

-- Récupération de la valeur de Gain1 à J-1 (Antérieur 1)

l_GainA1 = Get_Container(VMC_Container1,4, "number")

VMC_GainJ1 = VMC_GainC1 - l_GainA1

l_GainA2 = Get_Container(VMC_Container1,5, "number")

VMC_GainJ2 = VMC_GainC2 - l_GainA2

-- Différence de gain dans l'intervalle de temps en pourcentage

l_Delta_GainJ = 0

if VMC_GainJ2 > 0 then

l_Delta_GainJ = (VMC_GainJ2 - VMC_GainJ1) / VMC_GainJ2 * 100

end

--------------------------------------------------------

-- Mise à jour de l'affichage des valeurs du container1

--------------------------------------------------------

-- Variable1 = heure de dernière mise à jour

Set_Container(VMC_Container1, 1, os.date('%H:%M:%S'))

-- Variable2 = gain cumulé 1

l_VMC_GainC1 = string.format("%.3f",VMC_GainC1)

Set_Container(VMC_Container1,2, l_VMC_GainC1)

-- Variable3 = gain cumulé 2

l_VMC_GainC2 = string.format("%.3f",VMC_GainC2)

Set_Container(VMC_Container1, 3, l_VMC_GainC2)

--------------------------------------------------------

-- Mise à jour de l'affichage des valeurs du container2

--------------------------------------------------------

-- Variable1 = Température de l'air insuflé dans les pièces

Set_Container(VMC_Container2, 1, l_Temp_Air_Insuffle)

-- Variable2 = Gain 1 journalier

l_VMC_GainJ1 = string.format("%.3f",VMC_GainJ1)

Set_Container(VMC_Container2, 2, l_VMC_GainJ1)

-- Variable3 = Gain 2 journalier

l_VMC_GainJ2 = string.format("%.3f",VMC_GainJ2)

Set_Container(VMC_Container2, 3, l_VMC_GainJ2)

-- Mise au format texte pour publication

l_Delta_Insuf_Aspi = string.format(l_Delta_Insuf_Aspi)

l_Delta_Insuf_Ext = string.format(l_Delta_Insuf_Ext)

l_Delta_Pourcentage = string.format("%.2f", l_Delta_Pourcentage)

l_Delta_GainJ = string.format("%.2f",l_Delta_GainJ)

--------------------------------------------------------

-- Publication des valeurs

--------------------------------------------------------

-- Publication des valeurs sur ThingSpeak

luup.inet.wget("http://api.thingspeak.com/update?key=XXXXXXXXXXXXXXX&field1=" ..l_Temp_Exterieur .."&field2=" ..l_Temp_Air_Vicie0 .."&field3=" ..l_Temp_Air_Vicie1 .."&field4=" ..l_Temp_Air_Insuffle .."&field5=" ..l_Temp_Air_Aspire .."&field6=" ..l_Temp_Air_Refoule,2)

-- Publication des valeurs sur ThingSpeak

luup.inet.wget("http://api.thingspeak.com/update?key=XXXXXXXXXXXXXXX&field1=" ..l_Delta_Insuf_Aspi .."&field2=" ..l_Delta_Insuf_Ext .."&field3=" ..l_Delta_Pourcentage,2)

-- Publication des valeurs sur ThingSpeak

if (l_VMC_Time1.hour == 23 and l_VMC_Time1.min >=45 and l_VMC_Time1.min <= 59) then

luup.inet.wget("http://api.thingspeak.com/update?key=XXXXXXXXXXXXXXX&field1=" ..l_VMC_GainJ1 .."&field2=" ..l_VMC_GainJ2 .."&field3=" ..l_Delta_GainJ .."&field4=" ..l_VMC_GainC1 .."&field5=" ..l_VMC_GainC2,2)

if l_Mode_ETE == "0" then

luup.inet.wget("http://www.michamps4b.be/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&XXX=" ..l_GainC1,2)

end

Set_Container(VMC_Container1,4, l_VMC_GainC1)

Set_Container(VMC_Container1,5, l_VMC_GainC2)

VMC_GainJ1 = 0

VMC_GainJ2 = 0

end

return true

Mise à jour le Samedi, 27 Juillet 2013 06:43