Aller au contenu
hexan79

Hcl Virtual Device Pour Contrôler Un Thermostat Netatmo

Recommended Posts

Je vous propose ce tuto pour créer un Virtual Device HCL afin de contrôler un thermostat Netatmo.

C'est très utile dans l'optique d'un tableau de bord unifié, regroupant tous les objets connectés au niveau de la box domotique.

C'est pratique aussi lorsqu'il s'agit de créer des scènes intégrant des informations provenant du thermostat (température mesurée, température de consigne de la chaudière, mode de chauffage...).

Il existe bien un plugin Netatmo sur HCL mais je n'ai jamais pu le faire marcher, du moins pour le thermostat (ça marche peut-être pour la station meteo Netatmo).

Par ailleurs, du fait des limitations de la HCL en termes de programmation (pas de LUA comme la HC2), il a fallu développer un web service HTTP (et non HTTPS) jouant le rôle d'intermédiaire entre le virtual device et le thermostat.

En marge de ce tuto, je propose donc aussi un web service pour piloter le thermostat Netatmo.

Principe

L'objectif est donc de "fabriquer" un virtual device HCL pour le thermostat Netatmo permettant de:

  • Récupérer la température mesurée
  • Définir une température de consigne
  • Définir le temps de validité de la température de consigne
  • Switcher entre les modes : manual, program, away
Voilààquoi cela ressemble visuellement

post-3110-0-65834600-1454363309_thumb.png

post-3110-0-46351500-1454363314_thumb.png

Prérequis

- Savoir créer un virtual device HCL. Ce tuto est très bien pour ça.

- Quelques connaissances Linux pourraient être utiles pour l'installation du software, la copie et la modification de fichiers...

- Quelques connaissances http et web services pourraient aider àcomprendre le principe de fonctionnement (optionnel)

Matériel

- Une HCL

- Un thermostat Netatmo

- un PC ou un Raspberry Pi (ou équivalent) qui jouera le rôle de serveur hébergeant le web service

Pour ceux qui voudraient installer le software sur un Linux autre que celui du Raspberry (Raspbian), il faudrait s'informer sur la manière de rajouter un service (deamon) qui pourrait être différente de celle présentée ici.

Logiciel

Le code (Python) du web service que je fais tourner sur Raspberry Pi et que j'ai appelé "restatmo" est disponible dans Github sur ce lien.

Un descriptif d'installation et de configuration y est décrit ici.

Il s'agit d'une première version avec surement quelques bugs.

Voici quelques caractéristiques du logiciel:

- Pour ceux qui connaissent un peu les web services, voici un aperçu de l'interface http de "restatmo":

GET /tempSP : récuperer la température de consigne courante

POST /tempSP/valeur_entiere : définir une nouvelle température de consigne (durée par défaut : 15mn). Cette requête permet aussi de définir les modes away et program

POST /tempDur/duration : définir la durée de validité de la température de consigne courante

GET /tempMeas : récupérer la température mesurée par le thermostat

- Pour la mise àjour du "slider" de la température mesurée, j'ai prévu un second service (tempupdate.py) se trouvant dans le même répertoire "restatmo". Lorsqu'il est lancé sur la machine passerelle (raspi ou autre), ce service met àjour la température mesurée du virtual device àintervalles réguliers.

Des paramètres d'identification de la HCL et l'intervalle de mise àjour sont des données requises par ce service et sont paramétrables dans ce fichier tempupdate.py.

Cette manière de mettre àjour la température est la seule que j'ai trouvée. En effet, les requêtes HTTP d'un virtual device sur HCL ne permettent pas d'aller chercher des valeurs.

Le virtual device

il faut d'abord définir le "host" et le "port" du Virtual Device qui sont respectivement l'adresse IP de machine sur laquelle tourne le service "restatmo" et le port de ce même service (par défaut 5000)

Ce virtual device est composé de 3 sliders et de 3 boutons:

1) Slider 1 : la température mesurée par netatmo

Il n'y rien àconfigurer au niveau de la chaine de caractères àenvoyer par ce slider. En effet, il est mis àjour automatiquement par le service "tempupdate" décrit précédemment.

2) Slider 2 : la température de consigne

Chaine àenvoyer:

POST /tempSP/_sliderValue_ HTTP/1.10x0D0x0AHost:192.168.0.28:5000 0x0D0x0AAuthorization: Basic xxxxxxxxxxxxxxxxxxx 0x0D0x0A0x0D0x0A

NB: _sliderValue_ est la valeur indiquée par le slider en question (très pratique comme variable)

xxxxxxxxxx: "user:password" en base 64 (voir tuto de création de Virtual Device)

3) Slider 3 : la durée de validité de la température de consigne

Chaine àenvoyer:

POST /tempDur/_sliderValue_ HTTP/1.10x0D0x0AHost:192.168.0.28:5000 0x0D0x0AAuthorization: Basic xxxxxxxxxxxxxxxxxxx 0x0D0x0A0x0D0x0A

4) Bouton1 : mode program

Chaine àenvoyer:

POST /tempSP/0 HTTP/1.10x0D0x0AHost:192.168.0.28:5000 0x0D0x0AAuthorization: Basic xxxxxxxxxxxxxxxxxxx 0x0D0x0A0x0D0x0A

