Emporia Energy rencontre Jeedom... le tuto

Bonjour

Je suis sur la box Luna et je rencontre un problème dans la procédure je pense que cela vient des dépendances avec : python3 -m pip install « pyemvue » j’obtiens ce message
a votre avis comment je peux faire?

WARNING: The directory '/var/www/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag.
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pyemvue in /usr/local/lib/python3.9/dist-packages (0.16.1)
Requirement already satisfied: pycognito in /usr/local/lib/python3.9/dist-packages (from pyemvue) (2022.12.0)
Requirement already satisfied: typing-extensions in /usr/local/lib/python3.9/dist-packages (from pyemvue) (4.4.0)
Requirement already satisfied: python-dateutil in /usr/local/lib/python3.9/dist-packages (from pyemvue) (2.8.2)
Requirement already satisfied: requests in /usr/local/lib/python3.9/dist-packages (from pyemvue) (2.28.2)
Requirement already satisfied: envs>=1.3 in /usr/local/lib/python3.9/dist-packages (from pycognito->pyemvue) (1.4)
Requirement already satisfied: python-jose[cryptography]>=3.2.0 in /usr/local/lib/python3.9/dist-packages (from pycognito->pyemvue) (3.3.0)
Requirement already satisfied: boto3>=1.10.49 in /usr/local/lib/python3.9/dist-packages (from pycognito->pyemvue) (1.26.49)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests->pyemvue) (1.26.14)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests->pyemvue) (3.4)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.9/dist-packages (from requests->pyemvue) (2.0.12)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests->pyemvue) (2022.12.7)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.9/dist-packages (from python-dateutil->pyemvue) (1.16.0)
Requirement already satisfied: s3transfer<0.7.0,>=0.6.0 in /usr/local/lib/python3.9/dist-packages (from boto3>=1.10.49->pycognito->pyemvue) (0.6.0)
Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /usr/local/lib/python3.9/dist-packages (from boto3>=1.10.49->pycognito->pyemvue) (1.0.1)
Requirement already satisfied: botocore<1.30.0,>=1.29.49 in /usr/local/lib/python3.9/dist-packages (from boto3>=1.10.49->pycognito->pyemvue) (1.29.49)
Requirement already satisfied: ecdsa!=0.15 in /usr/local/lib/python3.9/dist-packages (from python-jose[cryptography]>=3.2.0->pycognito->pyemvue) (0.18.0)
Requirement already satisfied: pyasn1 in /usr/local/lib/python3.9/dist-packages (from python-jose[cryptography]>=3.2.0->pycognito->pyemvue) (0.4.8)
Requirement already satisfied: rsa in /usr/local/lib/python3.9/dist-packages (from python-jose[cryptography]>=3.2.0->pycognito->pyemvue) (4.9)
Requirement already satisfied: cryptography>=3.4.0 in /usr/local/lib/python3.9/dist-packages (from python-jose[cryptography]>=3.2.0->pycognito->pyemvue) (39.0.0)
Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.9/dist-packages (from cryptography>=3.4.0->python-jose[cryptography]>=3.2.0->pycognito->pyemvue) (1.15.1)
Requirement already satisfied: pycparser in /usr/local/lib/python3.9/dist-packages (from cffi>=1.12->cryptography>=3.4.0->python-jose[cryptography]>=3.2.0->pycognito->pyemvue) (2.21)
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/var/www/.local'
Check the permissions.

pour la box luna, la version du python est 3.9 il faut adapter le code du 1er script

#!/usr/bin/python3.7
# Script recupere infos de PyEmVue

remplacer par

#!/usr/bin/python3.9
# Script recupere infos de PyEmVue

pour la mise en place des dépendances pour moi depuis la fenetre de commande jeedom il a fallut mettre le chemin complet

sudo chmod +x /var/www/html/plugins/script/data/PyEmVue.PY
puis
python3 /var/www/html/plugins/script/data/PyEmVue.PY

si cela peut etre utile
et encore merci à Damien sur Discord qui m’a solutionner le problème

1 « J'aime »

Top d’être venu donner la solution à ton problème ça aidera d’autre sûrement.

Merci @Maya pour cette contribution;
Il faudra vraiment qu’on se colle à en faire un plugin pour simplifier la vie de tout le monde.
@thanaus : toujours motivé ?

1 « J'aime »

