Chauffer sa maison avec Jeedom de A à Z – partie 1 : mise en place initiale

Ma sœur a emménagé dans une nouvelle maison et souhaitait un moyen de gérer efficacement son chauffage entièrement électrique.

L’objectif principal est donc de réguler la température de chaque pièce en fonction de créneaux horaires (présence, absence, vacances).

L’objectif secondaire est d’implémenter un délesteur afin de se limiter à un abonnement électrique de 6kVA, moins cher que l’abonnement 9kVA normalement nécessaire pour alimenter une maison de ce type.

Puisque je lui ai proposé de mettre en place cette solution chez elle de A à Z, autant que je la documente ici :

  • cela peut servir à d’autres,
  • mais surtout, ce sont des notes qui me seront très utiles si pour une quelconque raison j’ai besoin de réinstaller le système dans quelque temps.

A noter que pour mes projets habituels, j’utilise très peu de systèmes commerciaux “prêt à l’emploi” et préfère concevoir mes propres solutions (cartes électroniques, logiciels embarqués, etc). Ici, je vais faire exactement l’inverse : je n’utiliserai que des systèmes commerciaux, qui coûteront certes un peu plus cher, mais qui pourront être réparés et maintenus par n’importe qui. Il ne faut absolument pas que je sois le seul capable de réparer son chauffage le jour où quelque chose fonctionne mal.

Dans cette première partie, j’explique les choix techniques que j’ai faits et la mise en place initiale du système.

La programmation des plages horaires et des scénarios, qui évolueront très certainement au fil du temps, sera détaillée dans un prochain article.

C’est parti !

Synoptique du système

Le système domotique est le suivant :

La centrale domotique mesure la température de chaque pièce grâce à des sondes et active le chauffage s’il fait trop froid. Les thermostats intégrés aux radiateurs sont réglés à fond et leur commande est réalisé par un fil pilote. Ainsi, la régulation de température est en pratique réalisée par les thermostats logiciels du système domotique (en jaune) et non plus par le radiateur lui-même.

On garde la possibilité de reprendre la main très facilement en quittant le mode “fil pilote” du radiateur si nécessaire.

Le sèche-serviette de la salle de bain est quant-à lui mis en route sur des plages horaires fixes (sans thermostat).

Pour finir, le cumulus est en fonctionnement normal en permanence en route, mais peut être délesté si nécessaire.

Choix techniques effectués

Centrale domotique

Le plus simple aurait été d’acheter une centrale domotique prête à l’emploi. On en trouve en grandes surfaces de bricolage de marques Enki (marque Leroy Merlin), Somfy, Otio… Ces solutions sont probablement les plus simples à mettre en place mais me paraissent bien trop fermées et peu évolutives. Je les élimine d’office pour cette raison.

Puisque chez moi, tout est entièrement fait maison, je ne me suis jamais intéressé aux solutions type Jeedom, Domoticz, Home Assistant, Eedomus, etc. Pourtant, c’est vers un tel système que je vais ici me tourner.

Après quelques recherches, j’opte pour Jeedom, il faut l’avouer un peu au hasard. J’en ai peut-être simplement entendu parler un peu plus que les autres. De toute façon, j’imagine que n’importe laquelle pourra répondre au présent besoin qui est un cas de domotique très basique.

Jeedom propose une box prête à l’emploi, Jeedom Altas, pour 235€ TTC. Elle est composée d’un ordinateur monocarte Rock Pi 4 avec une connectivité radio additionnelle (Zigbee, Z-Wave ou Enocean) et Jeedom préinstallé. Le prix n’est pas ahurissant par rapport à l’achat d’un Raspberry Pi + carte SD + boîtier + alimentation 5V de qualité + module radio. Toutefois, comme je possède déjà la plupart de ces équipements, je vais économiser en les recyclant.

Bref, c’est donc un Raspberry Pi 3B+ avec Jeedom qui centralisera l’ensemble.

Protocole radio

