Beta : Thermostat virtuel pour la Vera

Beta : Thermostat virtuel pour la Vera
Note de l’utilisateur

Un petit pardon avant de débuter cet article, je n’ai pas eu beaucoup de temps pour poster de nouveaux articles sur le blog. Un peu de congés et pas mal de boulot ! Je profite donc de ce retour pour vous faire découvrir un plugin que je co-développe avec un membre du forum touteladomotique : Fatal25.

Avec plusieurs utilisateurs de ce forum, nous avons fait le constat qu’il manquait cruellement un plugin pour gérer nos radiateurs. Nous avons débuté le développement au début de l’hiver et nous venons de lancer depuis la semaine dernière la beta ouverte ! Bien sur la prochaine étape sera la publication sur l’app store de Micasaverde.

1/ Présentation des fonctionnalités

Sans plus attendre, passons à la présentation de ce thermostat :

Comme chacun sait, la fonction première d’un thermostat est de réguler la température dans une pièce (ou zone). Il existe (en Z-wave notamment) des thermostats physiques (réèls), équipés d’un capteur de température et d’une connexion de commande vers votre radiateur. Vous lui indiquez la consigne est il s’occupe de piloter les radiateurs pour rester autours de la température de consigne.

Ici, le principe est le même sauf que le thermostat est virtuel et qu’il se pilote depuis votre Vera (ou votre iphone).

1.1/ De quoi avez-vous besoin ?

D’un radiateur commandé par la Vera, évidement et d’un capteur de température (lui aussi connecté à la Vera). Pour pouvoir bénéficier d’un précision suffisante, je vous conseille d’utiliser par exemple une sonde Oregon et un module rfxcom USB ( par exemple ici). Ainsi vous pourrez bénéficier des décimales pour la commande de la température.

1.2/ Les fonctions de bases

Une fois paramètrés correctement (nous aborderons le paramétrage plus loin dans l’article). Vous allez pouvoir commander un ou plusieurs radiateurs

Les différents modes :

Le thermostat peut être dans 3 modes :

  1. Off : Coupe tous les radiateurs commandés
  2. Auto : le plugin décide en fonction de la température s’il faut allumer ou éteindre les radiateurs. C’est le mode d’utilisation le plus fréquent.
  3. Heat : Correspond au mode forcé : Met en route, tous vos radiateurs.

Dans le mode Auto, le plugin va déterminer automatiquement, en fonction de la température de la pièces et de la température extérieur (optionnel) le temps de chauffe nécessaire pour atteindre ou maintenir la température de consigne. Pour cela, une fois par heure (ou lors de modifications de la consigne, etc.) le plugin calcule un pourcentage de chauffe. Prenons un exemple (les valeurs sont fictives) la température de consigne est de 21 et la température de la pièce à 20.3, le plugin va estimer qu’il faut chauffer 25% du temps. Il va donc allumer le chauffage durant les 15 premières minutes, puis le couper les 45 minutes suivant. A la fin de l’heure, il relance le calcul pour estimer de nouveau le besoin etc.

Ce principe a l’avantage de laisser la température de la pièce s’équilibrer avant de recalculer le temps de chauffe. De cette manière on est indépendant de la distance entre la sonde de température et le radiateur. Ainsi on limite le nombre de changement d’état du radiateur et de module qui le commande. Sans vouloir dire de bêtise, il me semble que c’est également ce principe qui est repris sur l’eedomus.

Les températures de consignes :

Passons maintenant à la température de consigne, ou plutôt les températures de consigne car il en existe 2 : une pour le mode Confort (en rouge) et une pour le mode Eco (en bleu). En fonction du mode de consigne choisie, le plugin utilise l’une ou l’autre pour calculer la durée de chauffe nécéssaire (si bien sur vous etes dans le mode Auto). En cas de changement de consigne, ou de mode de consigne, la détermination du temps de chauffe est relancée sans attendre la fin de l’heure.

Il est possible de choisir une valeur décimale pour les consignes en passant par la vu complète :

Pour cela, il faut utiliser le bon « Set » avec par exemple la valeur « 20.5  » (attention, le séparateur décimal est bien le point).

