KLF200 has been restarted after found not responding

Oui je pense sur la beta, j’ai complété mon post juste au dessus et interpelé le dev

Pour pouvoir réinstaller la stable, il faut supprimer le fichier plugins/klf200/plugin_info/packages.json ou supprimer le plugin.
Puis relancer l’installation des dépendances. Le log klf200_dep doit se remplir.
La commande pour vérifier la version des modules python est pip3 show aiohttp PyYAML

Merci,
je viens de mettre la version stable, j’ai des logs mais ça bug toujours

ci joint la reponse a la commande pip3

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.
Name: aiohttp
Version: 3.7.4.post0
Summary: Async http client/server framework (asyncio)
Home-page: https://github.com/aio-libs/aiohttp
Author: Nikolay Kim
Author-email: fafhrd91@gmail.com
License: Apache 2
Location: /usr/local/lib/python3.7/dist-packages
Requires: async-timeout, attrs, chardet, multidict, typing-extensions, yarl
Required-by: zigpy
---
Name: PyYAML
Version: 5.4.1
Summary: YAML parser and emitter for Python
Home-page: https://pyyaml.org/
Author: Kirill Simonov
Author-email: xi@resolvent.net
License: MIT
Location: /usr/local/lib/python3.7/dist-packages
Requires:
Required-by: pyvlx
********************************************************
*             Installation des dépendances             *
********************************************************
Hit:1 http://raspbian.raspberrypi.org/raspbian buster InRelease
Hit:2 http://archive.raspberrypi.org/debian buster InRelease
Hit:3 https://download.docker.com/linux/debian buster InRelease
Hit:4 https://deb.nodesource.com/node_14.x buster InRelease
Reading package lists...
Installation des dépendances apt
Reading package lists...
Building dependency tree...
Reading state information...
python3-dev is already the newest version (3.7.3-1).
python3-setuptools is already the newest version (40.8.0-1).
python3-pip is already the newest version (18.1-5+rpt1).
The following packages were automatically installed and are no longer required:
libev4 libuv1 libwebsockets8
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Installation du module pyvlx pour python
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pyvlx
Using cached https://www.piwheels.org/simple/pyvlx/pyvlx-0.2.20-py3-none-any.whl (75 kB)
Collecting PyYAML
Using cached https://www.piwheels.org/simple/pyyaml/PyYAML-6.0-cp37-cp37m-linux_armv7l.whl (45 kB)
Installing collected packages: PyYAML, pyvlx
Successfully installed PyYAML-6.0 pyvlx-0.2.20
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.4; however, version 22.1 is available.
You should consider upgrading via the '/usr/bin/python3 -m pip install --upgrade pip' command.
Installation du module aiohttp pour python
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting aiohttp==3.7.4.post0
Using cached https://www.piwheels.org/simple/aiohttp/aiohttp-3.7.4.post0-cp37-cp37m-linux_armv7l.whl (1.3 MB)
Collecting multidict<7.0,>=4.5
Using cached https://www.piwheels.org/simple/multidict/multidict-6.0.2-cp37-cp37m-linux_armv7l.whl (53 kB)
Collecting chardet<5.0,>=2.0
Downloading https://www.piwheels.org/simple/chardet/chardet-4.0.0-py2.py3-none-any.whl (178 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 178.7/178.7 KB 1.5 MB/s eta 0:00:00
Collecting typing-extensions>=3.6.5
Using cached https://www.piwheels.org/simple/typing-extensions/typing_extensions-4.2.0-py3-none-any.whl (24 kB)
Collecting yarl<2.0,>=1.0
Using cached https://www.piwheels.org/simple/yarl/yarl-1.7.2-cp37-cp37m-linux_armv7l.whl (258 kB)
Collecting attrs>=17.3.0
Using cached https://www.piwheels.org/simple/attrs/attrs-21.4.0-py2.py3-none-any.whl (60 kB)
Collecting async-timeout<4.0,>=3.0
Downloading https://www.piwheels.org/simple/async-timeout/async_timeout-3.0.1-py3-none-any.whl (8.2 kB)
Collecting idna>=2.0
Using cached https://www.piwheels.org/simple/idna/idna-3.3-py3-none-any.whl (64 kB)
Installing collected packages: typing-extensions, multidict, idna, chardet, attrs, async-timeout, yarl, aiohttp
Attempting uninstall: typing-extensions
Found existing installation: typing_extensions 4.2.0
Uninstalling typing_extensions-4.2.0:
Successfully uninstalled typing_extensions-4.2.0
Attempting uninstall: multidict
Found existing installation: multidict 6.0.2
Uninstalling multidict-6.0.2:
Successfully uninstalled multidict-6.0.2
Attempting uninstall: idna
Found existing installation: idna 3.3
Uninstalling idna-3.3:
Successfully uninstalled idna-3.3
Attempting uninstall: chardet
Found existing installation: chardet 4.0.0
Uninstalling chardet-4.0.0:
Successfully uninstalled chardet-4.0.0
Attempting uninstall: attrs
Found existing installation: attrs 21.4.0
Uninstalling attrs-21.4.0:
Successfully uninstalled attrs-21.4.0
Attempting uninstall: async-timeout
Found existing installation: async-timeout 4.0.2
Uninstalling async-timeout-4.0.2:
Successfully uninstalled async-timeout-4.0.2
Attempting uninstall: yarl
Found existing installation: yarl 1.7.2
Uninstalling yarl-1.7.2:
Successfully uninstalled yarl-1.7.2
Attempting uninstall: aiohttp
Found existing installation: aiohttp 3.8.1
Uninstalling aiohttp-3.8.1:
Successfully uninstalled aiohttp-3.8.1
Successfully installed aiohttp-3.7.4.post0 async-timeout-3.0.1 attrs-21.4.0 chardet-4.0.0 idna-3.3 multidict-6.0.2 typing-extensions-4.2.0 yarl-1.7.2
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.4; however, version 22.1 is available.
You should consider upgrading via the '/usr/bin/python3 -m pip install --upgrade pip' command.
Installation du module bottle pour python
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting bottle
Downloading https://www.piwheels.org/simple/bottle/bottle-0.12.19-py3-none-any.whl (89 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 89.6/89.6 KB 1.3 MB/s eta 0:00:00
Installing collected packages: bottle
Successfully installed bottle-0.12.19
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.4; however, version 22.1 is available.
You should consider upgrading via the '/usr/bin/python3 -m pip install --upgrade pip' command.
Installation du module YAML pour python
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting PyYAML==5.4.1
Using cached https://www.piwheels.org/simple/pyyaml/PyYAML-5.4.1-cp37-cp37m-linux_armv7l.whl (45 kB)
Installing collected packages: PyYAML
Attempting uninstall: PyYAML
Found existing installation: PyYAML 6.0
Uninstalling PyYAML-6.0:
Successfully uninstalled PyYAML-6.0
Successfully installed PyYAML-5.4.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.4; however, version 22.1 is available.
You should consider upgrading via the '/usr/bin/python3 -m pip install --upgrade pip' command.
********************************************************
*             Installation terminée                    *
********************************************************

