Régression Codes Python (appelé via DZVents)

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
piafou31
Messages : 6
Inscription : 08 juil. 2020, 22:46

Régression Codes Python (appelé via DZVents)

Message par piafou31 »

Bonjour à tous,

J'ai des problèmes d'exécution de mes codes python depuis la version 2022.2 (il me semble).
Qui se manifeste aussi avec la 2023.1

Code python nommé "getKonics_FBX-HC-Power"
(Vise à récupérer les infos de mes "wallplug" Konyks" via l'API Tuya et le plugin python installé "tinytuya")
Appel :
  • Via trigger "Time"
Code (extrait) qui fonctionnait auparavant :

Code : Tout sélectionner

import tuyapower
DEBUG = True

def sendKonicsPower2Variable( myPlugID , myPlugIP , myPlugKey , myPlugVers , myPlugVariableName , myPlugDeviceName):
    "This sends Konics plug power into dedicated User Variable"
    
    (on, w, mA, V, err) = tuyapower.deviceInfo(myPlugID,myPlugIP,myPlugKey,myPlugVers)
    if DEBUG==True : DEVS.Log('~~~~~~ KONICS_PLUG ')
:

Les erreurs survenues :

2023-03-13 23:22:01.010 Error: NameError: name 'DEBUG' is not defined
ou
2023-03-13 23:22:01.010 Error: NameError: name 'tuyapower' is not defined

Code (extrait) qui fonctionne maintenant:

Code : Tout sélectionner

import tuyapower
DEBUG = True

def sendKonicsPower2Variable( myPlugID , myPlugIP , myPlugKey , myPlugVers , myPlugVariableName , myPlugDeviceName , localDEBUG ):
    "This sends Konics plug power into dedicated User Variable"
    import tuyapower
    (on, w, mA, V, err) = tuyapower.deviceInfo(myPlugID,myPlugIP,myPlugKey,myPlugVers)
    if localDEBUG==True : DEVS.Log('~~~~~~ KONICS_PLUG ')
:

Grosso modo, je suis obligé de déclarer mes imports en local de chacune de mes fonctions.
Et idem pour les variables : une variable globale n'est plus reconnue à l'intérieur d'une fonction, je suis obligé de la passer via les arguments de la fonction.

Jusque-là, je pourrais modifier.
Mais j'ai le même problème pour les fonctions avec les fonctions : une fonction appelée à l'intérieur d'une autre fonction lève l'erreur suivante :
2023-03-13 23:22:01.010 Error: NameError: name 'get_device_value' is not defined

Je ne sais plus quoi faire, j'ai parcouru les divers forums + les "ISsues" du GitHub, mais je ne trouve pas de solution.
Merci d'avance pour vos astuces / aides / conseils (je ne suis pas développeur Python à la base, je précise !! )
Répondre