Tuto : Consommation chauffage

Partagez ici vos astuces et idées d'utilisation d'eedomus

Tuto : Consommation chauffage

Messagepar Cen » 28 Mai 2017 14:21

Tuto : Consommation chauffage sur eedomus


Introduction

Je vous présente dans ce tuto un petit montage qui permet de mesurer sa consommation de mazout, pellets, gaz, … d’une manière simple, et sans ne rien toucher à sa chaudière. Oui, je vous l’assure !!

En regardant sur Internet, je suis tombé sur un article
http://blog.guiguiabloc.fr/index.php/20 ... /#comments
qui propose de mettre une pince ampèremétrique sur le brûleur, et grâce à cette pince, mesurer le temps de fonctionnement du brûleur et en déduire la consommation, car le débit du gicleur est connu.

Cependant, les nouvelles chaudières (en tout cas la mienne, chaudière à condensation, brûleur Elco) ne sont plus aussi simples et ne permettent pas de placer une telle pince ampèremétrique. Mais, cet article m’a donné l’idée de mesurer le fonctionnement du brûleur grâce au bruit qu’il produit lorsqu’il fonctionne ! Et donc, cette solution fonctionne aussi pour un chauffage au gaz, pellets ou autre.

Avant de vous lancer dans une telle solution, vérifiez que vous pourrez faire une corrélation entre le temps de fonctionnement du brûleur et la consommation. Mon brûleur, donc de marque Elco, est monté avec un gicleur Danfoss qui consomme 0.3 USGal par heure et donc, sachant que 1USGal = 3,785411784 litres, ma chaudière consomme 1.1356235352 litres de mazout par heure.

Côté configuration de la box, ce montage s’appuie sur un script qui tient à jour quatre variables (états virtuels)
• Consommation journalière, de minuit à maintenant
• Consommation mensuelle, du début du mois minuit à maintenant
• Consommation statistique, journalière
• Consommation statistique, mensuel
Et quelques petites règles et 1 actionneur http


Matériel et outils nécessaires

Le matériel nécessaire
• Un module son pour arduino, commandé sur ebay : Sensitivity Control Potentiometer Sound Detection Sensor Module Sound Sensor car au prix de 1.80Euros
• Un module alimentation 220V AC-DC 5V pour arduino, commandé sur ebay : AC-DC 5V 700mA 3.5W Power Supply Buck Converter Step Down Module F Arduino, au prix de 2.57Euros
• Un module relai 5V pour arduino, commandé sur ebay : 1 Channel DC 5V Relay Module Board Interface for Arduino ARM PIC AVR DSP, au prix de 2.48Euro
• Un module ZWave Everspring HAC01
• Un condensateur 15V 220µF
• Une plaque de plastic, pour fixer ces composants. J’ai utilisé un morceau de lino coupé aux dimensions de mon boiter au cutter
• Le boitier : j’ai pris un boitier « Prise étanche extérieur », au prix de 2 Euros
• Un câble 220V avec prise male
• Et divers petits matériels tels que câbles assez fin, toile isolante, sucre

Il vous faudra les outils suivant
• Un fer à souder pour connecter ensemble les modules
• Une perceuse pour les trous dans la plaque de plastique et le boitier (trou au-dessus du micro), donc avec mèches de 4mm et 10mm
• Un multimètre éventuellement, mais pas obligatoire



Le montage du module


Il faut compter 2h à 3h pour réaliser le montage. Voici le schéma, ainsi que les photos de la solution. Ne pas oublier aussi le trou au-dessus du micro. Pour ma part, j’ai fait un trou d’un diamètre de 10mm.

Schéma module Conso Mazout.png
Schéma module Conso Mazout.png (16.21 Kio) Consulté 7888 fois

VueDessus.jpg
VueDessus.jpg (212.72 Kio) Consulté 7888 fois

VueDessous.jpg
VueDessous.jpg (195.82 Kio) Consulté 7888 fois