Les versions des libs python sont maintenant correctes. Ça fonctionne comme ça chez moi.
Arretez le daemon klf200
Eteignez puis redémarrez le klf200
Redèmarrez le daemon
Ça doit fonctionner. :crossed_fingers: Sinon fournissez les logs.

Toute installation de dépendances d’un autre plugin peut écraser les versions nécessaires au plugin klf200.
En cas de perturbation du fonctionnement n’oubliez pas de vérifier les versions des modules python.

Et bien malheureusement c’est toujours pareil…

(Press CTRL+C to quit)
[2022-05-17 21:33:45]INFO : Lancement démon klf200 : /usr/bin/python3 /var/www/html/plugins/klf200/resources/klf200d.py 192.168.0.150 9LfUAnBbEC
[2022-05-17 21:33:46]ERROR : KLF200 has been restarted after found not responding
[2022-05-17 21:33:49]INFO : Arrêt du service klf200
[2022-05-17 21:33:49]INFO : Lancement démon klf200 : /usr/bin/python3 /var/www/html/plugins/klf200/resources/klf200d.py 192.168.0.150 9LfUAnBbEC
[2022-05-17 21:33:49]ERROR : KLF200 has been restarted after found not responding
[2022-05-17 21:34:03]DEBUG : Send http://localhost:9123/devices
[2022-05-17 21:34:04]DEBUG : Result
[2022-05-17 21:34:15]DEBUG : Action /set/3/100
[2022-05-17 21:34:15]DEBUG : Send http://localhost:9123/set/3/100
[2022-05-17 21:34:16]DEBUG : Result
[2022-05-17 21:34:23]DEBUG : Action /set/8/0
[2022-05-17 21:34:23]DEBUG : Send http://localhost:9123/set/8/0
[2022-05-17 21:34:24]DEBUG : Result
[2022-05-17 21:34:25]DEBUG : Action /set/8/0
[2022-05-17 21:34:25]DEBUG : Send http://localhost:9123/set/8/0
[2022-05-17 21:34:26]DEBUG : Action /set/9/0
[2022-05-17 21:34:26]DEBUG : Result
[2022-05-17 21:34:26]DEBUG : Send http://localhost:9123/set/9/0
[2022-05-17 21:34:27]DEBUG : Result

