Tuto Eedomus : utiliser un thermostat Z-Wave pour modifier la consigne d’une zone de chauffage

Dans ce tutorial, nous vous proposons une méthode vous permettant d’utiliser la consigne d’un thermostat Z-Wave physique pour modifier directement la consigne de température d’une programmation de type « Zone de Chauffage » dans l’eeDomus.

En l’occurence, nous utiliserons un SRT321, thermostat pourvu d’une molette permettant de régler une consigne. Notez qu’il est bien sûr possible de reprendre le principe ci-dessous pour n’importe quel thermostat capable de communiquer une consigne à l’eeDomus et la recevoir en retour.

En fin d’article nous vous proposons un résumé des principales étapes, pour que les utilisateurs les plus aguerris puissent directement réaliser cette mise en place, quitte à n’aller voir que les parties de l’article sur lesquels ils ont des doutes.

En l’occurence, le SRT321 inclus sur une eeDomus peut communiquer de la façon suivante :

  • Le thermostat mesure la température et la transmet à l’eeDomus
  • Si nous changeons la température sur le thermostat (avec la molette), elle est immédiatement transmise à l’eeDomus
  • Si nous changeons la température sur le portail eeDomus, elle est transmise au thermostat (lors de la prochaine communication entre l’eeDomus et le thermostat)

Module SRT dans l'eeDomus

De son côté, le thermostat peut indiquer la température mesurée ainsi que la température de consigne actuellement en mémoire.

Si nous ajoutons le thermostat SRT321 a l’eeDomus, nous pouvons directement utiliser son thermomètre intégré pour créer une zone de chauffage, mais il n’est pas possible d’utiliser directement le thermostat pour modifier la valeur de consigne.

Création zone de chauffage
Création d’une Zone de chauffage : nous pouvons spécifier la température source et le chauffage à déclencher, mais pas de périphérique servant de « consigne ».

En effet, lorsque nous créons une zone de chauffage, par défaut, la consigne n’est modifiable que via l’application eeDomus (interface web, applis mobiles)… Donc dans le cadre d’une commande centralisée par le smartphone, c’est très bien, mais ça devient plus compliqué si nous voulons pouvoir utiliser également le thermostat physique pour modifier cette valeur de consigne.

 

Heureusement, avec l’eeDomus il y a toujours une solution !

Notre objectif va être d’utiliser le module créé dans l’eeDomus par le thermostat comme consigne de température générale, pour que cette consigne soit récupérée par la programmation « Zone de chauffage ». L’objectif est de pouvoir changer la consigne finale, qu’elle vienne d’une intervention manuelle sur l’eeDomus (via l’appli mobile ou l’interface web), ou d’une intervention physique sur le thermostat (ou encore d’un automatisme inscrit dans l’eeDomus !).

Commande chauffage via SRT et eeDomus

Crédits images : personnages conçus par Freepik

 

Quelques éléments de préparation

Avant tout, il faut vous assurer de la bonne communication entre l’eeDomus et le thermostat. Pour savoir comment inclure correctement le thermostat dans le réseau de l’eeDomus, je vous propose de lire notre article expliquant l’installation du SRT321 sur l’eeDomus..

Ensuite, pour que la température indiquée sur le thermostat remonte sur l’eeDomus rapidement, il faut faire un paramétrage radio, qui est expliquée sur la fiche du SRT321 de la documentation eeDomus. Ce paramétrage radio consiste à ajouter l’eeDomus dans les groupes d’association 1, 3 et 4 du thermostat SRT321. Ainsi le thermostat renvoie ces valeurs instantanément, dès qu’il y a une modification de la valeur du thermostat. Vous le constaterez, c’est quasiment instantané.

Note concernant le délai de réveil du SRT321 (Wake up)
Vous constaterez qu’en cas de changement de consigne côté eeDomus, le thermostat ne se met pas à jour immédiatement. C’est parce que dans un souci d’économie des piles de l’appareil, il n’interroge le contrôleur que toutes les 30 minutes. Donc, si vous changez la consigne côté eeDomus, il faudra 30 minutes maximum pour que le thermostat l’interroge et récupère sa valeur. L’eeDomus donne l’indication nécessaire car elle indique bien « En cours » pour la consigne tant que celle-ci n’a pas été reçue et mémorisée par le module.
Ce délai est modifiable par paramétrage radio (délai minimum : 15 minutes / 900 secondes) mais il est fortement déconseillé de modifier cette valeur pour éviter une grosse perte d’autonomie.

Il vous faudra également avoir créé la zone de chauffage.

Les scripts eeDomus à la rescousse