1.3/ Les fonctions avancées

La coupure en cas de fenêtre ouverte :

Il est possible d’ajouter des capteurs d’ouvertures (ou des switchs virtuels) à notre plugin afin de couper automatiquement les radiateurs en cas de détection d’ouverture de fenêtre par exemple.

Il est également possible de choisir un délai avant la coupure et un délai avant la reprise. Ainsi si vous ouvrez et refermez la fenêtre durant un bref instant (inférieur à la durée du délai que vous aurez paramétré), le plugin ne coupera pas le chauffage. (idem pour la reprise, si vous fermez et rouvrez brièvement votre fenêtre alors que le module a été coupé suite à l’ouverture prolongée de la fenêtre)

Tempo sur le mode forcé :

Il est possible de choisir d’associer un délai pour le mode forcé. Si un délai est configuré, lorsque vous activez (manuellement ou via une scène) le mode forcé (bouton heat), un compte a rebours commence. A la fin le module repasse automatiquement en mode Auto.

Sécurité sur les sondes de températures :

Une sécurité vérifie que la température remontée par vos sondes date de moins de 15 minutes. Dans le cas contraire, la sonde est ignorée. Si toutes les sondes sont ignorées, le plugin considérera que la température de la pièce est égale à la température de consigne et coupera le chauffage.

Ainsi pas de problème si l’une de vos sondes n’a plus de pile, il n’y a pas de risque que le radiateur reste actif durant des heures

2/ La phase de Beta

2.1/ Présentation

La phase de Beta test est plutôt réservée aux utilisateurs qui se sentent alaise avec la Vera. La version de l’application est instable et est susceptible d’évoluer, utiliser la à vos propres risques :twisted: et sur des systèmes non critique.

Durant cette phase, vous devrez déposer vous même les fichiers sur la Vera et créer manuellement le device virtuel. Assurez-vous régulièrement d’avoir la dernière version a jour, en particulier avant de signaler un problème.

Une fois la phase de test terminée, le plug-in sera disponible via le magasin d’application pour permettre une installation simplifiée et profiter du système de mise à jour automatique.

Pour l’instant la doc est plutôt minimaliste. Elle détaille l’usage des différents paramètres de configuration du plugin.
Vous pouvez la retrouver ici : https://github.com/AntorFr/SmartVT/wiki

2.2/ Récupérer les fichiers

nous allons gérer 3 versions (branches) :

Pour simplifier et partager vos retours, je propose de tout centraliser sur ce post du forum touteladomotique.

2.3/ Installation sur votre Vera

Déposer les fichiers sur votre Vera puis créer un device virtuel avec comme paramètres :
Upnp Device Filename : D_SmartVT1.xml
Upnp Implementation Filename : I_SmartVT1.xml

Vous aurez probablement a redémarrer votre Vera puis a recharger votre page Web.

2.4/ Paramétrage  du plugin

Une fois le module créé, voici la liste des paramétrages disponibles :

Paramètres obligatoires :

Inside Temp Sensors : Compléter avec la liste des ID de vos capteurs de température intérieures séparé par des virgules. Le plugin fait la moyenne de toute les valeurs.

heaters : Compléter avec la liste des ID de vos radiateurs séparé par des virgules

Paramètres facultatifs

Outside Temp Sensors : Compléter avec la liste des ID de vos capteurs de température extérieures séparé par des virgules. Le plugin fait la moyenne de toute les valeurs.

inhibit Sensors : Compléter avec la liste de vos capteurs d’ouverture séparé par des virgules. Si vous voulez inverser la condition (coupure du chauffage si le capteur est à 0) il faut mettre un moins devant l’id du module. Si au moins un des capteurs est activé => le chauffage se coupe.

Waiting Time Open : Durée de la tempo en seconde avant coupure du chauffage si une des sondes est activée

Waiting Time Close : Durée de la tempo en seconde avant reprise du chauffage si toutes les sondes sont désactivée

Forced Mode Duration : Durée du mode forcé avant retour au mode auto. XX : en seconde, XXm : en minute (exemple 30m), XXh : en heure (exemple 1h).

