Aller au contenu
Steven

Gestion Chauffage Avec Sondes Oregon, Netatmo, Json, Etc...

Recommended Posts

La gestion du chauffage sur la HC2 nécessite au minimum :

  • Une sonde de température
  • Des plages horaires et température souhaitées
  • Un ou plusieurs modules déclencheurs pour activer/désactiver l'appareil de chauffe.

Malheureusement, pas tout le monde est équipé de sonde de température et dans ce cas là , il est impossible de chauffer son habitat à  travers sa HC2.
 
Pour remédier à  ce soucis, il est possible d'utiliser un module virtuel qui va piloter vos déclencheurs selon une autre source de température* tout en tenant compte de vos souhaits en terme de températures/pages horaires.
 
Vous pouvez aussi utiliser ce module pour utiliser comme référence une moyenne de vos sondes ou tout autre calcul. Exemple, je pilote ma chaudière en fonction de la température intérieur ET extérieur.
 
Une seul condition à  l'usage de ce module ... vous allez devoir programmer vous même la fonction qui va renvoyer la température que vous souhaiter exploiter.
 
Mais la bonne nouvelle est que vous êtes sur un site communautaire et qu'il y a plein de personne pour vous aider si besoin.
 
 
* sonde Orégon connecté à  une box RFXCom, une sonde renvoyant du json comme la Netatmo.


Voici la démarche à  suivre :
 
1) Règler votre panneau de chauffage selon vosdésires (notez son ID) :
958586pnlChauffage.png
 
2) Importer le module virtuel "Chauffage_-_Salon.vfib
848494Screenshot20140318130536.png
 
3) Modifier les premières lignes de codes qui sont dans le bouton rafraîchir

   Heating.hysteresis = 0.7 --- +/- de chauffage
   Heating.holidays = 8 -- température souhaitée du mode vacances
   Heating.stefa = 1 -- id du panneau de chauffage
   Heating.admin = "admin"
   Heating.password = "admin"
  
   -- Retourne la température courante
   Heating.getActualTemp = function()
      -- Ici vous pouvez mettre votre code qui doit renvoyer un nombre
      -- correspondant à  la température en cours
      -- Dans mon cas, je reprend la valeur contenu dans le slider "tempSalon" du module 43
      return tonumber(fibaro:getValue(43, "ui.tempSalon.value"))/10
   end
 
   Heating.switch = function(choice)
      -- Choice est soit "turnOn", soit "turnOff"
      -- cela permet d'activer/désactiver plusieurs modules en même temps ou de faire 
      -- divers traitement que le système allume/éteint les modules
      fibaro:call(33, choice)
      --fibaro:call(34, choice)
      --fibaro:call(35, choice)
   end

...

L’hystérésis est utilisée pour temporiser l'allumage/extinction du système. Exemple, j'ai défini 21° dans le panneau de chauffage pour le mardi matin. Le système va prendre 21°, soustraire l’hystérésis (0.7°) et va donc ce mettre en chauffe à  20.3°. De même dans l'autre sens, ou il va attendre qu'il fasse 21° + 0.7° pour s'éteindre soit 21.7°.
Cela permet d'éviter que le système s'active à  20.9 et se désactive à  21. Ce qui peut être très dérangeant pour un poêle à  pellet comme le mien.
 
4) Variable globale :
Il faut créer un variable globale "Chauffage" qui peux prendre les valeurs : ON, OFF et VACANCES
 