VueDansBoitier1.jpg
VueDansBoitier1.jpg (632.85 Kio) Consulté 7888 fois

VueChauffage.jpg
VueChauffage.jpg (430.38 Kio) Consulté 7888 fois


Une fois tout cela monté proprement, connectez au 220V et réglez la sensibilité du micro grâce au potentiomètre sur le module micro, cela en soufflant/parlant sur le micro. Vous entendrez le relais s’enclencher et se déclencher. Mon module est très sensible et la transition entre une détection permanente ou pas de détection du tout se fait avec moins de 2mm de tours de vis !

Quelques informations

• Le condensateur est absolument nécessaire, car sans ce composant, le relais produit des microcoupures, car le module son donne des impulsions par rapport au son capté.

• Consommation du module : 1.4W. Et on peut toujours dessouder les leds, qui décidément ne nous servent pas dans ce boitier, pour gagner quelques mW.

• Je suis parti avec un module zwave Everspring HAC01, car j’en avais un dans mon stock, mais on peut utiliser tous autres modules capables de remonter un événement si un contact est établi. Cependant, celui-ci fonctionne parfaitement, est petit, et cerise sur le gâteau, possède une antenne et donc, peut éventuellement jouer un rôle de répéteur dans votre réseau z-wave.



La configuration de la box

Voilà, tout est prêt maintenant et on peut passer à la partie configuration de la box eedomus. Tout cela en 7 étapes, 15 minutes pour les utilisateurs habitués, 1 heure si vous êtes moins au clair, car je n’explique pas tous les détails tels que comment installer une icône, comment charger un script sur la box, comment inclure un périphérique z-wave, … Pour cela, je vous laisse chercher sur le forum, l’information s’y trouve


Etape 1: Créer une pièce « Mazout », et y mettre une icône représentative. Pour ma part, j’ai mis un jerricane.
Mazout.png
Mazout.png (6.3 Kio) Consulté 7888 fois



Etape 2: Inclure le module ZWave Everspring HAC01 dans votre configuration. Inclus au premier essai pour moi, en connectant simplement mon module au 220V et sur la eedomus, « Ajouter un périphérique Z-Wave ».
• Appeler ce module « Mazout Chaudiere Module ».
• Pièce : Mazout
• Fréquence de polling : toutes les 30min au lieu du défaut, toutes les 2min. Cela dans le menu Configuration du périphérique / Paramètre expert / Fréquence de polling = 30min.


Etape 3: Adapter, dans le script, le débit de votre gicleur :
//Débit du gicleur : A adapter selon le débit du gicleur, doit être en litres par seconde, c’est pour cela que je divise par 3600
$Gicleur = 1.1356235352/3600.0; //1.1356235352 l/h, divisé en 3600 pour obtenir le débit l/s


Etape 4: Créer 4 états virtuels qui vont stocker les Consommations Journalières et Mensuelles, et les statistics journalières et mensuelles
Nom personnalisé : Mazout Minuit à maintenant, Mazout Début du mois à maintenant, MazoutStatJ, et MazoutStatM
Usage : Compteur gaz
Pièce : Mazout
Unité : l (litres)
Type de données : Nombre décimal
Et récupérer les API, dans les "Paramètres Expert" : Mazout Minuit à maintenant=AAAAAA, Mazout Début du mois à maintenant=BBBBBB, MazoutStatJ=CCCCCC, MazoutStatM=DDDDDD


Etape 5: Créer 1 actionneur http
Nom : MazoutChaudiere
Usage : Chauffage
Pièce : Mazout
Notes utilisateur : Lance le script MazoutConsoV1.php qui met à jour les compteurs de Mazout Minuit à maintenant, Début du mois à maintenant, MazoutStatJour et MazoutStatMois

Sur le tab « Valeur », rentrer les valeurs suivantes
”On”: http://localhost/script/?exec=MazoutCon ... atM=DDDDDD

”Off”: http://localhost/script/?exec=MazoutCon ... atM=DDDDDD

