7

Régulation de chaudière avec FHEM – part 1

Petit aide-mémoire sur la configuration FHEM qui pilote ma chaudière murale (chauffage central), en lieu et place d’un bête thermostat radio.

Les fonctionnalités de base de l’installation décrite :

  • Programme hebdomadaire
  • Dispositif débrayable : en cas de dysfonctionnement, il est possible de forcer la chaudière à ON ou OFF de manière mécanique

L’intérêt d’utiliser un tel dispositif plutôt qu’un thermostat du commerce est qu’on peut ensuite sophistiquer un peu l’utilisation :

  • arrêt chauffage en cas d’ouverture des portes et fenêtres,
  • déclenchement à distance via Internet ou SMS
  • arrêt/marche sur calendrier, en fonction de la météo, des présences (GPS) …

freezin penguinVoir Régulation de chaudière avec FHEM – part 2 pour les évolutions de ma configuration qui se rapproche maintenant des thermostats des box domotiques en terme de fonctionnalités.

Installation

Matériel :

Module contact sec ITL-1000

Module contact sec ITL-1000

RFXtrx433

Transceiver USB RFXtrx433

Sonde Oregon Scientific THGR122NX

Sonde Oregon THGR122NX

interrupteur

Interrupteur

Branchements

Ne pas oublier de couper le jus avant de brancher ! Branchements Module ITL-1000

Interrupteur et entrée contact sec de la chaudière sont branchés en parallèle sur les deux bornes du milieu. Ainsi on aura un interrupteur mécanique qui permettra  de forcer la mise en route du chauffage, par exemple en cas de panne du module contact sec :

  • inter fermé : ON
  • inter ouvert : AUTO (contrôle par FHEM)

Pour arrêter complètement le chauffage j’utilise les boutons de la chaudière.

Phase et neutre du secteur sont à brancher respectivement sur L et N, et on met tout dans une boite pour éviter les accidents …

Configuration FHEM de base

define temp_hum_etage TRX_WEATHER THGR228N_94_4
  • Définir le déclencheur du brûleur de la chaudière (le module ITL-1000), avec un code AC bidon
define chaudiere TRX_LIGHT AC 000000010a light
attr chaudiere devStateIcon on:Heizung_Hauptschalter.on off:Heizung_Hauptschalter.off
attr chaudiere event-on-update-reading state
  • Définir le thermostat (utilisation de la commande THRESHOLD)
define thermostat THRESHOLD temp_hum_etage:temperature chaudiere
  • Définir le calendrier hebdomadaire en indiquant les températures désirées en fonction du jour de la semaine et de l’heure (utilisation de la commande Heating_Control). Par exemple :
    • le week-end (jours 6 et 0) à 7h : 19,5 °C
    • la semaine (jours 1 à 5) à 6h15 : 19°C et à 8h15 : 18°C, puis 19°C à nouveau à 17h30 sauf le mercredi (jours 1245) et 12h le mercredi
    • dodo à 23h tous les jours : 17,5°C

    define programme_thermostat Heating_Control thermostat 60|07:00|19.5 12345|06:15|19 12345|08:15|18 1245|17:30|19 3|12:00|19 23:00|17.5 { fhem ("set @ desired %")  }

 

Mode d'emploi ITL-1000

Mode d’emploi ITL-1000

Paramétrage du module ITL-1000

On a défini un déclencheur dans FHEM. Pour qu’il puisse contrôler le module contact sec il faut le faire reconnaître par celui-çi :

  1. appuyer sur le bouton L d’apprentissage. La LED clignote
  2. déclencher la chaudière dans FHEM (avec l’interface graphique ou la commande « set chaudiere on »)
  3. Vérifier que ça marche en éteignant et rallumant la chaudière de cette manière !

 

Utilisation

Avec l’interrupteur mécanique sur AUTO et la chaudière réglée sur une température de sortie suffisante, on peut contrôler sa chaudière depuis FHEM :

  • arrêter  le thermostat :
set thermostat deactivated
  • réactiver le thermostat :
set thermostat active
  • changer la temperature souhaitée (elle sera modifiée au prochain événement du calendrier hebdomadaire)
set thermostat desired 20

Ecran chaudière ThemaAvec l’interrupteur mécanique sur ON, la chaudière reste allumée avec son paramétrage standard (mode hors gel, ou réglage de la température de sortie d’eau), ce qui est la solution de secours si rien ne va plus dans l’installation domotique !

 

Un peu plus …

Rajoutons un petit graphe à partir de l’interface graphique pour afficher température de consigne,  température réelle et état du brûleur  (si on a laissé l’interrupteur sur « AUTO »)

Graphe de suivi de chauffage
Suivi du chauffage

1/ Tout d’abord il faut définir un fichier log qui prendra les événements à grapher :

define chauffage_log FileLog ./log/chauffage-%Y-%m.log (thermostat:desired_value.*)|(thermostat:sensor_value.*)|(chaudiere.*)

2/ Chercher cette log dans l’interface graphique et cliquer dessus pour l’éditer

3/ Cliquer sur « Write .gplot file ». Celà génère la commande suivante et un fichier gplot dans /opt/fhem/www/gplot, que l’interface graphique permet de modifier.

define wl_chauffage_log_1 weblink fileplot chauffage_log:wl_chauffage_log_1:CURRENT)

En s’inspirant d’autres graphes, on peut rendre celui-çi assez lisible :

Voici le fichier wl_chauffage_log_1.gplot généré :

# Created by FHEMWEB, 2013-06-03 23:00:00
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Chauffage : <L1>'
set ytics ("on" 1,"off" 0)
set y2tics
set grid
set ylabel "chaudière"
set y2label "Température"
set yrange [-0.1:1.1]