5) Scénario qui temporise tous cela :
Créer un scénario qui "appuie" sur le bouton "Rafraichir" toutes les X minutes (5 minutes dans mon cas).
 
 
Usage :

  • Etat : Indique [Température actuel] / [Température souhaitée] [[hystérésis]] (correction appliquée)
  • Rafraichir : rafraichi manuellement les calculs
  • Automatic : met le système en mode automatique (allumé)
  • Eteindre : stoppe le système jusqu'au prochain appuie sur "Automatic"
  • Vacances : Bascule en mode vacances (Utilise Heating.holidays comme température souhaitée)
  • -1, -0.5, +0.5, +1 : Permet d'ajouter une "correction" de température souhaitée. Cette correction est annulée dès le prochain changement de mode. Exemple mardi matin, je ne souhaite plus 21° mais 22°. J'appuie donc sur +1. Quand le panneau de chauffage m'indiquera que nous somme en "mardi après-midi" la correction de +1 sera automatiquement annulée. Cela correspond au mode Jour ou Nuit temp.
  • Correction : indique la différence de correction souhaitée 
  • Mode : indique le mode en cours
  • En Chauffe : indique si le système est en chauffe (actif) ou non

En gras sont les éléments nécessaires au module pour fonctionner, si tu les enlèves, il va planter.
 
 
En prime, dans le code, il y a une méthode Heating.keepOn = function(). Je l'utilise pour ralentir le chauffage de mon poêle lorsque la température souhaitée est presque atteinte. Je l'ai mise en commentaire mais tu peux l'utiliser.
Dans me cas, cela donne 
de 20.3° à  20.7° .. On chauffe à  fond
de 20.8° à  21.7° .. On chauffe en douceur en ralentissant la chauffe 
à  21.8° on coupe tout
 
Conclusion.
 
Voici un module virtuel qui accepte comme température de référence n'importe quoi :

  • la température d'un module z-wave
  • un code json (Netamo)
  • ...

et qui va piloter vos modules selon les températures indiquées dans votre panneau de chauffage.
 
Ce module est testé chez moi depuis plus d'un mois avec succès sur un poêle à  pellet qui, par définition, est bien plus pénible que des radiateurs  :P
 
P.S. Joint les icônes que j'utilise pour l'affichage.

Chauffage_-_Salon.vfib

post-339-0-47874900-1396604957_thumb.png

post-339-0-81391700-1396604959_thumb.png

post-339-0-75317600-1396604961_thumb.png

post-339-0-07431000-1396604964_thumb.png

  • Upvote 9

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour recevoir la température d'une sonde de puis une Zibase ou autre box permettant d'envoyer la température via une URL :
 
1) Sur la HC2, créer un module virtuel avec des sliders (1 slider par information)
118814mvzibase.png
 
2) Depuis la zibase créer un scénario qui va répondre à  la sonde:

Stimuli : la sonde Orégon

Etape 1 : Affecter une chaîne de caractère à  une variable : V0 = http://<admin>:<admin>@<IP HC2>/api/callAction?deviceID=<ID module virtuel>&name=setSlider&arg1=<numéro du slider>&arg2=I0   -- petit rappel I0 = température I1 = humidité

Etape 2 : Commander par Http : URL Contenue dans la variable globale V0

 

Avec juste ceci, vous avez un module virtuel prêt à  recevoir un nombre à  travers de slider et vous avez un scénario qui va mettre à  jour la valeur du slider.
 
Pour obtenir en LUA la valeur du slider :

local temp = tonumber(fibaro:getValue(<ID module virtuel>, "ui.<id du slider>.value"))/10
--local temp = tonumber(fibaro:getValue(fibaro:getSelfId(), "ui.tempSalon.value"))/10

Voilà , vous avez maintenant la température de ta sonde Orégon exploitable en LUA sur ta HC2.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Steven, un grand Merci !!

je pense qu'àterme je ne voudrais utiliser que la HC2 afin d'unifier mais en attendant je pense que c'est une bonne solution.

je vais experimenter le truc

Partager ce message


Lien à poster
Partager sur d’autres sites

Le module est bien crée

le paramétrage dans le panneau de chauffage je ne vois pas trop comment dire :

 

tu utilises le module virtuel nommé passerelle zibase et en fonction de ça tu allumes les 3 radiateurs du salon

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Steven ,

 

ça c'est du Tuto !!!

 

je tiens vraiment à  te remercier , c'est très sympa, je vois que nous sommes à  peu prés dans la même config (Zibase / HC2) et ton expérience m'aide enormément.

