Démon démarré en erreur : invalid literal for int() with base 10

Bonjour,
je teste actuellement Jeedom sous Debian 12.
Je suis en particulier à la recherche d’un exemple fonctionnel d’un plugin utilisant Python (pyEnv) pour l’évo à faire des plugins EcoFlow et GeckoSpa.
J’ai installé la version beta de myModbus que j’utilise sur mon Jeedom de prod (Debian 11) et qui fonctionne parfaitement avec ma PAC (big up et grand merci aux developpeurs par ailleurs!!
Après 2-3 tentatives, j’ai réussi à faire passer les dépendances et à démarrer le plugin mais j’ai des erreurs dans les logs et aucun résultat en retour.
Pas spécialiste Python, je nage un peu pour trouver la source du problème.
Je joins ci-dessous les infos de mon instance Jeedom ainsi que les logs répétitifs que j’obtiens.

Auriez-vous une piste?

Le dernier sujet en date concernant myModbus avec le même genre d’erreur a été clos suite au fix. (Modbus KO ne fonctionne plus après mise a jour beta 29 - #2 par Michel_F)

[2024-07-27 10:36:00][DEBUG] : mymodbusd: active_children: 0
[2024-07-27 10:36:00][INFO] : mymodbusd: process re-run: PAC Velum Zephir
Process PAC Velum Zephir:
Traceback (most recent call last):
  File "/var/www/html/plugins/pyenv/resources/pyenv/versions/3.11.8/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/var/www/html/plugins/pyenv/resources/pyenv/versions/3.11.8/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 331, in run
    self.apply_new_config()
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 251, in apply_new_config
    self.requests = PyModbusClient.get_requests(self.new_config['cmds'], self.eqConfig['name'])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 122, in get_requests
    request['slave'] = int(req_config['cmdSlave'])
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: ''
[2024-07-27 10:36:01][DEBUG] : mymodbusd: active_children: 0
[2024-07-27 10:36:01][INFO] : mymodbusd: process re-run: PAC Velum Zephir
Process PAC Velum Zephir:
Traceback (most recent call last):
  File "/var/www/html/plugins/pyenv/resources/pyenv/versions/3.11.8/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/var/www/html/plugins/pyenv/resources/pyenv/versions/3.11.8/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 331, in run
    self.apply_new_config()
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 251, in apply_new_config
    self.requests = PyModbusClient.get_requests(self.new_config['cmds'], self.eqConfig['name'])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 122, in get_requests
    request['slave'] = int(req_config['cmdSlave'])
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: ''
[2024-07-27 10:36:02][DEBUG] : mymodbusd: active_children: 0
[2024-07-27 10:36:02][INFO] : mymodbusd: process re-run: PAC Velum Zephir
Process PAC Velum Zephir:
Traceback (most recent call last):
  File "/var/www/html/plugins/pyenv/resources/pyenv/versions/3.11.8/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/var/www/html/plugins/pyenv/resources/pyenv/versions/3.11.8/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 331, in run
    self.apply_new_config()
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 251, in apply_new_config
    self.requests = PyModbusClient.get_requests(self.new_config['cmds'], self.eqConfig['name'])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 122, in get_requests
    request['slave'] = int(req_config['cmdSlave'])
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: ''
[2024-07-27 10:36:03][DEBUG] : mymodbus::deamon_info
[2024-07-27 10:36:03][DEBUG] : mymodbus::getDeamonLaunchable
[2024-07-27 10:36:03][DEBUG] : mymodbus::getCompleteConfiguration
[2024-07-27 10:36:03][DEBUG] : mymodbus::getEqConfiguration
[2024-07-27 10:36:03][DEBUG] : mymodbus::check_pyenv
[2024-07-27 10:36:03][DEBUG] : mymodbus::deamon_info * daemon_info = '{"state":"ok","launchable":"ok"}'
[2024-07-27 10:36:03][DEBUG] : mymodbusd: active_children: 0
[2024-07-27 10:36:03][INFO] : mymodbusd: process re-run: PAC Velum Zephir
Process PAC Velum Zephir:
Traceback (most recent call last):
  File "/var/www/html/plugins/pyenv/resources/pyenv/versions/3.11.8/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/var/www/html/plugins/pyenv/resources/pyenv/versions/3.11.8/lib/python3.11/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 331, in run
    self.apply_new_config()
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 251, in apply_new_config
    self.requests = PyModbusClient.get_requests(self.new_config['cmds'], self.eqConfig['name'])
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/html/plugins/mymodbus/ressources/mymodbusd/mymodbus.py", line 122, in get_requests
    request['slave'] = int(req_config['cmdSlave'])
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: ''

Informations Jeedom

Core : 4.4.9 (V4-stable) / Jeedom DIY (Debian 12.2) sous VM Proxmox 8 
DNS Jeedom : non

Plugin : MyModbus
Version : 2024-06-18 01:02:07 (beta)
Statut Démon : Démarré - (2024-07-27 10:32:51)

Merci
Lionel

Bonjour @EFCAugure,

:heart:

Effectivement, cette correction a été intégrée à la beta32.

A savoir : j’ai en tête de faire une grosse mise à jour du code pour intégrer le démon python développé par Mips, TiTiDom et nebz et utiliser la dernière version de pymodbus. Mais pour ça il me faut du temps que je n’arrive pas encore à trouver…


Combien as-tu d’équipements MyModbus ? Est-ce que la sauvegarde de chaque équipement renvoie une erreur ?
Tu peux envoyer les log en mode debug lors du (re)démarrage du démon STP ?
Tu peux envoyer l’export de la config de tes équipements STP ? c’est faisable via le plugin :

  1. créer un template depuis la page de config de l’équipement
  2. dans le visualisateur de template (page du plugin) sélectionner le template créé et le télécharger

Il faut renommer le fichier en .txt pour pouvoir le déposer dans la réponse.
Ou alors une capture de la config de l’équipement et de toutes le commandes si tu n’arrives pas à faire l’export.

A+
Michel

Regarde de ce coté :

Hello @Michel_F ,
merci pour ta réponse.
Je t’envoie toutes les infos demandées demandées dans la journée demain.
Concernant les évos que je souhaite faire pour GeckoSpa et EcoFlow, j’ai passé ma journée d’hier à galérer sur un truc con. J’ai bien suivi le topic https://community.jeedom.com/t/dependances-python-des-plugins-venv-pyenv-debian-12/125585 et ça marche au poil pour les dépendances mais lorsque je démarre le démon, il me dit qu’il trouve pas le module jeedom.jeedom.
J’ai eu beau passer des heures dessus à comparer ce que j’avais fait avec les plugins de @Mips comme Reolink ou WorxLandroid…je ne trouve pas.
je vais encore chercher demain et au pire je ferai appel à vous :innocent:

Lionel

Salut,

WorxLandroidS n’utilise plus « jeedom.jeedom » donc tu vas avoir du mal à comparer.
Et reolink n’est pas de moi.

Et pour l’erreur que tu as, le coup classique c’est que tu n’as pas installé « serial » (car tu n’en as probablement pas besoin) mais qui est requis par le package jeedom; ou tu supprimes cette partie de ton code.
J’en parle dans la doc dev.

Une alternative c’est ceci: GitHub - Mips2648/jeedom-daemon-py
C’est ce que j’utilise dans les plugins dorénavant, y compris worxLandroidS. La doc est dans le readme.

Hello @Mips
Sympa de passer me donner des conseils :+1:
Je regarde ça dès demain.
Avec ces infos je devrais m’en sortir!
Le projet que tu as mentionné est le résultat final de la discussion sur les dépendances Python et les environnements virtuels dans la partie développeurs?

Lionel

Non, c’est un autre projet issu de ma tête et du fait que je voulais me simplifier le travail à chaque plugin ainsi que réduire le code de chaque plugin à uniquement son job.

C’est complètement indépendant de la façon dont les dépendances ont été installées.

Hello @Michel_F ,
voilà un peu tard les infos demandées :blush:

mymodbus_packages_update.txt (4,7 Ko)
mymodbus_deamonstart_log.txt (20,2 Ko)
Template_Pompe_a_chaleur_velum.json.txt (26,5 Ko)

Lionel

OK, alors a priori, tu n’as fait aucune adaptation de la configuration après le passage de la version stable vers la version bêta. Je suppose que la version bêta n’a jamais fonctionné chez toi…

Il faut a minima faire une sauvegarde de l’équipement dans MyModbus bêta.

Je te souhaite d’avoir des captures d’écran de ta config en version stable, sinon il va falloir ne pas sauvegarder l’équipement, repasser en version stable, prendre des captures, revenir en version bêta.

Avec les captures il faut ensuite appliquer la configuration manuellement et sauvegarder l’équipement afin que les validations du plugin soient faites sur la configuration de l’équipement.

1 « J'aime »

Hello,
merci pour ces infos.
je ne te suis pas complètement sur ces adaptations de stable vers beta.
Je vais regarder ta doc à nouveau car j’imagine que tu en parles.
De toute manière Jeedom tourne sur une VM dont j’ai des snapshots et j’ai aussi une VM Debian 12 qui est celle sur laquelle je fais mes devs/tests (donc pas de problème à venir car j’aurai les 2 pages de config ouvertes en parallèles pour copier/coller).

Hello,

Donc si tu peux faire comme ça, nickel. Une fois configuré ça devrait tourner pareil que sous debian 11

Donc si je comprends bien, sur la nouvelle VM, je supprime le module existant (PAC Velum Zephyr) sous la dernière beta de MyModbus
ensuite je recrée le nouveau module en recopiant les infos et actions depuis ma vm de prod.
J’avais procédé par intégration du backup jeedom de prod sur la VM de test puis passage en MyModbus beta.
La sauvegarde n’était pas complète du coup?

Non non, tu peux garder le même équipement et les mêmes commandes, mais il faut ajuster les paramètres pour coller à ce dont tu as besoin. Le plugin t’aide un peu mais tu dois vérifier et adapter.

Lors de la sauvegarde, s’il y a une erreur, la sauvegarde sera invalidée et tu auras un message d’erreur qui devrait t’aider.

Bien sûr tu peux poster ici tes questions si tu en as.

Merci beaucoup pour ta patience et ton aide. J’avoue que je galère un peu et que je n’ai plus autant de facilité qu’à l’époque en dev.

J’essaie au max de m’en sortir by myself :slight_smile:

Lionel

Pour MyModbus, il n’y a pas de dev à faire mais par contre la configuration du machin peut ne pas être facile en fonction de l’appareil avec lequel tu veux communiquer.

Encore une fois, si tu poste ici les captures de ta configuration avec MyModbus stable, je te dirai quoi faire pour la configuration en bêta si vraiment tu es perdu.

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