#FileLog 4:thermostat.desired_value\x3a::
#FileLog 4:thermostat.sensor_value\x3a::
#FileLog 3:chaudiere.*::$fld[2]=~"on"?1:0

plot "<IN>" using 1:2 axes x1y2 title 'T° de consigne' ls l0 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'T° mesurée' ls l3 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'brûleur' ls l5 lw 1 with steps

A voir / à faire

Quelques idées pour la suite :

  • Régulation de chauffage par loi d’eau  (ce n’est pas ce que j’ai fait là), qui permet de réguler non pas la circulation d’eau mais la température de sortie de l’eau de la chaudière.
  • Mettre un interrupteur radio en parallèle sur le contact sec pour avoir l’état réel de la chaudière (y compris quand l’interrupteur mécanique est sur ON)
  • Eteindre le chauffage en cas d’absence, si les fenêtres sont ouvertes …

 

 

7 Comments

  1. bonjour Olivier,
    j’ai voulu installer domoticz à la place de fhem, mais en suivant l’install pour rpi, tout fonctionne jusqu’au make qui bloque à 48% sur la compilation du webserver (rien ne se passe). Donc comme je suis bloqué sur cette install( domoticz est tellement plus convivial et facile à utiliser, même s’il est bcp moins puissant que fhem…), je continue sur fhem !
    Là j’ai acheté 2 contacteurs de porte DI-O avec minuterie (minuterie sans intérêt pour moi).

    Je souhaiterais en utiliser un pour la porte d’entrée : si entre 9h et 18h, un jour de semaine non férié, la porte s’ouvre, alors m’envoyer un mail. Grâce à ton tuto, j’ai paramétré la messagerie et fhem sais m’envoyer un mail (1 heure déjà pour y arriver !). Par contre, la détection de l’ouverture (define PORTE) pour envoyer un mail, c’est un peu trop dur pour moi (si PORTE = ON alors send mail, mais en langage fhem ca donne quoi ?)

    De plus, je souhaiterais que l’ouverture de porte entre 19h et 21h, un jour de semaine non férié, appel un script (qui permet d’allumer freebox et tv sur chaine selon heure), mais que ce script ne soit appelé que si TV est OFF.
    Tu saurais m’aider stp ? c’est quand même pas une sinécure ce soft !
    En tout cas je vois que t’en fais pas mal de pub un peu partout 😉

    merci
    fred

  2. j’ai oublié un truc : j’ai pas les graphiques comme toi. Quand je repère le log d mon thermomètre, je clic dessus, et j’ai rien en plot svg…
    il y a une option à définir ? j’ai dans fhem.cfg :
     »
    define autocreate autocreate
    attr autocreate autosave 1
    attr autocreate device_room %TYPE
    attr autocreate filelog /var/log/fhem/%NAME-%Y.log
    attr autocreate weblink 1
    attr autocreate weblink_room Plots
     »
    c’est insuffisant ?
    merci

  3. je me réponds à moi-même pour la 1ere partie de la 1ere question :
    j’ai fait ceci (2 heures !) mais ça m’envoie quand même un message alors qu’il est 19 heures

    define PORTENotify notify PORTE:on {if($hour > 9 || $hour < 17) {fhem "set myMsg send myMail" if($we == 0)}}

    Donc je sens que j'y suis presque mais y'a un probleme dans ma syntaxe (et je verrais demain samedi si we=0 est bien discriminant, ce sera déjà ca)
    merci
    fred

    • je suis trop nul : après encore 2 h j’ai remplacé || par && et ca marche !
      Par contre, entre temps quand meme j’ai avancé sur l’autre partie de la question:
      define PORTENotify2 notify PORTE:on {if($hour > 17 && $hour < 22) {fhem "/etc/porteclai.sh" if($we == 0)}}

      et là l'exécution d'un script avec des conditions je sais pas.
      merci

      • Je ne suis pas chez moi de l’été. J’essaierai de voir à mon retour si tu n’as pas trouvé !
        Essaie le forum de FHEM : tu peux écrire en anglais, la plupart des inscrits à mon avis peuvent te répondre dans cette langue.
        Au fait j’ai regardé ton site qui est sympa (je viens d’y repérer la page écologie qui donne de bonnes idées). Il y a juste un problème avec les liens qui ne fonctionnent pas dans les pages domotique (il faut faire un copier/coller pour les récupérer). J’ai utilisé ces liens pour commencer avec le Karotz que j’ai acheté en 2e main…

  4. Merci pour la remarque sur les liens. Je corrige ce weekend end.
    J’ai bien regardé le forum, et ce que je vois je n’arrive pas à l’appliquer au sujet de l’exécution d’un script (utilisation de la commande system ?)
    Pour le reste :
    Mail. – j’ai réussi
    graph… J’ai mis a jour fhem et depuis j’ai les liens du graph

    Fred

  5. Je me réponds à moi même une fois de plus ! (si ca peut aider)
    J’ai réussi à faire exécuter un script sh depuis FHEM.
    Et j’ai trouvé par hasard, après avoir essayé plein de trucs. Don ca marche, mais je suis pas sûr que ce soit la bonne méthode.
    define PORTENotify2 notify PORTE:on {if($hour > 17 && $hour < 22 && $we == 0) {system("sh /opt/fhem/contrib/porteclai.sh &")}}
    Donc, ce script permet, quand la porte est ouvert, entre 18 et 21 h, sauf le week end, d'exécuter le script porteclai.sh.
    Il suffisait de rajouter "&" àla fin. Pourquoi ? mystère
    fredclo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *