Error: name 'error' is not defined

bonsoir

j’ai installé la beta suite à des conseils par rapport aux soucis rencontrés, et il ne démarre pas :

le diagnostic est OK.

[2022-11-30 18:05:06]INFO : GLOBAL------Start teleinfod
[2022-11-30 18:05:06]INFO : GLOBAL------Cycle Sommeil : 0.5
[2022-11-30 18:05:06]INFO : GLOBAL------Socket port : 55062
[2022-11-30 18:05:06]INFO : GLOBAL------Socket host : 127.0.0.1
[2022-11-30 18:05:06]INFO : GLOBAL------Log level : debug
[2022-11-30 18:05:06]INFO : GLOBAL------Callback : http://127.0.0.1:80/plugins/teleinfo/core/php/jeeTeleinfo.php
[2022-11-30 18:05:06]INFO : GLOBAL------Vitesse : 9600
[2022-11-30 18:05:06]INFO : GLOBAL------Apikey : xxxxxxxxx
[2022-11-30 18:05:06]INFO : GLOBAL------Cycle : 0.3
[2022-11-30 18:05:06]INFO : GLOBAL------Port : /dev/ttyUSB1
[2022-11-30 18:05:06]INFO : GLOBAL------Type : conso
[2022-11-30 18:05:06]INFO : GLOBAL------Mode : standard
[2022-11-30 18:05:06]DEBUG : Writing PID 20482 to /tmp/jeedom/teleinfo/teleinfo_conso.pid
[2022-11-30 18:05:06]DEBUG : Init request module v2.28.1
[2022-11-30 18:05:06]DEBUG : Starting new HTTP connection (1): 127.0.0.1:80
[2022-11-30 18:05:06]DEBUG : http://127.0.0.1:80 "GET /plugins/teleinfo/core/php/jeeTeleinfo.php?apikey=xxxxxx HTTP/1.1" 200 0
[2022-11-30 18:05:06]DEBUG : Socket interface started
[2022-11-30 18:05:06]DEBUG : LoopNetServer Thread started
[2022-11-30 18:05:06]INFO : GLOBAL------Start listening...
[2022-11-30 18:05:06]DEBUG : Listening on: [127.0.0.1:55062]
[2022-11-30 18:05:06]DEBUG : TELEINFO------INIT CONNECTION
[2022-11-30 18:05:06]INFO : GLOBAL------Preparing Teleinfo...
[2022-11-30 18:05:06]DEBUG : GLOBAL------Read Socket Thread Launched
[2022-11-30 18:05:06]INFO : TELEINFO------RUN
[2022-11-30 18:05:06]INFO : TELEINFO------OPEN CONNECTION
[2022-11-30 18:05:06]INFO : GLOBAL------Shutdown
[2022-11-30 18:05:06]INFO : Removing PID file /tmp/jeedom/teleinfo/teleinfo_conso.pid
[2022-11-30 18:05:06]DEBUG : LoopNetServer Thread stopped
[2022-11-30 18:05:06]DEBUG : Exit 0
Error:
name 'error' is not defined

il y a une variable appelée error qui n’est pas définie dans un de tes fichiers. Je ne vois pas ce qui a pu causer cela, serait il possible que tu me donnes accès à ton jeedom pour vérifier qq trucs sur le plugin? Si oui, passes moi les info en message privé

Ca c’est un truc avec Python,

1 « J'aime »

Bonjour,
J’ai passé pas mal de temps à débuguer le plugin, les dépendances du plugin ne son pas forcément à jour… il est nécessaire de lancer les commandes ssh similaires à :

pip install six
pip install pyserial
pip install setuptools
pip install requests
pip install pyudev

doivent devenir :

pip3 install six
pip3 install pyserial
pip3 install setuptools
pip3 install requests
pip3 install pyudev

En fait le plugin,écrit en python 2 (avec des prérequis utilisant la commande pip), a été porté en python 3 (les prérequis manquant doivent être relancer avec la commande pip3 et non pip)…
Si ça peut aider…
Tout le monde ne rencontre pas le problème si l’installe est ancienne.
Mais pour les installations d’il y a un an ou 2, elles peuvent être concernées.
++

