Page 2 sur 16

Re: gazpar

Publié : 12 mars 2020, 11:34
par Chaussette
Bonjour,

J'ai voulu intégrer ton système sur Domoticz mais j'ai une erreur lorsque j'exécute domoticz_gaspar.sh

Je suis sur un Pi 4 avec le dernier Raspbian.

Voici la callstack :
  • /home/pi/domoticz/plugins/Gazpar/node_modules/winston-transport/legacy.js:18
    throw new Error('Invalid transport, must be an object with a log method.');
    ^
  • Error: Invalid transport, must be an object with a log method.
  • at new LegacyTransportStream (/home/pi/domoticz/plugins/Gazpar/node_modules/winston-transport/legacy.js:18:11)
  • at DerivedLogger.add (/home/pi/domoticz/plugins/Gazpar/node_modules/winston/lib/winston/logger.js:345:11)
  • at Object.winston.(anonymous function).args [as add] (/home/pi/domoticz/plugins/Gazpar/node_modules/winston/lib/winston.js:110:68)
  • at Object.<anonymous> (/home/pi/domoticz/plugins/Gazpar/domoticz_gaspar.js:121:8)
  • at Module._compile (internal/modules/cjs/loader.js:689:30)
  • at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
  • at Module.load (internal/modules/cjs/loader.js:599:32)
  • at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
  • at Function.Module._load (internal/modules/cjs/loader.js:530:3)
  • at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)

Lorsque j'ai installé winston, j'ai eu des warnings sur des versions obsolètes (je dois pouvoir désinstaller et réinstaller pour copier ces warnings). Je pense que c'est lié...

Re: gazpar

Publié : 12 mars 2020, 12:20
par epierre
Hello,

essayes ceci:

sudo npm install -g npm

puis réessayes

Re: gazpar

Publié : 12 mars 2020, 12:42
par Chaussette
Je suis dans le dossier '/home/pi/domoticz/plugins/Gazpar'

J'ai fait cette commande, ça a mis à jour avec quelques warnings :

npm WARN npm npm does not support Node.js v10.15.2
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9.
npm WARN npm You can find the latest version at https://nodejs.org/

Le soucis a changé, j'ai ça maintenant :
  • internal/modules/cjs/loader.js:583
    throw err;
    ^
  • Error: Cannot find module 'winston'
  • etc. etc.
J'ai également refait 'npm install winston' (sans le sudo) et j'ai quelques warnings lors de cette commande :

npm WARN saveError ENOENT: no such file or directory, open '/home/pi/domoticz/plugins/Gazpar/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/home/pi/domoticz/plugins/Gazpar/package.json'

Mais l'exécution de 'domoticz_gaspar.sh' retourne le même soucis, il ne trouve plus le package winston.

J'ai regardé, dans mon dossier courant j'ai un fichier 'package-lock.json' mais pas de fichier 'package.json'. Je ne connais pas du tout mpn, j'ai l'impression que l'emplacement où l'on se trouve (le PWD) est important.

Merci pour le début d'aide en tout cas !

Edit : j'ai lu la doc NPM, je comprends mieux ce que c'est et la manip que tu m'as fait faire.
Voici une info qui peut éventuellement servir, le résultat de 'npm prefix' : /home/pi/domoticz/plugins/Gazpar

Re: gazpar

Publié : 12 mars 2020, 12:59
par Chaussette
J'avance puis je recule :D

J'ai fouillé le dossier '/domoticz/plugins/Gazpar/node_modules' et l'élément 'winston' était un lien symbolique pointant sur lui même (!).
Je l'ai supprimé, j'ai refait un 'npm install winston', ça m'a bien repris le dossier winston. Ca, c'est l'avancée.

Le recul, c'est j'ai de nouveau la même erreur qu'au début :
/home/pi/domoticz/plugins/Gazpar/node_modules/winston-transport/legacy.js:18
throw new Error('Invalid transport, must be an object with a log method.');

Re: gazpar

Publié : 12 mars 2020, 13:42
par epierre
oui va dans /home/pi/domoticz/plugins/Gazpar/

et fais un "npm i"

de mémoire ça installe les dépendances basées sur le packages.json

c'est le bazar en ce moment node et npm ...

Re: gazpar

Publié : 12 mars 2020, 14:15
par Chaussette
On avance !

Comportement étrange : après avoir fait 'npm i', le script 'domoticz_gaspar.sh' s'est exécuté et fini sans retour visuel (pas d'erreur, pas de OK, aucune ligne printée).

J'ai regardé 'domotics_gaspar.log' et j'ai ceci :
2020-03-12 14:03:12,882 logging in as ****...
2020-03-12 14:03:24,189 logged in successfully!
2020-03-12 14:03:24,190 retrieving data...
Traceback (most recent call last):
File "/home/pi/domoticz/plugins/Gazpar/gaspar_json.py", line 179, in <module>
main()
File "/home/pi/domoticz/plugins/Gazpar/gaspar_json.py", line 124, in main
dtostr(today))
File "/home/pi/domoticz/plugins/Gazpar/gaspar.py", line 150, in get_data_per_month
return _get_data(session, 'Mois', start_date, end_date)
File "/home/pi/domoticz/plugins/Gazpar/gaspar.py", line 300, in _get_data
d = md.group(1)
AttributeError: 'NoneType' object has no attribute 'group'


