Démarrage du démon

Bonjour,
depuis la dernière mise à jour de ce soir, le démon ne démarre plus chez moi.
L’installation des dépendances s’est déroulée sans souci.

Côté log _deamon.out j’ai cette erreur :

[2024-11-10 20:35:04] ERROR  : EaseeChargerd           Fatal error: module 'websocket' has no attribute 'WebSocketApp'

Côté log _update ça semble clean:

Summary of installed packages...
certifi==2024.8.30
charset-normalizer==3.4.0
gevent==24.10.3
greenlet==3.1.1
idna==3.10
msgpack==1.0.2
pkg_resources==0.0.0
requests==2.32.3
signalrcore==0.9.2
six==1.16.0
urllib3==2.2.3
websocket==0.2.1
websocket-client==0.54.0
zope.event==5.0
zope.interface==7.1.1

Sur le log principale, j’ai l’erreur en boucle de démarrage de demon mais rien de plus.

Version installée : 2024-11-09 20:08:31
Version Jeedom : 4.4.19

J’ai l’impression de le fichier plugin_infos/packages.json n’a pas été supprimé lors de la mise à jour.

Peux-tu vérifier si ce fichier existe? S’il existe, il faudrait désactiver puis réactiver le plugin et voir si l’opération à supprimer le fichier.

Si le fichier est toujours là après la réactivation du plugin, merci de me le signaler.

Une fois ce test effectué, tu peux supprimer le fichier s’il est toujours présent.

Après avoir confirmé que le fichier a été supprimé, relance l’installation des dépendances.

A priori pas de packages.json dans ce dossier :


J’ai désactivé puis réactivé le plugin, relancé les dépendances mais le démon ne redemarre toujours pas.

Contenu du log _update :

BASE_DIR: /var/www/html/plugins/EaseeCharger/resources
======================================================================
== 11/11/2024 16:32:52 == Dependencies installation for EaseeCharger
======================================================================
[  5% ] : Clean apt...
[  9% ] : Clean apt : [  OK  ]
[ 10% ] : Update apt...
[ 19% ] : Update apt : [  OK  ]
[ 20% ] : Init python3 & prerequisites...
[ 29% ] : Init python3 & prerequisites : [  OK  ]
[ 30% ] : Init PyEnv...
** PyEnv not required: 3.9.2 >= 3.9 **
** python3 path: python3 **
[ 39% ] : Init PyEnv : [  OK  ]
[ 40% ] : Setting up virtual environment...
** Version of python in VENV: Python 3.9.2
[ 69% ] : Setting up virtual environment : [  OK  ]
[ 70% ] : Install the required python packages...
[ 79% ] : Install the required python packages : [  OK  ]
[ 80% ] : Restoring folders and files rights...
[ 89% ] : Restoring folders and files rights : [  OK  ]
[ 90% ] : Summary of installed packages...
certifi==2024.8.30
charset-normalizer==3.4.0
gevent==24.10.3
greenlet==3.1.1
idna==3.10
msgpack==1.0.2
pkg_resources==0.0.0
requests==2.32.3
signalrcore==0.9.2
six==1.16.0
urllib3==2.2.3
websocket==0.2.1
websocket-client==0.54.0
zope.event==5.0
zope.interface==7.1.1
[ 99% ] : Summary of installed packages : [  OK  ]
[100% ] : Finished !
======================================================================
==OK== Installation Successful
======================================================================

rien dans le _package après clean (donc c’était un résidu d’une ancienne version)
dans le _daemon.out je vois que ça :

[2024-11-11 16:31:55] ERROR  : EaseeChargerd           Fatal error: module 'websocket' has no attribute 'WebSocketApp'
[2024-11-11 16:33:20] ERROR  : EaseeChargerd           Fatal error: module 'websocket' has no attribute 'WebSocketApp'

Je peux changer le niveau de log par défaut mais je ne sais pas quoi rechercher comme log plus pertinent.

Je ne comprend pas. J’ai eu ce message d’erreur mais c’était parce que j’avais une version trop récente et non supportée par signalrcore chez moi, le fait de forcer la version de websocket-client à 0.54.0 avait résolu le problème.

Tu as les mêmes versions de modules que moi.
Ton log d’installation des dépendances est identique au mien.

Peux-tu me donner le résultat de la commande /var/www/html/plugins/EaseeCharger/resources/venv/bin/pip list

Bonne nouvelle pour toi mais mauvaise pour moi :

Je viens de supprimer mon environnement python puis de relancer l’installation des dépendances… je me retrouve avec le même message d’erreur que toi au lancement du daemon.