”Stats”: http://localhost/script/?exec=MazoutCon ... atM=DDDDDD

”Reset”: http://localhost/script/?exec=MazoutCon ... atM=DDDDDD


Il vaut remplacer les AAAAA, BBBBBBB, CCCCCC et DDDDDD par les valeurs des l’API (vous les trouvez dans le menu « Paramètres Expert » des 4 états virtuels)

Fig1.png
Fig1.png (30.61 Kio) Consulté 7888 fois



Etape 6: Et créer trois règles, très simples :

Nom : Mazout Chaudiere On
Redéclenchement : Immédiatement
Critère : Mazout Chaudiere Module devient maintenant étag à On
Actions : MazoutChaudiere On
Fig2.png
Fig2.png (33.99 Kio) Consulté 7888 fois


Nom : Mazout Chaudiere Off
Redéclenchement : Immédiatement
Critère : Mazout Chaudiere Module devient maintenant étal à Off
Actions : MazoutChaudiere Off

Nom : Mazout Chaudiere Stats
Redéclenchement : Immédiatement
Horaires : Tous les jours, à 23h56
Actions : MazoutChaudiere Stats

Fig3.png
Fig3.png (30.78 Kio) Consulté 7888 fois



Etape 7: Faire un peu d’ordre dans la pièce « Mazout »
Fig4.png
Fig4.png (49.34 Kio) Consulté 7888 fois


Le script
Code : Tout sélectionner
<?
//Ce script calcule la consommation de mazout, par jour et par mois
//Il est appelé par les règles "Mazout Chaudiere On", "Mazout Chaudiere Off" et "Mazout Chaudiere Stats"
//Version 1.0, Thierry Branca, Mai 2017
//
//Paramètre "Command" peut prendre les valeurs suivantes
//On: Enclenchement du brûleur
//Off: Arrêt du brûleur
//Stats: A exécuter avant minuit, par exemple 23h56. Le script met à jour les variable "MazoutStatJ" et "MazoutStatM",
//       et MazoutJ et MazoutM si la chaudière est en fonction.
//       Donc important, à exécuter uniquement 1x par jour, et entre 23h00 et minuit.
//Reset: pour remettre à zéro toutes les variables (Etats virtuels + variables sur la box)
//
//Et les autres paramètres:
//Parameter "MazoutJ"     = Consommation depuis minuis
//Parameter "MazoutM"     = Consommation depuis le début du mois
//Parameter "MazoutStatJ" = Consommation journalière
//Parameter "MazoutStatM" = Consommation mensuelle
//
//Exemple d'appel:
//http://localhost/script/?exec=MazoutConso.php&Command=On&MazoutJ=AAAAAA&MazoutM=BBBBBB&MazoutStatJ=CCCCCC&MazoutStatM=DDDDDD
//
//Mon gicleur
//Gicleur Danfoss, Brûleur Elco VB 1.20
//0.3 USGal/heure, 1USGal = 3,785411784 litres   ==> 1.1356235352 l/heure
//
//Variables sauvegardées sur la box eedomus
//ChaudiereElapse :Durée totale d'enclenchement de la chaudière, en secondes
//ChaudiereLastOn :Timestamp dernier enclenchement de la chaudière



////////////////////////////////////////
//MAIN
////////////////////////////////////////

//Débit du gicleur : A adapter selon le débit du gicleur, doit être en litres par seconde
$Gicleur = 1.1356235352/3600.0;                      //1.1356235352 l/h, divisé en 3600 pour obtenir le débit l/s

$ChaudiereLastOn = loadVariable('ChaudiereLastOn');  //Récupère la variable ChaudiereLastOn sauvée sur la box
$ChaudiereElapse = loadVariable('ChaudiereElapse');  //Récupère la variable ChaudiereElapse sauvée sur la box