J'ai effacé le log et exécuté à nouveau 3 fois 'domoticz_gaspar.sh'. Et là, j'ai de nouveau la même callstack que dans mon premier message. J'ai quand même regardé le fichier de log qui s'est recréé et j'ai ceci dedans :
2020-03-12 14:04:13,305 logging in as ****...
2020-03-12 14:04:22,554 logged in successfully!
2020-03-12 14:04:22,554 retrieving data...
2020-03-12 14:04:30,345 got data!
2020-03-12 14:04:47,526 logging in as ****...
2020-03-12 14:04:55,437 logged in successfully!
2020-03-12 14:04:55,437 retrieving data...
2020-03-12 14:05:05,668 got data!
2020-03-12 14:05:11,913 logging in as ****...
2020-03-12 14:05:17,628 logged in successfully!
2020-03-12 14:05:17,628 retrieving data...
2020-03-12 14:05:25,237 got data!


J'ai des fichiers 'export_days_values.json' et 'export_months_values.json' qui ont été créés et les valeurs contenues dedans sont bonnes.

Par contre, ça n'a pas mis à jour les données dans Domoticz et maintenant le widget virtuel 'P1 Smart Meter, Gas' clignote en rouge :?:

Je pense qu'on n'est pas loin !

Re: gazpar

Publié : 12 mars 2020, 14:51
par epierre
ça le lance tout seul ?

réessaye :

npm install

Re: gazpar

Publié : 12 mars 2020, 15:05
par Chaussette
Je ne suis pas sûr d'avoir compris le "ça le lance tout seul ?".
Je n'ai pas ajouté de cron encore.

J'ai fait 'npm install', ça me met les mêmes messages à chaque fois :
npm WARN saveError ENOENT: no such file or directory, open '/home/pi/domoticz/plugins/Gazpar/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/home/pi/domoticz/plugins/Gazpar/package.json'
npm WARN Gazpar No description
npm WARN Gazpar No repository field.
npm WARN Gazpar No README data
npm WARN Gazpar No license field.

audited 131 packages in 2.22s
found 0 vulnerabilities

J'ai viré le log et les export_*.json

J'ai lancé le script sh :
$ ./domoticz_gaspar.sh
/home/pi/domoticz/plugins/Gazpar/node_modules/winston-transport/legacy.js:18
throw new Error('Invalid transport, must be an object with a log method.');
^

Error: Invalid transport, must be an object with a log method.
at new LegacyTransportStream (/home/pi/domoticz/plugins/Gazpar/node_modules/winston-transport/legacy.js:18:11)
at DerivedLogger.add (/home/pi/domoticz/plugins/Gazpar/node_modules/winston/lib/winston/logger.js:345:11)
at Object.winston.(anonymous function).args [as add] (/home/pi/domoticz/plugins/Gazpar/node_modules/winston/lib/winston.js:110:68)
at Object.<anonymous> (/home/pi/domoticz/plugins/Gazpar/domoticz_gaspar.js:121:8)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)

Malgré ça, ça m'a bien recréé un fichier de log indiquant que tout s'est bien passé, ça m'a recréé les deux 'export_*.json' contenant les bonnes valeurs.

Mon compteur de gaz a l'Idx 45 et il est bien configuré dans 'domoticz_gaspar.cfg'' : DOMOTICZ_ID=45

Mais... le widget n'a pas été mis à jour, il affiche zéro et dans son log, aucune valeur.

Re: gazpar

Publié : 12 mars 2020, 16:19
par epierre
essayes un:

sh -x ./domoticz_gaspar.sh

pour voir ce qui saute

Re: gazpar

Publié : 12 mars 2020, 16:26
par Chaussette
Ca me donne ça :
$ sh -x ./domoticz_gaspar.sh
+ readlink -f ./domoticz_gaspar.sh
+ SCRIPT=/home/pi/domoticz/plugins/Gazpar/domoticz_gaspar.sh
+ dirname /home/pi/domoticz/plugins/Gazpar/domoticz_gaspar.sh
+ BASE_DIR=/home/pi/domoticz/plugins/Gazpar
+ export BASE_DIR
+ CFG_FILE=domoticz_gaspar.cfg
+ LOG_FILE=domoticz_gaspar.log
+ [ -f /home/pi/domoticz/plugins/Gazpar/domoticz_gaspar.cfg ]
+ . /home/pi/domoticz/plugins/Gazpar/domoticz_gaspar.cfg
+ GASPAR_USERNAME=****
+ GASPAR_PASSWORD=****
+ DOMOTICZ_ID=45
+ export GASPAR_USERNAME
+ export GASPAR_PASSWORD
+ export DOMOTICZ_ID
+ update_db
+ PY_SCRIPT=gaspar_json.py
+ PY_SCRIPT=/home/pi/domoticz/plugins/Gazpar/gaspar_json.py
+ python3 /home/pi/domoticz/plugins/Gazpar/gaspar_json.py -o /home/pi/domoticz/plugins/Gazpar
+ [ 0 -eq 0 ]
+ BASE_DIR=/home/pi/domoticz/plugins/Gazpar /usr/bin/nodejs /home/pi/domoticz/plugins/Gazpar/domoticz_gaspar.js 45
/home/pi/domoticz/plugins/Gazpar/node_modules/winston-transport/legacy.js:18
throw new Error('Invalid transport, must be an object with a log method.');
^

Error: Invalid transport, must be an object with a log method.
at new LegacyTransportStream (/home/pi/domoticz/plugins/Gazpar/node_modules/winston-transport/legacy.js:18:11)
at DerivedLogger.add (/home/pi/domoticz/plugins/Gazpar/node_modules/winston/lib/winston/logger.js:345:11)
at Object.winston.(anonymous function).args [as add] (/home/pi/domoticz/plugins/Gazpar/node_modules/winston/lib/winston.js:110:68)
at Object.<anonymous> (/home/pi/domoticz/plugins/Gazpar/domoticz_gaspar.js:121:8)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
+ cat /home/pi/domoticz/plugins/Gazpar/req.sql
+ /usr/bin/sqlite3 /home/pi/domoticz/domoticz.db