PowerMin : % minimal de chauffage si le module considère qu’il est nécessaire de chauffer (en fonction de la température intérieure et extérieure)

Calculation period : Durée(en seconde) entre deux calculs de puissance de chauffe (3600 par défaut)

3/ Le reste à faire

La première version est plutôt complète, nous avons réussi a intégrer tout ce que nous souhaitions y mettre.

Une évolution majeur reste a venir : l’auto calibrage du plugin. Aujourd’hui, le calcul du temps de chauffe est fait à partir de coefficients qui fonctionne très bien pour des pièces de taille standard. L’idée est d’ajouter une fonction qui ajuste automatiquement les coefficients en fonction de la température atteinte en fin de cycle (sur une base d’un grand nombre de cycle). Ainsi le plugin s’adaptera avec encore plus de précision à la taille de la pièce et à son isolement avec l’extérieur.

Cette fonction viendra dans un second temps mais nous commençons dès maintenant a travailler dessus.

4/ A vous de jouer

Have fun, et merci d’avance pour vos retours qui nous serons utile pour améliorer le système (via ce post)

This post is also available in: Anglais

  • geoay

    Bravo Antor et Fatal25 ! Je suis vos travaux depuis le début sur le forum de Toute la Domotique. J’ai besoin de commander un fil pilote et au début je voulais prendre ton plugin d’origine. Comment puis-je utiliser celui-ci (plus sophistiqué et j’ai une sonde extérieure) pour réguler via le fil pilote (je vais acheter un Fibaro FGS 221 (j’ai déjà la diode). En tout cas félicitations pour le travail réalisé !

    • Le plugin thermostat s’utilise en complément du module fils pilote.

  • geoay

    Je viens de relire le tutorial, plus synthétique que les dizaines de messages du forum ! Il y a une fonction intéressante que j’aimerais avoir comme sur des thermostats qui pilotent certaines de mes pièces. A savoir la possibilité de programmer plusieurs valeurs de consigne en fonction de l’heure de la journée. Le plugin actuel le permet-il ? Avez vous cette fonction dans vos tiroirs ?

    • Bonjour geoay,

      Il est possible de programmer, 2 températures de consignes (Confort et Eco). Il est possible d’utiliser des scènes pour faire changer soit le mode (Confort ou Eco) soit même la température de consigne si tu as plus de 2 températures a programmer par jour.
      Est-ce suffisant pour répondre a ce dont tu as besoin ?

  • droopyjj

    Bonjour Antor,
    Ayant vu ton retour sur le forum et après que milillucuti m’a fait comprendre que ma demande n’était pas au gout du jour, je tente ici un passage sur ton site. (j’abuse peut être!!)
    Je vois donc que ma demande rejoint un peu celle de geoay.
    Tu dis qu’il est possible de commander le thermostat via une scene: Comment fait-on ?
    La demande d’un « timer » est-elle vraiment si nule que cela?
    Ne peut-on pas faire un truc simple du style 22° entre 6h et 7h tous les lundi, avant de faire quelque chose de plus compliqué ?

    • Il est tres simple via une scène de paramétrer une consigne de type : 22° entre 6h et 7h tous les lundi. J’avais ecris un article concernant l’utilisation des scènes que tu pourras trouver ici : http://www.antor.fr/2012/04/30/utilisation-avancee-des-scenes-vera/
      Si cette article n’est pas suffisant, n’hésites pas a demander, j’essaierai d’ecrire un petit tutoriel.

  • droopyjj

    J’ai oublié:
    Ce n’est pas pour fayoter, mais je trouve ce module tres top!!
    Félicitation! c’est du super boulot

    • Merci pour ton soutient droopyjj 🙂

      Pour ceux qui le souhaite, j’ai mis en place un bouton donate pour nous encourager et payer les frais liés au site.

  • antislash78

    Bonjour et bravo pour ce travail.

    J’utilise depuis quelques jours et cela fonctionne parfaitement.

    Il me reste à pouvoir changer la valeur de la variable de consigne depuis l’extérieur.

    J’ai essayé avec une url de ce type :

    https://fwd2.mios.com/xxxxxxxx/xxxxxxx/xxxxxx/data_request?id=variableset&DeviceNum=86&serviceId=urn:upnp-org:serviceId:SmartVT1&Variable=TemperatureSetpoint1_Heat&Value=19

    Mais cela me crée une nouvelle variable dans le thermostat virtuel.

    Quelle syntaxe utiliser pour modifier la valeur du paramètre ?

    • Bonjour Antislash,

      Nous utilisons les ServiceId standard soit :
      « urn:upnp-org:serviceId:TemperatureSetpoint1_Heat » pour la consigne Confort
      « urn:upnp-org:serviceId:TemperatureSetpoint1_Cool » pour la consigne Eco

      Cordialement,

  • antislash78

    Bonsoir Antor,

    Merci pour ta réponse.

    En fait j’avais relevé le nom de la variable dans les paramètres avancé du module, mais je ne trouve pas la syntaxe pour modifier cette valeur depuis l’exterieur via une requette http…

  • antislash78

    J’ai essayé cela (avec devant les infos d’identification qui fonctionnent avec d’autres requetes ) :

    /data_request?id=lu_action&DeviceNum=86&serviceId=urn:upnp-org:serviceId:TemperatureSetpoint1_Heat&action=SetTarget&newTargetValue=18.1

    J’obtiens :
    ERROR: No implementation

  • antislash78

    Je me réponds à moi-meme si d’autres sont intéressés par la modification de la consigne :

    /data_request?id=lu_action&serviceId=urn:upnp-org:serviceId:TemperatureSetpoint1_Heat&DeviceNum=86&action=SetCurrentSetpoint&NewCurrentSetpoint=18.2

    Ou 86 est l’ID du thermostat et 18.2 la consigne.

    Il ne faut pas oublier devant la partie authentification avec le login , le mot de passe et l’id de la vera…

    • droopyjj

      Merci antilash,
      Peux tu me dire précisément où mettre cette commande.
      Sauf erreur, j’ai compris que nous devons mettre cette commande dans le navigateur
      y-a t-il un moyen d’avoir une ligne complete à copier?
      Désolé, je débute en informatique

      • antislash78

        Bonjour droopyjj,

        Je termine mes tests et je publie sur le fil de discussion de TLD du thermostat virtuel le code de Cedric modifié pour fonctionner avec la vera et le plugin.

        je pense envoyer cela aujourd’hui. Ainsi tu auras l’intégralité du code commenté pour l’adapter à tes besoins.

        • droopyjj

          OK, Merci

        • droopyjj

          Merci

  • antislash78

    Bonjour Antor,

    Juste une petite remarque :

    Lorsque l’on modifie la consigne via l’interface du module, celui ci relance un calcul.

    Si par contre via une requête http ( et surement par du code lua ) on modifie la consigne, cela ne déclenche pas de nouveau calcul.

    Je ne sais pas si il y a moyen d’intercepter cet événement…

    • Pour relancer le calcule, il ne faut pas modifier la valeur de consigne par la variable mais plutôt lancer l’action : SetCurrentSetpoint (urn:upnp-org:serviceId:TemperatureSetpoint1_Heat ou urn:upnp-org:serviceId:TemperatureSetpoint1_Cool). Tu trouveras toutes les actions a la fin du fichier I_SmartVT.xml

  • Jerome

    Salut Antor,
    Chapeau pour tes plugins !
    Si ce module est compatible avec ton module fil pilote, il me suffit de renseigner dans le champ « heaters » le n° de device du module fil pilote ?
    Merci.

    • Bonjour Jérôme, c’est tout a fait ca. Il te faut également au moins une sonde de température.

  • ionys64

    bonjour Antor….peut tu me dire si il est possible de récuperer une temp avec une netatmo poussé vers container…
    merci à vous deux pour le travail fourni
    @++

    • En l’etat je ne pense pas, mais cela ne devrait pas être très compliqué de rendre cela faisable.
      Attention tout de même à la frequence d’actualisation de la donnée qui doit être suffisante pour ne pas mettre le thermostat en sécurité.