Bravo également pour la Gestion avec la famille, je gère bien moins bien que toi avec un enfant de moins ... 

 

je vais tester ça !

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Je tente la mise en place de votre module mais je bloque sur :

return tonumber(fibaro:getValue(43, "ui.tempSalon.value"))/10

43 est bien la sonde de temperature ? ainsi "ui.tempSalon.value" serait la valeur retournée par la sonde

J'ai essayé avec "value" qui me retourne la température mais impossible d'avoir la bonne dizaine : soit 2.14 soit 214

mais si votre module fonctionne mon erreur est ailleurs et il faut bien garder "ui.tempSalon.value"

Merci de me sortir du brouillard

Partager ce message


Lien à poster
Partager sur d’autres sites

...

Merci de me sortir du brouillard

Attention cette ligne est làpour exemple et doit être remplacée.

Si ton module àbien l'ID 43 et que le getValue te donnais 2.14 c'est qu'il faut juste que tu enlèves le /10 qui est àla fin.

Mon exemple était principalement pour Zorro car il reçoit la température directement depuis sa ZiBASE et cette coquine renvoi 210°. Et il faut donc diviser par 10.

Si tu as besoin d'un coup de main... Hurle et donne moi plus d'info sur ta configuration.

@zorro

En effet même configuration J'ai juste un peu plus d'avance sur toi mais cela ne va pas perdurer.

Sent from my GT-I9192 using Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour le partage Steven, il a l'air excellent ce petit module virtuel :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Pour ma part j'avance : supprimer le module et reprendre à  zéro. Ainsi si on n'a pas de passerelle zibase pour récup des temp

je modifie 

  1. return tonumber(fibaro:getValue(43, "ui.tempSalon.value"))/10

par

  1. return tonumber(fibaro:getValue(43, "value"))

 

qui récupère ma temp

Mon niveau "truffe en prog" me fait poser qques question concernant les figaro:call(...)

ex1 : fibaro:call(selfId, "setProperty", "currentIcon", 1059) à  quoi correspond le 1059

ex2 : fibaro:call(fibaro:getSelfId(), "pressButton", "2") dans les boutons à  quoi correspond le "2"

 

Bon rigolez, je sais que je ferais mieux de programmer en mode graphique, 

 

Tout cela pour proposer une amélioration (?) : Si j'ai bien compris ton module ne modifie pas le panneau de chauffage mais "force" ou "coupe" d'ailleurs j'ai pas très bien compris le mode vacances : dans le panneau on sélectionne les zones, on règle une temp, et on allume le mode, dans le module comment règle t'on la temp ?

Revenons à  l'amélioration : une ligne de boutons supplémentaires correspondants aux zones de chauffage et ainsi sélection de la pièce (zone) à  forcer

je pense que l'appui sur un bouton de zone sélectionne dans un tableau de modules le ou les interrupteurs de chauffage.

Une interface et madame (un peu frileuse) pourra booster momentanément et surtout simplement

 

Bon tout cela est bien sur pour ceux qui chauffe à  l'élec et non avec un poêle 

et encore merci de nous montrer ce qu'il est possible de réaliser

Partager ce message


Lien à poster
Partager sur d’autres sites

Comme tu le sais, je t'ai déjà  répondu mais je résume ici pour les autres personnes :

 

fibaro:call(fibaro:getSelfId(), "pressButton", "2") permet d'appuyer sur le bouton avec l'ID 2 qui est le bouton Rafraîchir. Pour faire simple, je change une valeur puis je rafraichi ... tout simplement.

 

Pour les icones, c'est ici (http://forum.fibaro....opic.php?t=3635). En gros, chaque fois que tu insert une nouvelle icone dans la HC, elle te le stock sous le nom User1057 ... 1057 est son identifiant.

 