J’ai donc le même problème mais il était probablement caché par des résidus de tests précédents.

Je dois m’absenter et je ne sais pas si je vais pouvoir avancer ce soir. Je reviens ici dès que j’ai des nouvelles.

pas de souci, ce n’est pas bloquant non plus à la minute :wink:

Pour le résultat de la commande :

chardet             5.2.0
charset-normalizer  3.3.2
cupshelpers         1.0
dbus-python         1.2.16
distro-info         1.0+deb11u1
fail2ban            0.11.2
frozenlist          1.4.1
gpg                 1.14.0-unknown
httplib2            0.22.0
idna                3.7
iotop               0.6
jeedomdaemon        0.10.1
msgpack             1.0.2
multidict           6.0.5
pip                 24.1.2
pycairo             1.16.2
pycups              2.0.1
pycurl              7.43.0.6
PyGObject           3.38.0
pyinotify           0.9.6
pyparsing           3.1.2
pyserial            3.5
PySimpleSOAP        1.16.2
pysmbc              1.0.23
python-apt          2.2.1
python-debian       0.1.49
python-debianbts    4.1.1
pyudev              0.24.3
reportbug           7.10.3+deb11u2
requests            2.32.3
setuptools          70.2.0
signalrcore         0.9.4
six                 1.16.0
systemd-python      234
unattended-upgrades 0.1
urllib3             2.2.2
websocket-client    1.0.0
wheel               0.43.0
yarl                1.9.4

Surement un package qui manque de ce que je comprends de ton dernier message

La liste des modules semble être la liste des modules installé globalement dans l’os. Le python du plugin ne tourne pas dans cet environnement mais dans une sorte de partition qui se trouve dans le répertoire /ressources/venv du plugin. Cette partition a ses propres modules et n’utilise pas les module de l’os.

J’ai l’impression que tu n’as pas lancé la commande /var/www/html/plugins/EaseeCharger/resources/venv/bin/pip listmais juste pip list

Mais laisse tomber, c’est juste de la théorie. Le plus important est que je pense avoir résolu le problème et que j’ai déployé une nouvelle version. Je te laisse tester.

En gros, je me suis fait avoir par cette remarque sur le site signalrcore · PyPI
image

J’avais donc forcé l’installation de la version 0.54.0 de websocket-client. Mais il semble que cette remarque n’est plus d’actualité et que cette version de websocket-client provoquait l’installation d’une vieille version de signalrcore.
Maintenant, je me contente de définir que signalrcore 0.9.5 doit être installé et les dépendances inter modules font le reste.

Salut,

Gardes à l’esprit que les libs dans le venv restent. Donc si la version websocket 0.54 répond au requirements.txt de signalcore, pip n’installera pas une autre même si une plus récente existe.
Ce n’est peut-être pas un problème, je ne sais pas, je ne connais pas signalcore.

1 « J'aime »

Je viens de faire la maj. J’ai relancé les dépendances aussi.
Là le démon a démarré, je surveille dans la journée ce que ça donne !
Merci :slight_smile:

Edit: j’ai juste eu une erreur pendant la maj du plugin mais qui a été traitée avec l’installation des dépendances :

2024-11-12 09:09:12	EaseeCharger	Aucun script ne correspond à votre type de Linux : /var/www/html/plugins/EaseeCharger/core/class/../../resources/install_#stype#.sh avec #stype# : apt	Log EaseeCharger

Ce message vient très probablement du fait que la dernière version renomme le répertoire resources en ressources (en réalité l’un est supprimé et l’autre est créé).

1 « J'aime »

Bonjour @Mips

Merci pour ton info.
Dans ce cas, j’ai échappé au piège car jai profité de cette mise à jour pour supprimer le répertoire resourceset en créer un nouveau nommé ressources. en conséquence, le répertoire venvdans resources a été supprimé et l’installation de dépendances en cré un tout beau tout neuf dans ressources.

Mais je retiens ton info pour le futur.

1 « J'aime »

Petit retour mais j’ai il semblerait un souci de saturation réseau, j’ai un nombre de requêtes à la seconde vers les serveurs easee impressionnant :


J’ai coupé temporairement le plugin pour ne pas bloquer mon compte là bas mais j’ai l’impression que mon réseau est floodé par les appels. Y’a pas une tempo?

Non, Pas de tempo.

Le daemon ne fait pas de pull. On passe par du signalr. De ce que j’ai pu comprendre, une conection est établie par le deamon vers le cloud Ease puis le cloud utilise cette connection pour pousser les notifications. Il me semble aussi qu’il y a régulièrement des trames de « ping » pour vérifier que la connection est OK mais ces « ping » sont très léger.

