hexan79 Posté(e) le 1 février 2016 Signaler Posté(e) le 1 février 2016 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 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++ 1 5
i-magin Posté(e) le 1 février 2016 Signaler Posté(e) le 1 février 2016 Petite erreur sur le nom du service pour sa gestion dans le Github : j'y vois homegw
hexan79 Posté(e) le 1 février 2016 Auteur Signaler Posté(e) le 1 février 2016 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?
i-magin Posté(e) le 1 février 2016 Signaler Posté(e) le 1 février 2016 J'ai une HC2, pas de thermostat Netatmo... et je dois remettre un peu d'ordre dans mon installation Donc pas cette fois-ci 1
cybersquat Posté(e) le 2 février 2016 Signaler Posté(e) le 2 février 2016 Super ton démo. Pas pour moi non plus, j'ai pas ce support la 1
jcosta Posté(e) le 6 février 2016 Signaler Posté(e) le 6 février 2016 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.
hexan79 Posté(e) le 6 février 2016 Auteur Signaler Posté(e) le 6 février 2016 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
jcosta Posté(e) le 6 février 2016 Signaler Posté(e) le 6 février 2016 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.
hexan79 Posté(e) le 6 février 2016 Auteur Signaler Posté(e) le 6 février 2016 what is you Linux distro?
jcosta Posté(e) le 7 février 2016 Signaler Posté(e) le 7 février 2016 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!!! 1
jcosta Posté(e) le 8 février 2016 Signaler Posté(e) le 8 février 2016 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.
hexan79 Posté(e) le 8 février 2016 Auteur Signaler Posté(e) le 8 février 2016 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.
jcosta Posté(e) le 9 février 2016 Signaler Posté(e) le 9 février 2016 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.
hexan79 Posté(e) le 9 février 2016 Auteur Signaler Posté(e) le 9 février 2016 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.
jnevestdl Posté(e) le 28 août 2017 Signaler Posté(e) le 28 août 2017 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.
Messages recommandés