Pour infos je confirme que le probleme avec l’erreur LOOP.run_until_complete(init_pyvlx_connection(LOOP))
vient des dépendances.
J’ai eu un KFL200 hyper stable jusqu’à un orage le week-end dernier qui a provoqué une coupure de courant et m’a pourri le SSD de mon RPI, rendant Jeedom completement inexploitable. Comme c’etait la 2eme fois, j’avais par precaution fait une image de mon SSD datant de novembre 2021 que j’ai restaurée et dans un elan de mises à jour j’ai relancé les dependances du KLF200 → c’etait la cata complete: crash apres chaque commande, etc…
Ce matin j’ai reinstallé a nouveau le backup de mon SSD et je n’ai fait que les mise à jour des plugins sans refaire les dependances → et je retrouve le comportement stable de mon KLF200.
Cet etat correspond à une installation des dépendances datant du 2020-05-22 18:11:06 et je fourni le log pour retrouver les versions en vigueur à l’époque:

0000|********************************************************
0001|*             Installation des dépendances             *
0002|********************************************************
0003|Hit:1 http://archive.raspberrypi.org/debian buster InRelease
0004|Hit:2 https://deb.nodesource.com/node_14.x buster InRelease
0005|Hit:3 http://raspbian.raspberrypi.org/raspbian buster InRelease
0006|Reading package lists...
0007|Installation des dépendances apt
0008|Reading package lists...
0009|Building dependency tree...
0010|Reading state information...
0011|python3-dev is already the newest version (3.7.3-1).
0012|python3-setuptools is already the newest version (40.8.0-1).
0013|python3-pip is already the newest version (18.1-5+rpt1).
0014|0 upgraded, 0 newly installed, 0 to remove and 309 not upgraded.
0015|Installation du module pyvlx pour python
0016|Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
0017|Requirement already up-to-date: pyvlx in /usr/local/lib/python3.7/dist-packages (0.2.19)
0018|Requirement already satisfied, skipping upgrade: PyYAML in /usr/local/lib/python3.7/dist-packages (from pyvlx) (5.4.1)
0019|Installation du module aiohttp pour python
0020|Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
0021|Collecting aiohttp
0022|Downloading https://www.piwheels.org/simple/aiohttp/aiohttp-3.7.4.post0-cp37-cp37m-linux_armv7l.whl (1.3MB)
0023|Requirement already satisfied, skipping upgrade: typing-extensions>=3.6.5 in /usr/local/lib/python3.7/dist-packages (from aiohttp) (3.7.4.3)
0024|Requirement already satisfied, skipping upgrade: chardet<5.0,>=2.0 in /usr/lib/python3/dist-packages (from aiohttp) (3.0.4)
0025|Requirement already satisfied, skipping upgrade: multidict<7.0,>=4.5 in /usr/local/lib/python3.7/dist-packages (from aiohttp) (5.1.0)
0026|Requirement already satisfied, skipping upgrade: async-timeout<4.0,>=3.0 in /usr/local/lib/python3.7/dist-packages (from aiohttp) (3.0.1)
0027|Requirement already satisfied, skipping upgrade: attrs>=17.3.0 in /usr/local/lib/python3.7/dist-packages (from aiohttp) (20.3.0)
0028|Requirement already satisfied, skipping upgrade: yarl<2.0,>=1.0 in /usr/local/lib/python3.7/dist-packages (from aiohttp) (1.6.3)
0029|Requirement already satisfied, skipping upgrade: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl<2.0,>=1.0->aiohttp) (2.6)
0030|Installing collected packages: aiohttp
0031|Found existing installation: aiohttp 3.7.3
0032|Uninstalling aiohttp-3.7.3:
0033|Successfully uninstalled aiohttp-3.7.3
0034|Successfully installed aiohttp-3.7.4.post0
0035|Installation du module bottle pour python
0036|Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
0037|Requirement already up-to-date: bottle in /usr/local/lib/python3.7/dist-packages (0.12.19)
0038|********************************************************
0039|*             Installation terminée                    *
0040|********************************************************