Là-encore, je redeviens néophyte : tout est filaire chez moi et je n’ai jamais vraiment touché à ces choses. J’hésite entre le Wi-Fi et le Zigbee. Finalement, j’opte pour le Zigbee pour deux raisons :

  • Bien qu’il existe de nombreuses solutions pour faire coller un relais à partir d’un réseau Wi-Fi, j’aurai également besoin de sondes de température alimentées par pile. Et le Wi-Fi consomme bien trop d’énergie pour être alimenté de cette manière.
  • Je préfère dissocier le réseau sans-fil de la domotique du réseau Wi-Fi “visible” de la box.

Pour ajouter cette connectivité au Raspberry Pi, j’utilise le dongle de la société POPP :

Actionneurs

Il me faut des actionneurs permettant de piloter les radiateurs via leur fil pilote. Comme j’ai seulement besoin de les mettre en route ou les arrêter, deux ordres suffisent (confort et arrêt). J’utilise pour cela des modules Sonoff ZBmini qui fournissent la phase commutée par un relais. Un contact sec aurait été préférable, mais cela ne semble pas très répandu.

SONOFF ZBMINI ZigBee interrupteur intelligent 2 voies compatible avec  Alexa, SmartThings Hub, Philips Hue, Google Home et Sonoff ZBBridge, ZigBee  3.0 Passerelle Hub requis, 10 A/2200 W : Amazon.fr: Bricolage

Pour rappel, les signaux possibles sur le fil pilote sont les suivants :

Fil pilote 6 ordres

Il faut donc pouvoir choisir entre “pas de signal” et “demi-alternance positive”. On obtient facilement ce résultat en ajoutant en diode en série avec la phase commutée par le module Sonoff. Toutefois, un problème rédhibitoire pour moi apparaît : par défaut (relais désactivé), le radiateur chauffe à fond, et il faut faire coller le relais pour l’arrêter.

[ajouter schéma élec]

J’alimente donc le fil pilote en permanence travers la diode pour être au repos en mode “arrêt” et je viens la court-circuiter avec relais pour passer en mode “éco”. Autrement dit, le prix à payer pour inverser la logique est de basculer entre les modes “arrêt” ou “éco” et non plus entre “arrêt” et “confort”. Mais ce n’est quoi qu’il en soit pas très gênant : comme le thermostat du radiateur sera réglé à fond, son mode éco devrait suffire à obtenir une température confortable.

[ajouter schéma élec]

Sondes de température

Il en faut une dans chaque pièce. Je réduis le choix aux modèles disposant d’un écran LCD car ils ne sont pas plus chers et il est bien pratique de pouvoir lire la température directement sur la sonde.

Il existe des modèles Zigbee, qui seraient l’idéal puisque c’est le protocole radio que j’ai choisi. Toutefois, Xiaomi vend des thermomètres Bluetooth Low Energy (BLE) pour un prix défiant toute concurrence (2 à 3 euros pièce). En plus, j’en ai déjà en ma possession, je vais donc utiliser ceux-là.

Xiaomi Mijia thermomètre hygromètre Bluetooth 2 sans fil pour maison  connectée : Amazon.fr: Bricolage

Attention toutefois, ils ne sont pas reconnus nativement dans Jeedom. Il faut bricoler un peu, j’ai d’ailleurs écrit un article dédié à ce sujet.

Télécommande radio

Il est très pratique d’avoir une télécommande avec quelques boutons physiques pour basculer entre les scénarios ou déclencher des actions.

Pour cela, j’ai choisi la télécommande 3 boutons Loratap. Bien que sa notice papier indique qu’elle est seulement compatible avec un hub Zigbee de la marque, elle est en pratique très bien gérée par Jeedom et le dongle Popp.

Je m’en servirai pour basculer manuellement entre les modes Eco et Confort en cas d’absence (ou de présence) imprévue dans la maison, en dehors des plages horaires habituelles.

Installation et configuration de Jeedom

Installation sur le Raspberry Pi

Au moment où j’écris ces lignes, la version stable de Jeedom est la V4.1.27 et tourne sous Raspbian Buster. La procédure d’installation est très bien décrite sur le site officiel.

Je n’ai pas utilisé l’image préinstallée et ai préféré prendre l’image de Raspbian sur le site de Raspberry Pi et de lancer manuellement l’installation ensuite.

Opérations préliminaires

Compte Market