$MazoutJ_id = getArg('MazoutJ','-1');                //Récupère le paramètre MazoutJ
$MazoutM_id = getArg('MazoutM','-1');                //Récupère le paramètre MazoutM
$MazoutStatJ_id = getArg('MazoutStatJ','-1');        //Récupère le paramètre MazoutStatJ
$MazoutStatM_id = getArg('MazoutStatM','-1');        //Récupère le paramètre MazoutStatM

//echo "MazoutJ_id: ",  $MazoutJ_id , "\n";          //Debug 
//echo "MazoutM_id: " , $MazoutM_id , "\n";          //Debug
//echo "MazoutStatJ_id: ",  $MazoutStatJ_id , "\n";  //Debug
//echo "MazoutStatM_id: " , $MazoutStatM_id , "\n";  //Debug

$t = getValue($MazoutJ_id);  $MazoutJ=$t['value'];   //Récupère la valeur prédente de MazoutJ
$t = getValue($MazoutM_id);  $MazoutM=$t['value'];   //Récupère la valeur prédente de MazoutM
//echo "Previous MazoutJ: ",  $MazoutJ , "\n";       //Debug
//echo "Previous MazoutM: " , $MazoutM , "\n";       //Debug   
//var_dump($t);                                      //Debug



$Command = getArg('Command','-1');                   //Command, doit être On, Off, Stats ou Reset
//echo "Command: " , $Command , "\n";                //Debug           


switch ($Command) {

  //On/////////////////////
  case "On":
    If ($ChaudiereLastOn == 0) {                              //Test la séquence. Erreur si LastOn <> 0. Le script est appelé consécutivement avec "On". Dans ce cas, on ignore
      SaveVariable('ChaudiereLastOn', strtotime("now"));      //Sauve l'heure actuelle dans la variable sur la box ChaudiereLastOn
    }                                                         //On ignore donc si mauvaise séquence
  break;                                                      //And exit

  //Off/////////////////////
  case "Off":
    If ($ChaudiereLastOn <> 0) {                              //Test la séquence. $ChaudiereLastOn doit être différent de 0
      //Met à jour le temps total pendant lequel la chaudière est enclenchée
      //Mais ignore les On/Off trop courts (<= 3min), dûs à d'autres bruits (e.g. porte qui claque, etc)
      $Now=strtotime("now");
      $Elapse = $Now - $ChaudiereLastOn;
      If ($Elapse > 180)  {                                    //Ignore tout enclenchement inférieur à 180s
        $ChaudiereElapse=$ChaudiereElapse + $Elapse ;          //Comptabilise le dernier enclenchement
        saveVariable('ChaudiereElapse', $ChaudiereElapse);     //Sauve le nouveau temps total
        setValue($MazoutJ_id, $MazoutJ + $Elapse * $Gicleur);  //Met à jour la conso depuis minuit
        setValue($MazoutM_id, $MazoutM + $Elapse * $Gicleur);  //Met à jour la conso depuis le début du mois
        saveVariable('ChaudiereLastOn', 0);                    //Sauve ChaudiereLastOn à "0" pour contrôler les séquences On-Off. Elles doivent se succéder
      }
    }                                                       //Ne fait rien si la séquence n'est pas bonne
  break;                                                    //And exit


  //Stats/////////////////////
  case "Stats":
   
    $Delta=0;                                               //Contiendra la consommation en cours si le brûleur est enclenché
 
    //Comptabilise l'enclenchement en cours si le brûleur est en fonction
    If ($ChaudiereLastOn <> 0) {                            //Chaudière est en fonctionnement si $ChaudiereLastOn <> 0
      $Now=strtotime("now");
      $Elapse = $Now - $ChaudiereLastOn;

      $ChaudiereElapse=$ChaudiereElapse + $Elapse ;         //Comptabilise le dernier enclenchement
      saveVariable('ChaudiereElapse', $ChaudiereElapse);    //Sauve le nouveau temps total
      saveVariable('ChaudiereLastOn', strtotime("now"));    //Sauve l'heure actuelle dans la variable sur la box ChaudiereLastOn
 
      $Delta=$Elapse * $Gicleur;                            //Met à jour la variable $Delta avec la consommation du brûleur en cours
    }   
   
    setValue($MazoutStatJ_id, $MazoutJ + $Delta);           //Met à jour la conso du jour précédent
    setValue($MazoutJ_id, 0, false);                        //Réinitialise le compteur journalier
    setValue($MazoutM_id, $MazoutM + $Delta);               //Met à jour la conso depuis le début du mois
   

    //Nouveau mois?
    $tomorrow = date("d", strtotime("+1 day"));             //Dernier jour du mois si demain, c'est le 1er
    //echo "Tomorrow= ", $tomorrow, "\n";                   //Debug
    $h=date("G");                                           //Heure, format 0 to 23
    if ($tomorrow == 1 AND $h == 23) {
      setValue($MazoutStatM_id, $MazoutM + $Delta, false);  //Met à jour la conso du mois précédent
      setValue($MazoutM_id, 0, false);                      //Réinitialise le compteur mensuel
    };

  break;                                                    //And exit

  //Reset///////////////////// 
  case "Reset":
   
    saveVariable('ChaudiereElapse', 0);                    //Met à zéro les variables sur la box
    saveVariable('ChaudiereLastOn', 0);                   
   
    setValue($MazoutJ_id, 0, false);                       //Et les Etats virtuels
    setValue($MazoutM_id, 0, false);     
    setValue($MazoutStatJ_id, 0, false);
    setValue($MazoutStatM_id, 0, false);
  break;                                                   //And exit


  default:                     //Au cas ou
  break;

} //switch

?>

J’ai essayé de commenter le script au mieux, de manière à pouvoir le comprendre. Mais en quelques points :

Le script possède une machine d’état, On et Off

Si on l’appelle avec le paramètre « On », il enregistre l’heure

Si on l’appelle avec le paramètre « Off », il
• Test la bonne séquence. L’appel précédent devait être à « On »
• Met à jour le temps total pendant lequel la chaudière a été enclenchée, mais ignore les On/Off trop courts (<= 3min), dus à d'autres bruits (e.g. porte qui claque, etc)
• Met à jour les Etats Virtuels « MazoutJ » et « MazoutM »

Si on l’appelle avec le paramètre « Stats »
• Si la chaudière fonctionne, il met à jour les Etats Virtuels « MazoutJ » et « MazoutM »
• Et met à jour les Etats Virtuels « MazoutStatJ » et « MazoutStatM » . Ce dernier état virtuel est mis à jour uniquement le dernier jour du mois.

Si on l’appelle avec le paramètre « Reset », il remet à zéro toutes les variables (les 4 états, ainsi que les variables sauvées sur la box)



On peut tester facilement le bon fonctionnement du script ainsi
• Désactiver les 3 règles Mazout Chaudiere On, Mazout Chaudiere Off et Mazout Chaudiere Stats, pour ne pas qu’elles interagissent avec vos tests
• Dans votre pièce appelée « Mazout », vous pouvez manuellement modifier «MazoutChaudiere » et le fixer à
o « On » pour simuler le démarrage du brûleur
o « Off » pour simuler l’arrêt du brûler
o « Stats » pour que le script renseigne les statistiques journalières
o « Reset » pour tout remettre à zéro

N’oubliez pas
1) Le script ignore les enclenchements inférieurs à 3 minutes, donc il faudra laisser sur « On » pendant plus de 3 minutes (ou modifier le script).
2) Il faudra effacer l’historique des états virtuels, car ces données de test sont évidemment inutiles. Pour cela, allez dans l’historique de chaque état virtuel, et utiliser la fonction « Suppression par plage ».




Améliorations possibles
• Le module Arduino son est vraiment très sensible. Il existe un autre module, avec deux sorties, une analogique et une numérique. Peut-être que ce module est plus simple à régler. Sinon, on peut toujours créer le module, avec un micro et un ampli-op
• Et j’attends vos idées
Cen
 