Afin de pouvoir mettre en place notre système, nous allons utiliser le système de scripts PHP hébergé sur l’eeDomus, mis en place lors de la mise à jour d’avril dernier.

Étape 1 : récupérer les codes API

Au préalable, nous avons besoin des code API de la consigne de thermostat et de notre zone de chauffage.

Pour trouver le code API du thermostat, c’est simple : il suffit de cliquer sur son bloc et de dérouler la section « Paramètres avancés« .

Le SRT321 créée 2 blocs sur l’eeDomus : un thermostat et un thermomètre. Veillez bien à récupérer le code API du bloc correspondant au thermostat !

Pour trouver le code API de la zone de chauffage, il faut chercher un peu plus loin. Cliquez sur « Configuration » en haut à droite de l’interface eeDomus pour afficher la liste des périphériques. Puis sur les titres de colonnes, cliquez sur la flèche. Là vous avez la possibilité de changer l’ordre de tri mais également d’afficher certaines colonnes cachées. Cochez « Code API » pour afficher la colonne correspondante.

 

Afficher les codes API dans la liste des périphériques

Et là, allez jusqu’à votre section « Périphériques Virtuels » (c’est plutôt vers le bas de la liste) et notez le code API renseigné en face de votre Zone de chauffage.

Afficher code API zone de chauffage

N.B. : vous pouvez également utiliser cet écran pour relever l’API du thermostat, faisant ainsi d’une pierre deux coups ! Notez également que vous n’aurez pas besoin de vos « identifiants API » (identifiant et mot de passe) pour les étapes suivantes.

Étape 2 : accéder à la gestion des script et mettre notre script en place

Pour le système de script, il va vous falloir vous connecter en direct sur votre box eeDomus, sans passer par le portail. Il vous faut donc être sur le même réseau local que l’eeDomus, ce n’est pas faisable si vous accédez à l’eeDomus depuis l’extérieur !

Dans le panneau « Configuration », en cliquant sur l’eeDomus, vous avez son adresse IP de secours qui apparaît.

 

eeDomus - ip de secours

Pour l’exemple nous avons 192.168.1.30. L’eeDomus a généralement ce chiffre 30 en fin d’adresse IP, l’avant-dernier chiffre dépend de votre configuration réseau.