En aucun cas ce module ne modifie le panneau de chauffage, c'est pour moi très important, en aucun cas mon code ne modifie vos choix. Le code ne "force" ni ne "coupe" rien. Tout ce qu'il fait est de "lire" le panneau de chauffage et de gérer les modules que vous aurez coder en fonction des informations recueillies.

 

Dans mon module, on ne règle pas la température. Comme décrit, il lit la température que vous avez indiqué dans le panneau de chauffage et il vous permet d'ajouter/supprimer temporairement quelques degrés.

 

L'appuie sur le bouton éteindre désactive le module virtuel, il ne change rien d'autre. Le mode vacances, lui, permet simplement de passer outre le panneau de chauffage et de toujours retourné la température (de 8°) comme température souhaitée.

 

Pour la gestion des pièces/zones j'y avait déjà  pensé. Cela est réalisable par contre, le code deviendrait tellement plus compliquer qu'il serait très difficile au utilisateur de le modifier. Je préfère donc que les utilisateurs crée un module virtuel par pièces plutôt qu'un seul qui lui gère les pièces. De plus, la gestion des pièces sur la HC est relativement bien pensée.

 

J'espère avoir été clair ... ce qui n'est pas toujours mon fort  :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Parfait pour moi alors pour les autres ....

Envoyé de mon iPad àl'aide de Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

et me revoila :

peut on mettre dans le mainloop du mod.Virtuel

fibaro:call(fibaro:getSelfId(), "pressButton", "2")
delay (5*60*1000)

cela evite de créer une scene ?

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est possible mais je n'aime pas le main loop (pas 100% stable).

Sinon, ce n'est pas delay mais fibaro:sleep

Cordialement

Sent from my GT-I9192 using Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

La gestion du chauffage sur la HC2 nécessite au minimum :

  • Une sonde de température
  • Des plages horaires et température souhaitées
  • Un ou plusieurs modules déclencheurs pour activer/désactiver l'appareil de chauffe.

Malheureusement, pas tout le monde est équipé de sonde de température et dans ce cas là , il est impossible de chauffer son habitat à  travers sa HC2.

 

Pour remédier à  ce soucis, il est possible d'utiliser un module virtuel qui va piloter vos déclencheurs selon une autre source de température* tout en tenant compte de vos souhaits en terme de températures/pages horaires.

 

Vous pouvez aussi utiliser ce module pour utiliser comme référence une moyenne de vos sondes ou tout autre calcul. Exemple, je pilote ma chaudière en fonction de la température intérieur ET extérieur.

 

Une seul condition à  l'usage de ce module ... vous allez devoir programmer vous même la fonction qui va renvoyer la température que vous souhaiter exploiter.

 

Mais la bonne nouvelle est que vous êtes sur un site communautaire et qu'il y a plein de personne pour vous aider si besoin.

 

 

* sonde Orégon connecté à  une box RFXCom, une sonde renvoyant du json comme la Netatmo.

Voici la démarche à  suivre :

 

1) Règler votre panneau de chauffage selon vosdésires (notez son ID) :

958586pnlChauffage.png

 

2) Importer le module virtuel "Chauffage_-_Salon.vfib

848494Screenshot20140318130536.png

 

3) Modifier les premières lignes de codes qui sont dans le bouton rafraîchir

   Heating.hysteresis = 0.7 --- +/- de chauffage
   Heating.holidays = 8 -- température souhaitée du mode vacances
   Heating.stefa = 1 -- id du panneau de chauffage
   Heating.admin = "admin"
   Heating.password = "admin"
  
   -- Retourne la température courante
   Heating.getActualTemp = function()
      -- Ici vous pouvez mettre votre code qui doit renvoyer un nombre
      -- correspondant à  la température en cours
      -- Dans mon cas, je reprend la valeur contenu dans le slider "tempSalon" du module 43
      return tonumber(fibaro:getValue(43, "ui.tempSalon.value"))/10
   end
 
   Heating.switch = function(choice)
      -- Choice est soit "turnOn", soit "turnOff"
      -- cela permet d'activer/désactiver plusieurs modules en même temps ou de faire 
      -- divers traitement que le système allume/éteint les modules
      fibaro:call(33, choice)
      --fibaro:call(34, choice)
      --fibaro:call(35, choice)
   end