Messages : 53
Inscription : 14 Oct 2015

Re: Tuto : Consommation chauffage

Messagepar Alphonse Magova » 28 Mai 2017 18:05

Super tuto! félicitations!

Avoir une stat "conso totale" à reset soit même après chaque livraison peut être pratique aussi comme çà on peut estimer à peu près le niveau de la cuve et ne pas se faire surprendre avec une cuve presque à sec.

Comme j'ai mis un Qubino en amont de ma chaudière pour commander l'arrivée électrique je relève du coup la conso de ma chaudière. Quand je consomme moins de 3w la chaudière est au repos, 60w le circulateur fonctionne, 160w préchauffage brûleur et 280w chaudière en en fonctionnement, il faut que j'exploite cette conso pour mettre en place le même tuto que toi, à partir de compteurs virtuels ou un scripts mais là ça me dépasse un peu, ça fait 1 an que je doit m'y mettre... :?

Encore merci pour le partage.
EEDOMUS+
Alphonse Magova
 
Messages : 317
Inscription : 13 Déc 2014

Re: Tuto : Consommation chauffage

Messagepar Cen » 28 Mai 2017 19:38

Bonjour,
Merci pour ton message. Comme ta référence est la consommation donnée par ton capteur, c'est très facilement adaptable à ton cas:
1) tu n'as donc pas besoin de l'actionneur http
2) et les deux règles "Mazout Chaudiere On" et "Mazout Chaudiere On" doivent être "trigées" par la consommation rapportée par ton qubino

Merci encore pour ton message
Cen
 
Messages : 53
Inscription : 14 Oct 2015

Re: Tuto : Consommation chauffage

Messagepar Alphonse Magova » 28 Mai 2017 22:24

Merci pour ta réponse.
Oui il faudrait que la règle "mazout chaudière on" ait le critère "si conso chaudière >250w".

Je vais tester ça quand j'aurai un moment, surtout que la chaudière ne tourne plus trop en ce moment :mrgreen:

Il y a un moyen de faire un cumul jusqu'à reset? Je regarderai le script en détail pour ajouter ça.
EEDOMUS+
Alphonse Magova
 
Messages : 317
Inscription : 13 Déc 2014

Re: Tuto : Consommation chauffage

Messagepar Alphonse Magova » 29 Mai 2017 11:15

Voilà c'est mis en place et ça fonctionne très bien!

Encore merci! :clap:
EEDOMUS+
Alphonse Magova
 
Messages : 317
Inscription : 13 Déc 2014

Re: Tuto : Consommation chauffage

Messagepar Cen » 29 Mai 2017 18:36

Super! Bien joué
Si tu as des idées d'amélioration, je suis preneur
Cen
 
Messages : 53
Inscription : 14 Oct 2015

Re: Tuto : Consommation chauffage

Messagepar rover820i » 30 Mai 2017 09:17

Sacré boulot, félicitations !
rover820i
 
Messages : 3363
Inscription : 23 Juil 2016

Re: Tuto : Consommation chauffage

Messagepar Alphonse Magova » 30 Mai 2017 11:18

Cen a écrit:Super! Bien joué
Si tu as des idées d'amélioration, je suis preneur


Non c'est super comme ça!
Comme je t'ai dis j'ai rajouté dans ton script un cumul depuis dernier remplissage que j'ai appelé mazoutR et j'ai rajouté un reset remplissage uniquement sur mazoutR dans l'actionneur HTTP, je rajouterai une alerte à 1500L (cuve 2000L) pour ne pas me faire surprendre, et si le cumul est fiable je mettrai l'alerte plus proche des 1800L ça me permettra d'ajuster aussi la valeur du gicleur pour avoir une mesure très précise plutôt que la valeur théorique indiquée sur le gicleur. ;)
EEDOMUS+
Alphonse Magova
 
Messages : 317
Inscription : 13 Déc 2014


Retour vers Mes usages

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 20 invité(s)