Il faut d’abord lier Jeedom à un compte Market, pour pouvoir télécharger et installer des plugins (payants). On a ou aura besoin de ceux-ci :

  • Zigbee : 6€
  • Thermostat : 8€
  • Suivi Conso : 8€
  • Délestage : 6€
  • Agenda : 4€
  • Weather : gratuit
  • Bluetooth Advertisement : gratuit

Arborescence des pièces de la maison

Ensuite, on créé l’arborescence des pièces de la maison en créant les objets suivants grâce au menu Outils/Objets :

  • Maison
    • Salon
    • Salle de bain
    • Chambres
      • Chambre 1
      • Chambre 2
      • Chambre 3
      • Chambre 4

Augmentation de la taille des logs

Par défaut, les logs ne font que 500 lignes : cela ne permet de remonter que quelques heures à peine dans le temps. C’est insuffisant pour analyser ce qu’il s’est passé en cas de problème.

On va donc aller dans Réglages -> Système -> Configuration puis sur l’onglet Logs :

  • Augmenter l’historique de la timeline à 5000
  • Après avoir à nouveau cliqué sur Logs en-dessous, passer le nombre de lignes maximum à 5000 également.

Sauvegarde et restauration du système

Sauvegarde de la configuration sur une clé USB

Puisque c’est super important, on met en place dès à présent la sauvegarde du système. Le but étant que lorsque la carte SD crashera (et cela arrivera tôt ou tard), non seulement il n’y ait quasiment pas de données perdues, mais aussi que le retour à la normale soit simple et rapide.

Il faut déjà savoir que Jeedom sauvegarde nativement sa configuration et sa base de données dans le répertoire /var/www/html/backups. Le problème est que si la carte SD crashe, ces sauvegardes locales sont également perdues.

On va donc régulièrement copier ces sauvegardes vers une clé USB externe. Dans notre cas, elle est en permanence montée dans le répertoire /mnt/storage.

Plutôt que d’utiliser un cron quotidien, on va plutôt créer un scénario qui s’exécutera dès que Jeedom aura terminé sa sauvegarde. Ainsi, elle sera immédiatement répercutée sur la clé USB.

Bon à savoir : le plugin CloudSync Pro permet de copier les sauvegardes vers un serveur FTP, Google Drive ou Dropbox, mais je ne l’utiliserai pas ici.

Toutefois, on va voir dans la partie suivante que cette sauvegarde n’est pas suffisante.

Maintien à jour d’une carte SD de secours

Avec notre sauvegarde sur une clé USB, on est à l’abri de perdre complètement la configuration et de devoir tout recommencer. Toutefois, si la carte SD crashe, il faut quand même prendre de temps de créer une nouvelle carte SD, flasher l’image de Jeedom dessus, restaurer la sauvegarde… Et si on faisait en sorte d’avoir toujours une carte SD de secours, prête avec le système de la veille ?

On va donc insérer une autre carte SD dans un lecteur USB. Tous les jours, on va répliquer le système sur celle-ci grâce à l’outil rpi-clone. Ainsi, quand ce sera nécessaire, il suffira de prendre cette carte-là et la mettre à la place de celle défectueuse pour redémarrer comme si de rien n’était. On clone donc le dépot Git pour télécharger l’outil :

git clone https://github.com/billw2/rpi-clone.git

On l’exécute ensuite de la manière suivante, où sda est la carte SD externe (à adapter à votre cas). L’option -U permet de ne pas demander de confirmations interactives :

/home/pi/rpi-clone/rpi-clone -U sda

Problème : si autre clé USB est connectée (et c’est mon cas), leurs noms (sda ou sdb) peuvent être échangés à tout moment. Il faut donc trouver un moyen d’identifier de manière unique la carte. Pour cela, on cherche la carte dans /dev/disk/by-id. Chez moi, elle s’appelle /dev/disk/by-id/usb-TS-RDF5_SD_Transcend_000000000037-0:0 et dépend du lecteur de carte SD utilisé, mais pas de la carte elle-même (c’est très bien !).
Or, rpi-clone attend un nom sous la forme sda ou sdb. On utilise donc les commandes readlink et basename pour obtenir cette information. Finalement, la commande à exécuter est, chez moi :