...

L’hystérésis est utilisée pour temporiser l'allumage/extinction du système. Exemple, j'ai défini 21° dans le panneau de chauffage pour le mardi matin. Le système va prendre 21°, soustraire l’hystérésis (0.7°) et va donc ce mettre en chauffe à  20.3°. De même dans l'autre sens, ou il va attendre qu'il fasse 21° + 0.7° pour s'éteindre soit 21.7°.

Cela permet d'éviter que le système s'active à  20.9 et se désactive à  21. Ce qui peut être très dérangeant pour un poêle à  pellet comme le mien.

 

4) Variable globale :

Il faut créer un variable globale "Chauffage" qui peux prendre les valeurs : ON, OFF et VACANCES

 

5) Scénario qui temporise tous cela :

Créer un scénario qui "appuie" sur le bouton "Rafraichir" toutes les X minutes (5 minutes dans mon cas).

 

 

Usage :

  • Etat : Indique [Température actuel] / [Température souhaitée] [[hystérésis]] (correction appliquée)
  • Rafraichir : rafraichi manuellement les calculs
  • Automatic : met le système en mode automatique (allumé)
  • Eteindre : stoppe le système jusqu'au prochain appuie sur "Automatic"
  • Vacances : Bascule en mode vacances (Utilise Heating.holidays comme température souhaitée)
  • -1, -0.5, +0.5, +1 : Permet d'ajouter une "correction" de température souhaitée. Cette correction est annulée dès le prochain changement de mode. Exemple mardi matin, je ne souhaite plus 21° mais 22°. J'appuie donc sur +1. Quand le panneau de chauffage m'indiquera que nous somme en "mardi après-midi" la correction de +1 sera automatiquement annulée. Cela correspond au mode Jour ou Nuit temp.
  • Correction : indique la différence de correction souhaitée 
  • Mode : indique le mode en cours
  • En Chauffe : indique si le système est en chauffe (actif) ou non

En gras sont les éléments nécessaires au module pour fonctionner, si tu les enlèves, il va planter.

 

 

En prime, dans le code, il y a une méthode Heating.keepOn = function(). Je l'utilise pour ralentir le chauffage de mon poêle lorsque la température souhaitée est presque atteinte. Je l'ai mise en commentaire mais tu peux l'utiliser.

Dans me cas, cela donne 

de 20.3° à  20.7° .. On chauffe à  fond

de 20.8° à  21.7° .. On chauffe en douceur en ralentissant la chauffe 

à  21.8° on coupe tout

 

Conclusion.

 

Voici un module virtuel qui accepte comme température de référence n'importe quoi :

  • la température d'un module z-wave
  • un code json (Netamo)
  • ...

et qui va piloter vos modules selon les températures indiquées dans votre panneau de chauffage.

 

Ce module est testé chez moi depuis plus d'un mois avec succès sur un poêle à  pellet qui, par définition, est bien plus pénible que des radiateurs  :P

 

P.S. Joint les icônes que j'utilise pour l'affichage.

Bonjour Steven,

 

Super module virtuel, exactement celui qu'il me fallait. Je l'utilise pour piloter mes radiateurs (tous électriques) en récupérant la valeur de mes sondes oregon (en passant par FHEM)

Donc sans ton module pas de possibilité d'utiliser mes sondes, vraiment merci.

J'ai tout de même un petit soucis, au 3eme module installé (j'en aurais 10 en tout) l'affichage des icones est devenu aléatoire, de temps en temps elles apparaissent bien dans certaines pièces et dans d'autres c'est l'icone par défaut du module virtuel qui apparait.

Aurais tu une explication à  ça ?

 

cordialement,

Sylvain

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Sylvain,