Cliquez sur cette adresse et identifiez-vous (avec votre login et mot de passe du portail eeDomus. Une fois identifié, ajoutez le repertoire « /script/ » sur l’URL pour pouvoir accéder au système de scripts ( https://192.168.1.30/script/ par exemple)

Vous pouvez, au choix, créer un fichier php contenant le code ci-dessous, ou bien télécharger notre script php prêt à l’emploi : Script Thermostat (archive .zip à décompresser pour récupérer le fichier .php).

Le code (à placer dans un fichier script_thermostat.php  créé en respectant les consignes de la documentation eeDomus).

<?
$consigne = getValue(getArg('code_thermostat'));
$json_result = setValue(getArg('code_zonechauffage'), $consigne['value'], true); 
?>

Donc ce script, tout simple, récupère la valeur du thermostat dans une variable $consigne, et envoie cette variable à la zone de chauffage. Au passage, la fonction setValue() vérifie si la valeur fait partie des valeurs acceptées par le thermostat (avec l’argument « true »).

Quelle que soit votre méthode d’obtention du script, vous pouvez l’envoyer sur l’interface en cliquant sur « choisissez un fichier » et en envoyant le fichier. Il apparaîtra alors dans la liste des scripts :

Script PHP eeDomus

Une note sur le lancement du script : conformément aux recommandations de Connected Object, les code API ne sont pas indiqués « en dur » dans le code, nous les spécifierons lorsque nous lancerons le script.

Par exemple, avec le code API 123 pour le thermostat et 456 pour la zone de chauffage :

 https://192.168.1.30/script/?exec=script_thermostat.php&code_thermostat=123&code_zonechauffage=456

Lancé avec cette adresse, le script récupère la valeur de consigne du périphérique ayant le code API 123 et la transmet sur la zone de chauffage ayant le code API 456.

Non seulement cela permet une modification plus aisée des codes API (si vous remplacez le thermostat ou la zone de chauffage, cela générera un code API différent), mais cela nous donne également la possibilité d’utiliser un seul script pour plusieurs zones de chauffage différentes (rien qu’en changeant les code API, nous pourrions actionner une autre zone de chauffage avec un autre thermostat, sans interférer avec le fonctionnement du premier).

Étape 3 : prévoir le déclement du script dans la programmation de l’eeDomus

Nous avons donc notre script, mais un script a besoin d’être sollicité pour pouvoir se déclencher.

Créez un nouveau périphérique de type « Actionneur HTTP » et appellez-le, par exemple, « Script de synchronisation ». Plus tard nous pourrons le mettre dans la pièce « Invisible » pour qu’il ne s’affiche plus car nous n’aurons pas besoin de visualisation pour ce périphérique, mais je vous propose de l’afficher dans un premier temps, afin de tester le lancement du script une fois celui-ci créé.

Script de synchronisation

Dans les valeurs, vous pouvez directement créer une ligne que vous appellez, par exemple, « Lancement du script ».

Ligne de déclenchement du script, périphérique virtuel

  • Valeur et image : mettez ce que vous souhaitez.
  • URL : l’adresse du système de script vu ci-dessus,  https://192.168.1.30/script/
  • Type : GET
  • Paramètres : c’est là que les codes API entrent en jeu.
    J’ai le code API 125489 pour mon thermostat et 125491 pour ma zone de chauffage, je vais donc mettre les paramètres :
    ?exec=script_thermostat.php&code_thermostat=125489&code_zonechauffage=125491

Après avoir sauvegardé ce périphérique http, vous pouvez directement vérifier son fonctionnement : changez la valeur sur le thermostat, puis quand la valeur apparaît sur le module, cliquez sur « Lancement du Script » et la zone de chauffage devrait se synchroniser.

Étape 4 : planifier la synchronisation des valeurs lorsque la consigne change au thermostat

Il ne vous reste plus qu’à créer une nouvelle règle dans Configuration > Règles. Vous pouvez l’appeller « Synchronisation » par exemple.

Dans Horaires, sélectionnez Tous les jours, Toutes les heures, Toutes les minutes, afin que la règle soit exécutée toutes les minutes.

Dans Critères, sélectionnez le Thermostat et choisissez la condition « Est différent de » et votre valeur de Zone de Chauffage.

Dans Actions, choisissez le Script de Synchronisation (créé à l’étape précédente » et choisissez la valeur « Lancement du script« .

Une dernière chose très importante : pensez à mettre une limite au redéclenchement du script (« Autoriser le redéclenchement : 1 minute »). La raison est simple : lorsqu’on change la valeur sur le thermostat, celui-ci peut envoyer des valeurs intermédiaires, et donc causer un redéclenchement du script plusieurs fois en une minute. Si un script est déclenché de nombreuses fois d’affilée, l’eeDomus va bloquer temporairement le script pour éviter les erreurs. Autant anticiper cela dès la création de la règle.

eeDomus : règle de programmation pour le thermostat

Avec cette règle, toutes les minutes, la box vérifie si le thermostat et la consigne ont des valeurs différentes, et si c’est le cas, elle exécute le script qui synchronise ces deux valeurs ensemble.

Comme la vérification est faite régulièrement, même si la valeur est modifiée plusieurs fois de suite en moins d’une minute, même par différentes sources, la Zone de Chauffage prendra la valeur du thermostat lors de sa première vérification.

Quelques points d’amélioration complémentaires

Une fois le système mis en place, et de préférence après avoir testé que tout fonctionne comme souhaité, vous pouvez faire quelques améliorations.

Par exemple, cacher l’icone de lancement du script de l’interface (elle n’indique aucune information).

Vous pouvez également cacher le module « Zone de Chauffage », car finalement vous n’allez plus changer la consigne depuis ce module, mais uniquement depuis le thermostat. Et pourquoi pas cacher également le module indiquant si le chauffage est allumé ou non, pour n’avoir au final que la température ambiante et la consigne de chauffage !

eeDomus et SRT : nettoyage pour clarifier la zone de chauffage

 

Cependant, gardez en tête qu’il peut y avoir un léger différé entre la consigne demandée et la consigne prise en compte par la zone de chauffage :

  • temporisation d’une minute maximum entre un changement de consigne sur le thermostat physique et le moment où la zone de chauffage prend en compte cette consigne.
  • temporisation entre le moment où vous changez la consigne sur l’interface eeDomus et le moment où elle est prise en compte par le thermostat Z-Wave et par la règle de synchronisation (car il faut que le thermostat envoie à l’eeDomus son « accusé de réception » de la consigne !).

Il peut donc être utile de garder une icone avec la consigne de la Zone de Chauffage juste pour contrôler quelle est la consigne en cours. Néanmoins, ne sélectionnez pas votre consigne directement sur la Zone de chauffage car elle sera écrasée par la règle de synchronisation dès la vérification suivante.

Autre axe d’amélioration comme expliqué en préambule, il est possible de diminuer le délai de réveil du thermostat Secure, jusqu’à 15 minutes au lieu des 30 minutes par défaut. Cela se fait dans le paramétrage radio, en envoyant la commande suivante :

Classe : COMMAND_CLASS_WAKE_UP
Nom de commande : WAKE_UP_INTERVAL_SET

Dans ce cas vous pourrez indiquer un délai supérieur à 15 minute afin de réduire le délai de prise en compte de la consigne lorsqu’elle est choisie depuis l’interface eeDomus.

Résumé : les principales étapes

Voici une liste résumant toutes les étapes à suivre pour cette mise en place, ainsi vous pouvez simplement vous référer à cette section pour être sur de n’oublier aucun élément lors de cette mise en place !

  • Inclure le thermostat Secure sur l’eeDomus
  • Paramétrer le thermostat pour que la consigne soit remontée auprès de l’eeDomus
  • Créer la Zone de chauffage
  • Récupérer les codes API du thermostat et de la zone de chauffage
  • Se connecter à l’interface de secours de l’eeDomus puis accéder à l’interface des scripts
  • Envoyer le script de synchronisation sur cette interface
  • Créer un capteur HTTP qui lance le script (avec comme paramètres les codes API)
  • Créer une règle qui vérifie toute les minutes si les valeurs sont égales, et exécute le script si ce n’est pas le cas

A propos Pierre

Technophile, ludophile et bidouilleur dans l'âme, j'aborde les nouvelles technologies avec passion, curiosité et ouverture d'esprit. Je faisais partie de l'équipe de Planète Domotique de juin 2013 à mai 2017, d'où l'écriture de nombreux articles de blog pendant cette période.

A voir aussi

Éteindre proprement votre PC avec un Google Home et IFTTT (Version Google Drive)

Éteindre proprement son PC avec un Google Home et Google Drive

Dans un précédent article, je vous avais donné une solution pour éteindre proprement votre PC …

6 commentaires

  1. Bonjour,
    merci pour ce tuto très intéressant.
    En ce qui me concerne je suis actuellement possesseur d’une box eedomus+ et de têtes thermostatiques Danfoss Living Connect Z-Wave je souhaiterais faire évoluer mon installation. En effet j’ai actuellement un thermostat (sur pile, d’origine dans mon appartement, avec seulement 2 fils qui commande la chaudière) que je suis obligé de laisser à une consigne de température élevé pour distribuer de manière continue le chauffage dans tout l’appartement. Ensuite les têtes thermostatiques prennent le relais et en fonction de la t°C de la pièce, elles s’ouvrent ou se ferment pour chauffer ou pas. Le problème est que je suis obligé de laisser le radiateur de la salle de bain continuellement ouvert pour ne pas mettre le circuit de chauffage en surpression lorsque toutes les têtes sont fermées.
    Donc mon installation est bien mais pas top!
    Ma question est donc de savoir si, en remplaçant mon vieux thermostat par le Netatmo, je serai en mesure de piloter ma chaudière en fonction de la température ressentie par les têtes Danfoss, via la box eedomus+?

  2. Bonsoir
    vous avez peu tester avec un thermostat nest?
    merci

  3. Matthieu :
    C’est tout à fait possible, mais pour un thermostat il faut choisir une seule température de consigne et un seul référentiel pour la température mesurée (vu qu’un thermostat fonctionne sur le principe de comparaison entre température mesurée et température de consigne). Donc il faudra sélectionner une seule des deux têtes danfoss pour transmettre la mesure à l’eedomus.

    mik :
    Nous n’avons pas fait le test, mais comme le thermostat Nest est directement compatible avec l’eedomus, il suffit d’utiliser les données qu’il émet dans les différentes règles du thermostat. Bref, cela fonctionnera sans problème !

  4. bonjour Pierre, super tuto bien complet mais n’auriez vous pas le même style de tuto pour intégrer le thermostat SRT321 + SSR303 sur la Vera Edge ?
    j’ai beau chercher partout je ne trouve rien !
    si vous pouviez m’aider ?
    Merci

  5. Bonjour ,

    Je suis tombé sur ce script , mais j’ai une petite question . Est ce possible d’inverser le role ?

    cad que le consigne zone de chauffage se syncro avec la consigne , je pense modifier le script comme ceci :

    et pour la règle l’executer toutes les heures ?

    Merci

  6. Bonjour,

    Tuto très intéressant, petite question toutefois, lorsqu’on va modifier la consigne sur le SRT, la consigne de chauffage de la zone va se modifier en conséquence via le script. L’inverse est-il vrai? A savoir que si je modifie la consigne de la zone de chauffage, la consigne sur le SRT va être mise à jour (modulo le temps de réveil biensûr), car en lisant le script, cela ne semble pas évident.

    Merci!

Laisser un commentaire

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