aiohttp : 3.7.4.post0
PyYAML : 5.4.1
pyvlx: 0.2.19

Bonsoir,

De mon coté, j’ai galéré pendant quelques mois avec le plugin KLF 200 ( peu fiable, souvent ne répondant pas, toujours en train de se relancer).
J’ai fini par passer sur le plugin Velux MQTT en lisant ce post.
Et même si j’ai mis un peu de temps à installer les 2 autres plugins (ils parlent de plusieurs 10zaines de minutes, effectivement!) maintenant, ca fonctionne !

Merci Jeedom !
Pierre5555

1 « J'aime »

C’est les versions qu’installe le plugin en stable. C’est ce qui avait été vu en fin d’année dernière.
En beta, le plugin est basculé sur la.nouvelle gestion des dép de jeedom 4.2, la version est toujours la même demandé mais si elle n’est pas prise en compte c’est spécifique a ce nouveau mode 4.2

Bonjour,
C’est le cas. Le nouveau système de dépendances n’installe que la dernière version des modules python.
Voir: https://community.jeedom.com/t/gestion-de-packages-v4-2/50893/45?u=jpty avec la réponse de Loic à ma question en dessous.

Pour contrer ce conflit de version, j’ai installé un venv dans le répertoire resources/venv du plugin.

apt-get install python3-venv
python3 -m venv /var/www/html/plugins/klf200/resources/venv

Les dépendances sont installées manuellement. (Selon resources/install_apt.sh )

/var/www/html/plugins/klf200/resources/venv/bin/pip3 install pyvlx
/var/www/html/plugins/klf200/resources/venv/bin/pip3 install aiohttp==3.7.4.post0
/var/www/html/plugins/klf200/resources/venv/bin/pip3 install PyYAML==5.4.1 --force-reinstall
/var/www/html/plugins/klf200/resources/venv/bin/pip3 install bottle

J’ai modifié la fonction de lancement du daemon pour exécuter le python3 du venv. ( dans core/class/klf200.class.php fonction deamon_start )

$cmd = $klf200_path .'/venv/bin/python3 ' . $klf200_path . '/klf200d.py'; // Lancement python3 du venv
		// $cmd = '/usr/bin/python3 ' . $klf200_path . '/klf200d.py'; Lancement python3 général

Le python3 et les modules nécessaires au plugin klf200 sont maintenant isolés de l’environnement général de python qui peut être modifié par l’install des dépendances d’autres plugins.

Le log :

[2022-05-22 12:12:47]INFO : Lancement démon klf200 : /var/www/html/plugins/klf200/resources/venv/bin/python3 /var/www/html/plugins/klf200/resources/klf200d.py 192.168.1.100 xxxxxpassword
[2022-05-22 12:13:04]DEBUG : Send http://localhost:9123/devices
[2022-05-22 12:13:04]DEBUG : Result {"result": "ok", "devices": [{"id": 0, "name": "VoletSDE", "type": "RollerShutter", "position": 0}, {"id": 1, "name": "FenetreSDE", "type": "Window", "position": 93}, {"id": 2, "name": "StorePergola", "type": "Awning", "position": 41}]}
[2022-05-22 12:13:04]DEBUG : Update Volet SDE at 0%
[2022-05-22 12:13:04]DEBUG : Update Fenetre SDE at 93%
[2022-05-22 12:13:04]DEBUG : Update Store Pergola at 41%
1 « J'aime »

Bonjour, @jpty
Désolé, si je ne maitrise pas tout ! aussi pour clarifier, cette installation de python3-venv, on fait juste une installation manuelle et/ou faut-il ajouter ces lignes de commande dans le script « resources/install_apt.sh » pour que cela soit fait à chaque (re)lancement des dépendances ?
Merci de votre réponse.

@lunarok
Bonjour,
A chaque fois que je relance les Dépendances du plugin KLF200, la date de dernière installation n’est pas mise à jour correctement et et conserve celle de la toute première installation. Bug ou pas ?