sudo /home/pi/rpi-clone/rpi-clone -U $(basename $(readlink /dev/disk/by-id/usb-TS-RDF5_SD_Transcend_000000000037-0:0))

On va donc également l’intégrer au scénario Jeedom.

Scénario Jeedom

Pour exécuter ces 2 sauvegardes différentes, on va utiliser Jeedom plutôt que d’aller bricoler dans le système.

  • Il faut donc créer un nouveau scénario dans Outils -> Scénarios. Le nommer par exemple Sauvegarde USB.
  • Le mode de déclenchement est Provoqué et il faut cliquer sur Ajouter un déclencheur puis saisir l’événement #end_backup#.
  • Dans l’onglet Scénario, on va ajouter un bloc de type Code qui contiendra les lignes suivantes :
$point_montage = "/mnt/storage"; // ne pas terminer par /, point de montage de la clé USB où copier les sauvegardes de Jeedom
$sousrepertoire_sauvegarde = "sauvegarde_jeedom/"; // Nom du sous-répertoire dans lequel copier les sauvegardes de Jeedom
$carte_sd_secours = "/dev/disk/by-id/usb-TS-RDF5_SD_Transcend_000000000037-0:0"; // Périphérique désignant la carte SD de secours sur laquelle répliquer le système

/********************************************************
***** Copie des sauvegardes Jeedom sur une clé USB
********************************************************/

// On vérifie que $point_montage est bien un point de montage
exec('mountpoint '.$point_montage, $sortie, $retour);
if($retour == 0) // c'est OK
{
	$commande = 'sudo rsync --ignore-existing --delete -v -r /var/www/html/backup/ '.$point_montage.'/'.$sousrepertoire_sauvegarde;
	exec($commande, $sortie, $retour);
	if($retour == 0)
		$log = 'Sauvegarde réussie';
	else
		$log = 'Echec de rsync';
}
else
	$log = $point_montage.' n\'est pas un point de montage';

$scenario->setLog('ETAT SAUVEGARDE COPIE JEEDOM: '.$log);

/*************************************************
***** Création d'une carte SD de secours
*************************************************/
$commande = 'sudo /home/pi/rpi-clone/rpi-clone -U $(basename $(readlink '.$carte_sd_secours.'))';
exec($commande, $sortie, $retour);
if($retour == 0)
	$log = 'Création SD secours réussie';
else
	$log = 'Echec de la création de la SD de secours';

$scenario->setLog('ETAT CREATION SD SECOURS : '.$log);

Les deux premières lignes permettent de choisir le répertoire de destination, dans mon cas /mnt/storage/sauvegarde_jeedom. Cliquez sur Sauvegarder puis Exécuter pour tester le bon fonctionnement :

Il ne reste plus qu’à vérifier demain si une nouvelle sauvegarde est apparue sur la clé !

Installation des périphériques Zigbee

Généralités

  • Installer le plugin Zigbee (6€) depuis le Market Jeedom
  • Aller ensuite dans sa page de configuration (Plugins -> Gestion des Plugins -> Zigbee)
    • Cliquer sur Activer dans la partie État
    • Installer les dépendances en cliquant sur Relancer dans la partie Dépendances. Attendre que cela soit terminé.
    • Activer la gestion automatique du démon afin qu’il se lance tout seul au démarrage du système (un démon est, sous Linux, un programme qui tourne en tâche de fond – rien à voir avec la sorcellerie !)
    • Choisir EZSP (Atlas) comme type de contrôleur dans la partie Configuration
    • Choisir Atlas/Elelabs/POPP comme type de clé dans la partie Configuration
    • Choisir /dev/ttyUSB0 comme port du contrôleur dans la partie Configuration
    • Ne pas oublier de sauvegarder en cliquant sur le bouton éponyme en haut à droite du bandeau Configuration
    • Cliquer finalement sur Relancer le démon
  • Lancer le mode inclusion pour inclure un périphérique au réseau : Plugins -> Protocole domotique-> Zigbee et cliquer sur Mode inclusion. Choisir le Démon 1 (de toute façon, il devrait n’y en avoir qu’un). Pendant que la clé Zigbee est en mode inclusion, il faut agir sur les périphériques : cf parties ci-dessous.

Télécommande Loratap