5) Bouton2 : mode manual (ce n'est rien d'autre qu'une température de consigne à20°)

Chaine àenvoyer:

POST /tempSP/20 HTTP/1.10x0D0x0AHost:192.168.0.28:5000 0x0D0x0AAuthorization: Basic xxxxxxxxxxxxxxxxxxx 0x0D0x0A0x0D0x0A

6) Bouton3 : mode away

POST /tempSP/101 HTTP/1.10x0D0x0AHost:192.168.0.28:5000 0x0D0x0AAuthorization: Basic xxxxxxxxxxxxxxxxxxx 0x0D0x0A0x0D0x0A

enfin, pensez àtélécharger l'icone (ci-joint) àassocier au virtual device.

La suite

je n'ai peut-être pas suffisamment détaillé ce tuto, notamment concernant la partie paramétrage et installation du service web.

N'hésitez pas àme solliciter si vous êtes intéressés ou si vous avez des questions.

Vous pouvez aussi jeter un coup d'oeil sur mon autre tuto dont le but est de piloter l'alarme HCL/HC2 avec une passerelle NFC.

A++

post-3110-0-15695600-1454363303_thumb.png

post-3110-0-65834600-1454363309_thumb.png

post-3110-0-46351500-1454363314_thumb.png

  • Thanks 1
  • Upvote 5

Partager ce message


Lien à poster
Partager sur d’autres sites

Petite erreur sur le nom du service pour sa gestion dans le Github : j'y vois homegw  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Petite erreur sur le nom du service pour sa gestion dans le Github : j'y vois homegw  ;)

Bien vu @i-magin  :)

Alors, ça te tenterais de te lancer sur ce projet aussi?  :)

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai une HC2, pas de thermostat Netatmo... et je dois remettre un peu d'ordre dans mon installation ;)

 

Donc pas cette fois-ci  :D

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Hi hexan, great work!! Sorry to be writing in english...

 

I've limited knowledge about linux and I'm having difficulties to put this to work.

I'm trying to setup first only the update of fibaro VD slider. I've done the 4 linux commands as you explain in GitHub, using the name temp update instead of restatmo. Everything goes OK but when I'm trying to start the service I got the following erros

homeofir@homeofir-1008HA:~/netatmo$ sudo service tempupdate start

: not found/tempupdate: 10: /etc/init.d/tempupdate: 
/etc/init.d/tempupdate: 12: .: Can't open /lib/lsb/init-functions
homeofir@homeofir-1008HA:~/netatmo$ 
 
I've checked and the file tempupdate in in /etc/init.d/ lib and I've also the /lib/lsb/init-functions at root level.
 
Could you please help me. Regards.

Partager ce message


Lien à poster
Partager sur d’autres sites

Have you configured restatmo service? does it work for you.

If it works, "tempupdate" should also work, it's the same principle.

 

So, if you do the following instructions, temperature update should work:

 

chmod +x tempupdate.py

sudo cp tempupdate /etc/init.d/

sudo chmod 755 /etc/init.d/tempupdate

sudo update-rc.d tempupdate defaults

sudo service tempupdate start

Partager ce message


Lien à poster
Partager sur d’autres sites

thank you for your quick answer hexan.

 

No, I didn't configure yet the restate service. I started with the tempupdate first.

 

And yes, I've run all those commands... Thanks.

Partager ce message


Lien à poster
Partager sur d’autres sites

Hexan, I've just managed to put the scripts to work... it was "only" a problem with DOS line-endings (CRLF). Running the dos2unix command resolved the issue.

By the way, I'm using an old net laptop with chromixium OS.

Thanks, your scripts are great!!!

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Hi Hexan, one more thing... my tempupdate service is crashing after several hours. Since saturday it already crashes 3 times.

Is there any place, log, etc where I may find some information about the reasons of the crash?

Best regards.

Partager ce message


Lien à poster
Partager sur d’autres sites

Hi,

Yes there is a log file : /var/log/thermos.log

Only timeout errors are reported in this file (for example, when Home Center is not responding). This error should not lead script to crash. 

I think that your problem is a network interface failure in your PC. This kind of error is not handled by the script.

Could you stop tempupdate service, then from source folder try this:

python tempupdate.py

let the script run, then report the error message if a crash occurs.

Partager ce message


Lien à poster
Partager sur d’autres sites

Thanks Hexan. I did what you had sugested but since then I didn't experienced any crash.

The script is running for more than 14h without any crash - a bit more than any time before... it seems to be related with the other way of running the script.

Thanks again.

Partager ce message


Lien à poster
Partager sur d’autres sites

Hi jcosta,

 

I don't think it is related to the automatic way to start the script. 

If it works manually, it should work with startup service.

Partager ce message


Lien à poster
Partager sur d’autres sites

Hi,

 

Now that we are in 2017... I bought a Netatmo Thermostat, created the dev account, but it says "connected" but I can't get the devices...

 

Is really necessary to use a virtual device for netatmo thermostat?

 

If I buy a Wether Station, will it be easy to use the plugin?

 

Can I use the Netatmo thermostat to be controlled on the Fibaro Heating Panel?

 

Thanks in advance for your answers.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×