Bonjour,
Ce sont des commandes à faire manuellement une seule fois. Pas de modif des scripts du plugin pour le moment.
Les dépendances ne devraient plus être réinstallées ensuite puisqu’elles ne seront plus écrasées par les install des dépendances des autres plugins ni par le core.

Si venv devient la solution pour les dépendances de ce plugin, le script d’installation des dépendances sera à mettre à jour pour ne plus faire d’installation manuellement.

@jpty
Bonjour et merci pour la réponse rapide.
J’ai fait votre modif et a priori plus de soucis. Le KLF200 semble avoir retrouvé sa stabilité. Plus de redémarrages pour cause de non réponse. C’est parfait. MERCI encore pour ce partage de solution.
Cordialement

1 « J'aime »

Pourvu que ça dure. Je ne l’ai mis en place que ce matin chez moi. :crossed_fingers:

Je vais passer le plugin en venv. Du coup si le nouveau système n’utilise pas les venv on va continuer à se marcher sur les pieds entre dev et python devient pire que nodejs :slight_smile:

On peut faire un pr pour intégrer venv au core :wink:
J’avoue ne jamais avoir fort creuser ce mécanisme mais je pense que cela aura beaucoup d’avantage.

Petit hors sujet: une interrogation que j’ai, si une lib n’est pas dans « le venv » du projet, y a-t-il un fallback vers les libs communes ?

Le venv, c’est l’avantage de nodejs avec par défaut son environnement « par app »
Python a des lib plus stables globalement, sauf que l’install par défaut en global crééer un risque plus élevé de se marcher dessus.

Non. Le plugin aura sa propre version de python avec ses modules.
Le plugin devra utiliser l’ancien système d’installation des dépendances.

A droite, le venv vide:


from sys import argv fonctionne dans le venv. Il y a peut-être des options pour cela lors de la création du venv
J’y connais rien en python.

Les packages d’un venv vide brut de création:

Package       Version
------------- -------
pip           18.1
pkg-resources 0.0.0
setuptools    40.8.0

Pour le plugin klf200 avec pyvlx, PyYAML aiohttp et toutes leurs dépendances, le venv fait une taille de 20Mo.
Les packages installés.

Package           Version
----------------- -----------
aiohttp           3.7.4.post0
async-timeout     3.0.1
attrs             21.4.0
bottle            0.12.19
chardet           4.0.0
idna              3.3
multidict         6.0.2
pip               18.1
pkg-resources     0.0.0
pyvlx             0.2.20
PyYAML            5.4.1
setuptools        40.8.0
typing-extensions 4.2.0
yarl              1.7.2

La doc: venv — Création d'environnements virtuels — Documentation Python 3.7.17

Extrait de la doc:
Note
Un environnement virtuel est un environnement Python tel que l’interpréteur Python, les bibliothèques et les scripts installés sont isolés de ceux installés dans d’autres environnements virtuels, et (par défaut) de toutes autres bibliothèques installées dans un Python « système », par exemple celui qui est installé avec votre système d’exploitation.

Le (par défaut) me laisse penser qu’il doit y avoir une option qqpart pour les libs communes.
C’est l’option --system-site-packages à la création du venv.

1 « J'aime »

Super lunarok et merci jpty pour la solution venv, car par ex j’ai aussi du débrayer le plugin vaillantMultimatic pour ma chaudière qui force une version plus récente de aiohttp. Donc quand bien meme la dépendance de klf200 est juste on n’est pas à l’abri d’un plugin tiers qui casse tout.
klf200 est quasiment LE plugin le plus critique pour moi car j’arrive à ne plus utiliser les commandes manuelles des volets. Ouvertures en fonction des reveils et des mouvements dans certaines pieces, fermetures en fonction de l’élévation du soleil (merci lunarok pour heliotrope :slight_smile: ), en fonction de la temperature extérieure pendant les journées chaudes, simulateur de présence si l’alarme est mise, etc…

Pour remettre l’église au milieu du village, le comportement « normal » c’est bien de ne pas forcer de rester dans une version inférieur justement mais d’utiliser la dernière stable, c’est aussi grâce à ça que l’on évite les failles de sécurités découvertes :wink:
Donc mon plugin ne casse rien du tout :stuck_out_tongue:

Ceci dit, si on regarde globalement la situation, je suis pour l’isolation évidement, je le disais déjà plus haut.

Oui, mips, ce n’etait pas un reproche mais juste un constat que j’avais pu faire et qui apportait un argument à l’isolation proposée en solution.

1 « J'aime »