Pour l’inclure au réseau Zigbee, il faut la démonter (1 vis à l’arrière) et maintenir appuyé le bouton-poussoir au dos pendant 5 secondes. Une LED jaune côté opposé se met à clignoter.

Quelques dizaines de secondes plus tard, Jeedom reconnaît automatiquement la télécommande :

  • Saisir un nom pour l’équipement, par exemple Télécommande 3 boutons
  • Choisir l’objet parent Maison, puisque cette télécommande gérera les scénarios globaux de la maison
  • Cocher la case Activer mais pas forcément Visible (ce n’est pas très important qu’elle apparaisse sur le Dashboard)
  • Sauvegarder en haut à droite dans le bandeau

Actuellement, elle n’est pas toujours bien supportée par Jeedom et il va falloir adapter manuellement quelques paramètres. On va donc aller dans l’onglet Commandes pour réaliser des corrections. L’onglet doit ressembler à cela :

Commandes fil pilote Sonoff

Lors de leur première mise sous tension, les modules Sonoff entrent directement en mode inclusion (led verte clignotante visible à travers le capot). Sinon, il faut maintenir le bouton appuyé pendant 5s.

Comme pour la télécommande, on arrive ensuite automatiquement sur sa page de configuration :

  • Saisir un nom pour l’équipement, par exemple Radiateur salon
  • Choisir l’objet parent correspondant à la pièce dans laquelle il se trouve
  • Le mettre dans la catégorie Chauffage
  • Sauvegarder

Répéter cela pour chaque module.

Installation des sondes de température

Les sondes de température utilisent le protocole Bluetooth Low Energy et non Zigbee. Par conséquent, il faut un plugin supplémentaire : Bluetooth Advertisement.

Elle doivent être préalablement flashées et le script du plugin modifié comme expliqué dans l’article dédié à ce sujet.

  • Installer le plugin Bluetooth Advertisement (gratuit) depuis le Market Jeedom
  • Aller ensuite dans sa page de configuration (Plugins -> Gestion des Plugins -> Bluetooth Advertisement)
    • Cliquer sur Activer
    • Installer les dépendances en cliquant sur Relancer
    • Port clef bluetooth : choisir votre périphérique bluetooth dans la liste (il y en a probablement qu’un)
    • Mode de scan : passif
    • Comme pour le Zigbee, ne pas oublier de sauvegarder et relancer le démon.
  • Faire un scan des périphériques : Plugins -> Protocole domotique-> Bluetooth Advertisement et cliquer sur Lancer scan
    • Choisir de rechercher tous les types de périphériques
    • Pour chaque périphérique détecté :
      • Onglet Équipement (celui sur lequel on arrive directement) :
        • Nom du device : saisir Thermomètre suivi du nom de la pièce dans laquelle il se trouve
        • Objet parent : la pièce dans laquelle il se trouve
        • Catégorie : cocher seulement la case Chauffage
        • Cocher les cases Activer et Visible
      • Onglet Paramètres :
        • Décocher Refresh Forcé
      • Onglet Commandes :
        • Afficher Température, Humidité et Batterie
        • Décocher le reste

Normalement, les données doivent s’afficher dans le Dashboard. Vérifier qu’elles sont correctes.

Installation du plugin Weather

Les thermostats virtuels ont besoin de la température extérieure pour moduler efficacement la puissance du chauffage.

Comme on n’a pas de sonde extérieure matérielle, on récupère les données sur Internet grâce au plugin Weather (météo). Lien vers sa documentation : https://doc.jeedom.com/fr_FR/plugins/weather/weather/

  • Installer le plugin Weather (gratuit) depuis le Market Jeedom
  • Aller ensuite dans sa page de configuration (Plugins -> Gestion des Plugins -> Weather)
    • Cliquer sur Activer
    • Saisir la clé API en-dessous. Pour obtenir une clé API, il faut s’inscrire sur le site OpenWeatherMap
  • Ajouter ensuite une météo : Plugins -> Météo -> Weather et cliquer sur Ajouter
    • Saisir le nom de l’équipement : Météo
    • Objet parent : Maison
    • Catégorie : tout décocher
    • Cocher la case Activer mais PAS Visible
    • Ville : la ville où se situe la maison. Les petites villes ne sont pas répertoriées, vérifiez que la vôtre est bien reconnue directement sur le site https://openweathermap.org
    • Dans l’onglet Commandes, je suggère de tester quelques valeurs afin de vérifier que tout fonctionne bien.

