Bonjour à tous,
Voici un tutoriel pour récupérer les informations d’une station météo personnelle (PWS) fonctionnant avec un firmware « EasyWeather » (<!>impératif<!>) et en version au minimum de 1.3.6.
Nota : dans ce tuto, j’ai mis entre crochets [ ] les quelques commandes à taper telles quelles en SSH.
1) Récupération de la clé API de Jeedom
- Dans Jeedom, cliquer sur l’icône avec les engrenages, en haut à droite près de l’heure, puis sur le menu « Configuration »,
- aller dans l’onglet « API »,
- noter la valeur de la « Clé API » (sous-entendue ‹ globale ›) de Jeedom.
2) Création d’un virtuel dans Jeedom
- Menu « Plugins/Programmation/Virtuel » (s’il est absent, l’ajouter via le Market, il est gratuit),
- ajouter un virtuel,
- dans l’onglet « Commandes », cliquer sur le bouton « Ajouter une info virtuelle » autant de fois qu’on veut afficher d’informations,
- nommer correctement chaque ligne et lui renseigner éventuellement des bornes et une unité,
- noter l’ID correspondant à chaque ligne (par exemple la ligne « UV » a l’ID 174).
3) Création du fichier index.php
- Se connecter en SSH sur une machine avec un serveur web fonctionnel (Jeedom par exemple),
- aller dans le dossier html [cd /var/www/html],
- créer un dossier ‹ pws › [mkdir pws],
- aller dans ce dossier [cd pws],
- créer un fichier ‹ index.php › [nano index.php],
- coller dedans le contenu du script (voir fichier en PJ),
<!> ATTENTION <!> à ne pas transformer les guillemets et apostrophes lors du copier-coller (il est préférable de faire un transfert avec un logiciel du type de FileZilla, en vérifiant bien que le format UTF-8 ait été conservé) - renseigner dans ce script les infos suivantes :
- adresse IP et port de la machine Jeedom,
- clé API de Jeedom,
- les ID de chacune des infos qu’on veut envoyer dans Jeedom,
- éventuellement pour débogage, activer temporairement la ou les sorties texte voulues,
- quitter [CTRL+X] en validant l’enregistrement [O],
- de retour en ligne de commande, rendre le fichier exécutable [chmod +x index.php],
- remonter d’un niveau de dossier [cd …],
- modifier les droits sur le dossier ‹ pws › [chown -R www-data:www-data pws].
Nota : en principe pas besoin de rebooter, mais dans le doute … faites-le !
4) Configuration de la station météo
- installer sur Android l’appli « WS View » (https://play.google.com/store/apps/details?id=com.ost.wsview),
(il y a probablement un pendant fonctionnel sur iOS, à vous de chercher si besoin) - suivez les instructions de votre constructeur pour l’installation et la configuration,
- vérifiez bien qu’elle répond au ping dans votre réseau local,
- dans les réglages permettant l’export sur des sites web (Ecowitt, WunderGround, etc.) configurer le serveur personnel comme suit :
- Customized = Enable
- Protocol = Ecowitt
- Server/IP = l’@ IP de votre Jeedom
- Path = /pws/
- port = même consigne
- Upload interval = 60 (secondes) (ou mettez 300 pour 5 minutes par exemple).
- Validez et vérifiez que les informations arrivent bien dans votre virtuel Jeedom.
Nota : vous pouvez très bien faire l’installation des scripts sur une machine n’ayant aucun rapport avec Jeedom, mais il vous faudra alors installer manuellement un serveur web dessus si elle n’en dispose pas déjà et peut-être choisir la clé « API Virtuel » de Jeedom au lieu de celle « globale ».
- DEBOGAGE
En cas de problème insoluble, commencer par tester la bonne réception des données par le serveur web.
Pour cela, remplacer le contenu du fichier /pws/index.php par ce script ‹ index (raw output file).php › :
<?php
/*
***************************
/var/www/html/pws/index.php
***************************
Script PHP pour juste écrire dans un fichier local les données reçues
*/
$str = print_r($_POST, TRUE);
$fh = fopen('test_reception.txt', 'w');
fwrite($fh, $str);
fclose($fh);
print("OK\n");
?>
Si le fichier de sortie « test_reception.txt » contient bien les données de la station météo, toute la partie configuration de la station et du serveur web est OK.
Le problème provient donc plutôt du virtuel Jeedom, ou de la communication entre le serveur web et Jeedom.
Vous trouverez en PJ les deux scripts PHP. Pour pouvoir les utiliser, supprimez « .txt » à la fin, de manière à ce qu’ils retrouvent une extension en « .php ».
Je suis parti d’un script existant pour envoi des données dans le logiciel WeeX et je l’ai assez lourdement modifié, mais j’ai perdu le nom des auteurs au passage … Si je les retrouve, je les ajouterai.
EDIT au 27/03/2020 :
Passage en version 1.1 du fichier « index.php ». Essentiellement pour ajouter le calcul du point de givre et échapper les erreurs sur les variables de niveau de batteries inexistantes dans certaines PWS.
Procédure de mise à jour :
- téléchargez le fichier index_v1.1(Jeedom).php.txt
- renommez-le en « index.php »
- renseignez dedans vos paramètres personnels (IP et API de Jeedom, ainsi que les ID de votre ou vos virtuels nottamment)
- copiez-le dans votre dossier web dédié (par exemple /var/www/html/pws) en écrasant le précédent
- puis attendez la prochaine communication provenant de votre station
EDIT au 06/04/2020 :
Passage en version 1.2 du fichier « index.php » : modification du contournement d’absence éventuelle des variables de batterie.
EDIT au 04/02/2022 :
Passage en version 1.3 du fichier « index.php » : modifications de l’URL et de l’API à prendre en compte pour Jeedom v4.2x.
EDIT au 05/10/2023 :
Passage en version 1.4 du fichier « index.php » : ajout de l’info « runtime » (=uptime de la station) apparue dans les firmwares Pro de 07/2023. C’est une valeur en secondes, donc pour l’afficher en format humain, il faut la soustraire de la date actuelle et faire un strtotime. Exemple :
La formule de calcul en clair est :
date("d/m/Y H:i:s",strtotime('-#[Extérieur][PWS Extension][Runtime]# second'))
index (raw output file).php.txt (293 Octets)
index_v1.0 (Jeedom).php.txt (15,4 Ko)
index_v1.1 (Jeedom).php.txt (18,1 Ko)
index_v1.2 (Jeedom).php.txt (18,4 Ko)
index_v1.3 (Jeedom).php.txt (18,6 Ko)
index_v1.4 (Jeedom).php.txt (19,0 Ko)