Tu devrais voir dans log du daemon les notification reçues. Je ne sais plus si le niveau de log « info » est suffisant ou s’il faut passer en « debug » pour voir ces infos. Je n’ai pas accès à mon Jeedom pour le vérifier.

Chez moi, je reçois régulièrement des mise à jour de la tension de chacune des phases. Mais je ne pense pas qu’il y a surcharge du réseau. Sinon, mon PI B3 ne tiendrai probablement pas la charge.

1 « J'aime »

Ok merci, je vais retester tout ça voir si j’ai toujours la même charge côté dns

J’ai l’historique du pourquoi des requetes dns en boucle :

[2024-11-13 07:56:59] ERROR  : SignalRCoreClient       HTTPSConnectionPool(host='streams.easee.com', port=443): Max retries exceeded with url: /hubs/chargers/negotiate?id=AQrKnUv-g95RcXqOBFND5A (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fd70c57de50>: Failed to resolve 'streams.easee.com' ([Errno -3] Temporary failure in name resolution)"))
[2024-11-13 07:56:59] ERROR  : SignalRCoreClient       HTTPSConnectionPool(host='streams.easee.com', port=443): Max retries exceeded with url: /hubs/chargers/negotiate?id=AQrKnUv-g95RcXqOBFND5A (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fd6b0b3dca0>: Failed to resolve 'streams.easee.com' ([Errno -3] Temporary failure in name resolution)"))
[2024-11-13 07:56:59] ERROR  : SignalRCoreClient       HTTPSConnectionPool(host='streams.easee.com', port=443): Max retries exceeded with url: /hubs/chargers/negotiate?id=AQrKnUv-g95RcXqOBFND5A (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fd744160700>: Failed to resolve 'streams.easee.com' ([Errno -3] Temporary failure in name resolution)"))
[2024-11-13 07:56:59] ERROR  : SignalRCoreClient       HTTPSConnectionPool(host='streams.easee.com', port=443): Max retries exceeded with url: /hubs/chargers/negotiate?id=AQrKnUv-g95RcXqOBFND5A (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fd7443f14f0>: Failed to resolve 'streams.easee.com' ([Errno -3] Temporary failure in name resolution)"))
[2024-11-13 07:56:59] ERROR  : SignalRCoreClient       HTTPSConnectionPool(host='streams.easee.com', port=443): Max retries exceeded with url: /hubs/chargers/negotiate?id=AQrKnUv-g95RcXqOBFND5A (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fd70c57de20>: Failed to resolve 'streams.easee.com' ([Errno -3] Temporary failure in name resolution)"))
[2024-11-13 07:56:59] ERROR  : SignalRCoreClient       HTTPSConnectionPool(host='streams.easee.com', port=443): Max retries exceeded with url: /hubs/chargers/negotiate?id=AQrKnUv-g95RcXqOBFND5A (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fd7443f1130>: Failed to resolve 'streams.easee.com' ([Errno -3] Temporary failure in name resolution)"))
[2024-11-13 07:56:59] ERROR  : SignalRCoreClient       HTTPSConnectionPool(host='streams.easee.com', port=443): Max retries exceeded with url: /hubs/chargers/negotiate?id=AQrKnUv-g95RcXqOBFND5A (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fd724509790>: Failed to resolve 'streams.easee.com' ([Errno -3] Temporary failure in name resolution)"))
[2024-11-15 21:55:54] ERROR  : EaseeChargerd           Fatal error: HTTPSConnectionPool(host='streams.easee.com', port=443): Max retries exceeded with url: /hubs/chargers/negotiate (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)')))

La dernière erreur est celle que j’ai en voulant redémarrer le service.
En insistant il est reparti et pas de nouvelle erreur dans les logs.

Étrange,
Les erreurs du 13 novembre semblent indiquer qu’il y avait un problème de résolution DNS. Ceci n’est certainement pas lié au plugin.

Pour l’erreur du 15 novembre, Je suppose qu’il y avait une info concernant le certificat SSL qui n’était pas d’actualité ou absente. Cette info a probablement été actualisée entre le moment de cette erreur et la vérification du certificat lors de la connection suivante. Le problème peut être lié à une config chez Easee ou aux modules Python qui participent à la connection.

Il me semble difficile d’investiguer plus. Je te propose donc, si tout fonctionne bien pour toi, d’ignorer ces problèmes. On pourra reprendre les choses plus à fond s’ils se reproduisent.

Oui pas de soucis, c’est stable à l’heure actuelle.
Les pics de requêtes dns ne sont pas reproduits non plus.

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.