Installation du plugin Thermostat

Lien vers sa documentation : https://doc.jeedom.com/fr_FR/plugins/wellness/thermostat/

  • Acheter puis installer le plugin Thermostat depuis le Market Jeedom
  • Aller ensuite dans sa page de configuration (Plugins -> Gestion des Plugins -> Thermostat) et cliquer sur Activer
  • Ajouter ensuite un thermostat pour chaque pièce : Plugins -> Confort -> Thermostat et cliquer sur Ajouter
    • Onglet Équipement (celui sur lequel on arrive directement) :
      • Choisir son objet parent : la pièce dans laquelle il se trouve
      • Cocher les cases Activer et Visible
      • Moteur : temporel
      • Autoriser : chauffage uniquement
      • Températures min et max : 10 à 25°C (correspondent à la gamme de réglage possible du thermostat)
      • Sonde : choisir la sonde de température de la pièce
      • Bornes de température inférieure et supérieure : 8 à 27°C (permet de lancer une alerte si la sonde renvoie une température en-dehors de cette gamme)
      • Température extérieure : choisir la température renvoyée par le plugin Météo. Elle se trouve normalement dans Maison -> Météo -> Température
      • Consommation par jour en kWh : on verra plus tard
  • Onglet Actions :
    • Ajouter autant d’actions dans Pour chauffer je dois ? et Pour refroidir je dois ? qu’il y a de radiateurs dans cette pièce. Il faut pour chacune choisir les commandes “on” et “off” des modules Sonoff.
  • Onglet Modes :
    • Attention, il faut absolument avoir cliqué sur Sauvegarder en haut à droite pour pouvoir continuer !
    • Ajouter deux modes nommés Confort et Eco qui règlent deux températures de consigne, par exemple 20°C et 17°C.
    • Pour cela, après avoir ajouté le mode, il faut ajouter une action sur la commande Thermostat de l’équipement Thermostat de votre pièce. Voici ce que l’on doit obtenir :
  • Onglet Avancé :
    • Adapter la durée d’un cycle à la durée approximative de l’inertie du chauffage. Pour un radiateur électrique, la durée par défaut de 60 minutes est peut-être un peu élevée. Aussi, j’ai rencontré des problèmes lorsque le mode en cours était changé exactement à la fin d’un cycle (exemple : cycles de 30 minutes et une programmation met le thermostat en mode Confort à 6h et en Eco à 7h. A 7h, c’est la fin du deuxième cycle qui coïncide exactement avec le passage en mode Eco). Je conseillerais donc de mettre une durée “non ronde”, type 31 minutes, afin d’éviter que cela se produise.
    • Durée max entre 2 changements de température de la sonde : mettre ici une longue durée, par exemple 600 minutes (10 heures). Cela signifie que si la température n’a pas évolué dans la pièce dans cet intervalle de temps, la sonde est considérée comme défaillante.
    • Décocher la case Smart start

Ne pas oublier de sauvegarder en haut à droite, comme d’habitude !

Répéter l’opération pour chaque pièce.

Installation du plugin Agenda

Le plugin Agenda nous servira à définir les plages horaires de fonctionnement du chauffage. Son utilisation concrète sera décrite dans le prochain article, en attendant on va l’installer et le configurer.

  • Installer le plugin Agenda depuis le Market Jeedom, comme les autres
  • Aller ensuite dans sa page de configuration (Plugins -> Gestion des Plugins -> Agenda)
    • Cliquer sur Activer
  • Créer ensuite un agenda par pièce à chauffer : Plugins -> Organisation -> Agenda et cliquer sur Ajouter
    • Saisir le nom de l’équipement : Agenda salon (par exemple)
    • Objet parent : la pièce concernée par cet agenda
    • Catégorie : Chauffage
    • Cocher la case Activer mais PAS Visible

OUFFFF, c’est fini !!!

On verra la programmation des plages horaires de chauffe et les scénarios dans le prochain article.

Laisser un commentaire

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