Les versions stables et bêta aujourd’hui sont en python 3

Oui mais le script d’installation des dépenses dans le plugin (canal stable) ne le sont pas.
J’ai vérifier sur mon installation (version du plugin : 2023-01-27 01:02:30).

J’ai eu ce cas précis sur une installe : pip3 install pyserial à permit de résoudre se problème.
Et en cherchant pourquoi les dépendances ne l’installe pas j’ai découvert
quelles font un pip install pyserial soit une dépendances installé en python 2 alors que le code est en python3.

depuis jeedom 4.2 l’install se fait via le fichier packages.json et il est bien en pip3:

{
  "apt" : {
    "python3-ftdi1" : {}
  },
  "pip3" :{
    "pylibftdi" : {},
    "six" : {},
    "pyserial" : {},
    "setuptools" : {},
    "requests" : {},
    "pyudev" : {}
  }
}

Même l’ancienne méthode avec install_apt.sh prend le pip3 (function pip_install):

#!/bin/bash
PROGRESS_FILE=/tmp/jeedom/teleinfo/dependance
PROGRESS_FILE=$1
touch ${PROGRESS_FILE}
echo 0 > ${PROGRESS_FILE}
function apt_install {
  sudo apt-get -y install "$@"
  if [ $? -ne 0 ]; then
    echo "could not install $1 - abort"
    rm ${PROGRESS_FILE}
    exit 1
  fi
}
function pip_install {
  sudo pip3 install --upgrade "$@"
  if [ $? -ne 0 ]; then
    echo "could not install $p - abort"
    rm ${PROGRESS_FILE}
    exit 1
  fi
}
#echo "Prérequis python3"
echo 10 > ${PROGRESS_FILE}
#apt_install python3
#apt_install python3-pip
echo "Lancement de l'installation/mise à jour des dépendances Téléinfo"
echo "Raffraichissement du système"
sudo apt-get update
echo 20 > ${PROGRESS_FILE}
echo "Installation de la librairie ftdi pour modem 2 compteurs"
#sudo apt-get -y install python3-ftdi
sudo apt-get -y install python3-ftdi1
#pip_install pyftdi
pip_install pylibftdi
echo 30 > ${PROGRESS_FILE}
#pip_install python-ftdi1
echo 40 > ${PROGRESS_FILE}
echo "Installation de la librairie serial"
#pip_install serial
sudo pip uninstall -y serial
pip_install six
#apt_install python-serial
pip_install pyserial
pip_install setuptools
pip_install requests
pip_install pyudev
echo 50 > ${PROGRESS_FILE}
echo "Mise à jour de cmdline ou inittab suivant système"
if [ -e /dev/ttyAMA0 ];  then
    sed -i 's/console=ttyAMA0,115200//; s/kgdboc=ttyAMA0,115200//' /boot/cmdline.txt
    if [ -e /etc/inittab ]; then
        sed -i 's|[^:]*:[^:]*:respawn:/sbin/getty[^:]*ttyAMA0[^:]*||' /etc/inittab
    fi
    echo "Désactivation de la sortie serie vers la console"
    sudo systemctl stop serial-getty@ttyAMA0.service
    sudo systemctl disable serial-getty@ttyAMA0.service
fi
echo 100 > ${PROGRESS_FILE}
echo "Everything is successfully installed!"
rm ${PROGRESS_FILE}

Y a un truc que j’ai loupé?

Alors c’est moi qui ai du louper un truc à la lecture du code… méacoulpa.
Cependant ce que je peux témoigner c’est que si pyserial sur python 2 est présent, l’nstallation des dépendances ne permets pas de réinstaller pyserial en python 3.
En tout cas désolé pour « la fausse alerte » mais je pense que les personnes qui avaient un problème de versionning python sans le savoir, pourront le régler en lançant manuellement les commandes indiquées.
++

Ah ne te méprends pas sur ce que j’ai écrit, je cherchais à voir si je n’avais pas loupé un truc qq part et je suis preneur de toutes les remontées.

1 « J'aime »