Je suis àenviron 4000km de ma box donc difficile de tester. Néanmoins le comportement que tu m'explique est étrange mais je ne pourrais rien tester avant la fin de la semaine prochaine.

@+

Partager ce message


Lien à poster
Partager sur d’autres sites

Me revoilà ,

 

J'ai relu mon code encore et encore et je ne trouve pas de problème à  la gestion des icônes (ce qui ne veux pas forcément dire qu'il n'y en a pas).

 

De mon côté, je n'utilise qu'un seul module pour la gestion de ma maison (un seul poêle). Néanmoins, je ne vois pas pourquoi cela poserais de soucis d'en avoir plusieurs qui tournent en parallèle. J'avais fait attention à  cela lors de mon développement.

 

Si quelqu'un d'autre aurait du temps pour faire une relecture de mon code, cela serait sympa.

 

Merci d'avance.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Steven,

 

Merci de t'intéresser à  mon problème, j'ai également fait des recherches de mon côté et je pense avoir trouvé sans bien comprendre la relation...

J'avais rajouté dans le main loop les lignes suivantes 

   fibaro:call(fibaro:getSelfId(), "pressButton", "2")
    fibaro:sleep (5*60*1000)

Comme tu précisais que tu n'aimais pas trop le main loop parce que pas stable, je me suis dit c'est peut être ça, mais non, fausse piste...

Je t'ai dit que j'utilises ton module avec celui de lazer qui est un module pour récupérer les températures de mes sondes Oregon, donc autant de modules temperature que de modules thermostat, et dans ce module j'utilisais toujours la même variable pour relire dans le tien (variable tempSalon)

J'ai donc créé une variable pour chaque pièce et depuis toutes les icones sont là , par contre je ne vois pas bien la relation...

 

Je dois te dire que j'utilise aussi ton module pour piloter un radiateur avec un fil pilote et ça fonctionne super bien, j'ai juste changé le On en Off et le Off en On

et mon radiateur est commandé par ton module.

 

Merci et à  bientot

Partager ce message


Lien à poster
Partager sur d’autres sites

Si ce module t'es utile, c'est un vrai plaisir pour moi.

 

Pour le bug ... en effet, je ne vois pas non plus la relation entre la variable tempSalon et les icônes, mais je suis bien content que tu ailles pu régler cela.

 

Cordialement

Partager ce message


Lien à poster
Partager sur d’autres sites

Steven, est-ce qu'on ne pourrait pas s'attacher àdévelopper (enfin toi surtout :P) un vrai module de chauffage incluant un régulateur PID pour la HC2. Il me semble que c'est ce qui est mis en place sur l'eedomus et que c'est ce qu'il manque cruellement sur la HC2. Un simple tout ou rien sur une limite de chauffage me parait bien moins précise que la régulation numérique des radiateurs chaleur douce d'aujourd'hui.

Qu'en penses-tu ?

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Au passage ça ne sert à  rien de réinventer la roue quand le script ultime existe déjà ... et il parait même que ça fonctionne très bien : http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/98_PID20.pm

Je ne pense pas être assez calé pour adapter ça pour la HC2 mais si on avait un plugin "Regulation_PID", le pied quoi !

Partager ce message


Lien à poster
Partager sur d’autres sites

J'arrive déjàpas trouver le temps de faire ce que j'ai promis :(

Partager ce message


Lien à poster
Partager sur d’autres sites

:P @Steven président. @Steven président.

 

Il fait déjà  des promesses qu'il ne tient pas.

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

@Steven, j'ai du mal à  adapter ton module, j'ai installé des FGS-221 avec diodes pour 4 ordres et créé un vd par pièces.

 

ton module envoie un "turnOn | turnOff" comme commande, je n'arrive pas à  modifier cela par un 

fibaro:call(340, "pressButton", "1") pour turnOn et fibaro:call(340, "pressButton", "4") pour turnOff

tu as le temps pour un peu d'aide?

Partager ce message


Lien à poster
Partager sur d’autres sites

×