@geraldelbaze @eleckito21 de rien si sa peut aider
par contre j’ai toujours un problème quand même
le virtuel et les variable ne se mettent pas à jour j’ai l’impression que sa vient du script et du fichier log

	
2023-01-15 11:32:09	script	Erreur exécution de la commande [Maison][Emporia][Emporia] : Erreur sur /var/www/html/plugins/script/data/PyEmVue.PY 2>&1 valeur retournée : 1. Détails : Traceback (most recent call last): File "/var/www/html/plugins/script/data/PyEmVue.PY", line 34, in vue.login(username=user, password=passuser, token_storage_file=token) File "/usr/local/lib/python3.9/dist-packages/pyemvue/pyemvue.py", line 207, in login self.auth = Auth( File "/usr/local/lib/python3.9/dist-packages/pyemvue/auth.py", line 51, in __init__ self.tokens = self.refresh_tokens() File "/usr/local/lib/python3.9/dist-packages/pyemvue/auth.py", line 59, in refresh_tokens self.token_updater(tokens) File "/usr/local/lib/python3.9/dist-packages/pyemvue/pyemvue.py", line 231, in _store_tokens with open(self.token_storage_file, 'w') as f: PermissionError: [Errno 13] Permission denied: 'keys.json'	

si quelqu’un à une idée ou mieux une solution

De mémoire (cela fait tres longtemps maintenant ;-( ) je pense que :
1- le problème se situe dans ton fichier qui stocke tes identifiants
2- il faut vérifier que ce sont les bons

La structure normal doit être :

{
« access_token »: « xxxxxx »,
« id_token »: « xxxxxx »,
« refresh_token »: « xxxxxxx »,
« token_type »: « Bearer »,
« username »: « xxx@gmail.com »
}

ce fichier json est normalement généré depuis login / mdp fourni

En passant :
je m’étais appuyé sur une partie de ces travaux pour faire le script, mais depuis, l’auteur qui bossait sur Home-Assistant a sorti son plugin. Cela devrait pouvoir faciliter la création d’un plugin sous Jeedom

j’ai pas vu de fichier qui stocke les identifiants
il serait ou ce fichier?
je croyais qu’il fallait mettre les identifiants dans le script

Variables de connexion

user = « votre-adresse-mail »
passuser = « votre_mdp »
duree = « 1MIN »
token = ‹ keys.json ›
resultat = « PyEmVue.log »

oui oui c’est ça.
mais ce fichier keys.json est lancé au démarrage. C’est dans ce fichier que sont stockés les clés d’authentification pour se connecter à l’api de emporia.

a priori le premier script doit être bon puisque quand je le test depuis la console jeedom j’ai un résultat
je pense que ca vient du second script dans le scenario qui ne fait pas le fichier log ou pas correctement
mais j’ai pas de fichier keys.json

hummm. je vois un fichier .htacess. c’est peut-être pour cela qu’on ton fichier keys.json n’existe pas. Il réussit la première connexion, mais ne stocke pas le Bearer retourné. Or c’est le token qui sera utilisé pour les connexions suivantes…
Tente de renommer provisoirement ton .htaccess pour voir si cela ne vient pas de là.
Le htaccess gère qui est autorisé à lire / écrire dans le dossier

j’ai repris la hierarchie en créant un dossier PyEmVue dans le data du script
mais ca ne change rien pas de fichier keys.json il ne se crée pas

et quand le test le script j’obtiens bien quelque chose


mais j’ai toujours cette erreur

et pas de mise à jour des variables

Si j’ai bonne memoire, la première connexion permet justement de générer ce fichier keys.json.
Il faudrait que je me replonge dans le code, mais j’en suis à peu près sûr.
Sans ce fichier la récolte des datas ne fonctionne pas.
Donc ce qui est aussi possible c’est que le user avec lequel le script est exécuté ne dispose pas des droits.

@cstan77 : tu te souviens de cette partie ?

Ce serait bien que les autres utilisateurs du script confirme s’ils disposent bien de ce fichier keys.json que je ne t’amène pas dans une mauvaise direction.

Sur mon jeedom en VM sur Freebox je n’ai pas ce fichier et sa fonctionne bien
La je ne comprend pas pourquoi sur la Luna sa bug
sa doit venir du python 3.9 il y a peut etre des subtilité avec le 3.7 qui passe pas

Tu n’as pas ce fichier et ça fonctionne… ??
Humm tu as la possibilité de faire d’une recherche pour voir si par hasard il ne le met pas ailleurs stp ?
Sans token cela me paraît très étrange qu’il se connecte.
Si tu regarde le code, tu verras sur la ligne vue.login qu’il en a besoin…

Sur Discord Damien a trouvé la solution
effectivement problème de Keys.json

il faut modifié le code

#!/usr/bin/python3.9
# Script recupere infos de PyEmVue

# import librairies
import sys, os

# Variables de connexion
user = "votre-adresse-mail"
passuser = "votre_mdp"
duree = "1MIN"
token = '/var/www/html/plugins/script/data/PyEmVue/keys.json'
resultat = "PyEmVue.log"

@geraldelbaze @cstan77 sur discord Damien m’a parlé d’un forum aide développeur pour le plugin ou ils peuvent aider
Au cas ou vous seriez motivé
moi vu mes connaissance je ne pense pas etre d’une grande aide

1 « J'aime »

Ok. C’est donc bien une question de droits. Il va le cherche dans un dossier où il a les droits
Je pense que c’est lié à la gestion des droits de Luna.
Attention donc : cette modification ne fonctionne pas pour tout le monde.

J’ai pas tout suivi, faudrait se replonger dans le code
Il faut que les fichiers et répertoires soit pour le groupe, www-data.
Dans la configuration Jeedom, ont peut rétablir les droits

Je sais pas trop pourquoi mais pour moi sa l’air detre bon comme ca
Je vais voir en laissant tourner un peu mai a priori ca a resolu les problèmes