Page 2 sur 4
Re: Table counterCalendar
Publié : 13 avr. 2021, 19:41
par Keros
Je ne suis pas fou, ton script n'était pas dans ton message et tu l'as rajouté suite à ma remarque.
On va pouvoir avancer
Je pense que ton problème est que tu demandes une valeur de v, mais tu en as plusieurs possibles dans le Json.
Qu'est ce que cela donne si tu essayes :
Re: Table counterCalendar
Publié : 13 avr. 2021, 19:41
par denis_brasseur
Pas grave, t'inquiète !
Code : Tout sélectionner
config= assert(io.popen (curl.."http://raspberrypi:8080/json.htm?type=graph&sens$
Je pense qu'il manque déjà un bout de code dans ta ligne de commande.
Re: Table counterCalendar
Publié : 13 avr. 2021, 21:27
par knasson
oui il manque un bout c'est un copier coller qui a mal fonctionné:
la ligne complète est la suivante
config= assert(io.popen (curl.."
http://raspberrypi:8080/json.htm?type=g ... ange=month"))
désolé ...
mais je pense en effet que la raison est que il y a plusieurs valeurs V dans le résultat, je vais chercher a sélectionner cette valeur..avec peut être la syntaxe proposé par Keros..je vais tester...
Re: Table counterCalendar
Publié : 13 avr. 2021, 21:39
par knasson
quand je rajoute
j'obtiens cela dans le log:
"2021-04-13 21:31:34.163 Error: EventSystem: in /home/kan/domoticz/scripts/lua/script_device_compteurjour.lua: .../kan/domoticz/scripts/lua/script_device_compteurjour.lua:9: <name> expected near '['"
je vais essayer autrement..
Re: Table counterCalendar
Publié : 13 avr. 2021, 21:46
par Keros
Je pense qu'il te manque un point entre le jsonValeur et [1] ?
Pour info : tu as ta balise code qui est mal fermée et l'affichage de la fin de ton message est bizarre.
Re: Table counterCalendar
Publié : 13 avr. 2021, 22:02
par knasson
Ok j'avais bien le point dans le script donc rien de changé...
si j'enlève [1]
voila ce que j'obtiens sur le log
2021-04-13 22:00:17.296 Error: EventSystem: in /home/kan/domoticz/scripts/lua/script_device_compteurjour.lua: .../kan/domoticz/scripts/lua/script_device_compteurjour.lua:11: attempt to concatenate a nil value (global 'cumul_jour')
Re: Table counterCalendar
Publié : 13 avr. 2021, 22:31
par Keros
Normalement le code devrait être result
Ou
Mais ce que je ne comprends pas, c'est que tu devrais avoir des "" autour des noms de variables :
Code : Tout sélectionner
{
"ValueQuantity": "",
"ValueUnits": "",
"counter": "4096.038",
"result": [
{
"c": "3905.098",
"d": "2021-03-31",
"v": "15.700"
},
Quand je le modifie et que je teste sur
https://developer.mozilla.org/en-US/doc ... JSON/parse, ça fonctionne avec :
Code : Tout sélectionner
const json = '{"ValueQuantity": "","ValueUnits": "","counter": "4096.038","result": [{"c": "3905.098","d": "2021-03-31","v": "15.700"}],"status": "OK","title": "Graph counter month"}';
const obj = JSON.parse(json);
console.log(obj.result[0].v);
Attention néanmoins, la table [0] n'existe pas en LUA : ça commence à [1].
Re: Table counterCalendar
Publié : 14 avr. 2021, 10:05
par knasson
avec jsonValeur.result[1].v
2021-04-14 09:48:23.596 Error: EventSystem: in /home/kan/domoticz/scripts/lua/script_device_compteurjour.lua: .../kan/domoticz/scripts/lua/script_device_compteurjour.lua:10: attempt to index a nil value (field 'result')
avec jsonValeur.result[1]["v"]
2021-04-14 09:56:21.422 Error: EventSystem: in /home/kan/domoticz/scripts/lua/script_device_compteurjour.lua: .../kan/domoticz/scripts/lua/script_device_compteurjour.lua:10: attempt to index a nil value (field 'result')
tout se passe comme si "result" était interprété comme une variable vide. Peut être a t il besoin d'être défini?
je regarde..En effet les résultats de la commande json
http://raspberrypi:8080/json.htm?type=g ... ange=month
dans le navigateur donne des valeurs entre "" mais pas les étiquettes.
Merci pour ton aide...en bash je saurai extraire la donnée de domoticz.db de la table Meter_Calendar je vais essayer pour voir ce que ca pourrait donner.
je remets le script testé:
Code : Tout sélectionner
json = (loadfile "/home/kan/domoticz/scripts/lua/JSON.lua")()
commandArray = {}
curl='/usr/bin/curl -m 15 '
config= assert(io.popen (curl.."http://raspberrypi:8080/json.htm?type=graph&sensor=counter&idx=9&range=month"))
blocjson = config:read ('*all')
config:close()
jsonValeur = json:decode(blocjson)
--print (jsonValeur)
cumul_jour = jsonValeur.result[1]"[v]"
msg = 'le cumul production du jour est'..cumul_jour..'kWh'
print (msg)
return commandArray
Re: Table counterCalendar
Publié : 14 avr. 2021, 12:41
par Keros
knasson a écrit : 14 avr. 2021, 10:05
tout se passe comme si "result" était interprété comme une variable vide. Peut être a t il besoin d'être défini?
L'erreur t'indique a Nil Value car le résultat de la recherche Json est vide. Ton Json aurait result écrit entre "", ça fonctionnerait. Et je n'ai pas trouvé d'exemple avec result sans guillements

Re: Table counterCalendar
Publié : 17 avr. 2021, 16:50
par knasson
Apres quelques recherches, lectures etc.. je me suis tourné vers "jq" qui me permet d'obtenir la valeur du compteur que je cherche.
j'écris en ligne de commande dans mon terminal raspian.
Code : Tout sélectionner
curl -s "http://raspberrypi:8080/json.htm?type=graph&sensor=counter&idx=9&range=week" | jq .result[7].v
resultat:
"1.234"
c'est donc bien la valeur de mon cumul journalier donc cette commande fonctionne en bash
je voudrai l'integrer dans lua alors j'ai ecrit
Code : Tout sélectionner
commandArray = {}
nrj_jour = os.execute("curl -s 'http://raspberrypi:8080/json.htm?type=graph&sensor=counter&idx=9&range=week' | jq .result[7].v")
euro_jour= nrj_jour*uservariables[prixKWh]
msg = 'la valeur euro du jour est'..euro_jour..'Euros'
print (msg)
return commandArray
j'obtiens l'erreur suivante:
Code : Tout sélectionner
2021-04-17 16:46:38.690 Error: EventSystem: in /home/kan/domoticz/scripts/lua/script_device_compteurjour.lua: .../kan/domoticz/scripts/lua/script_device_compteurjour.lua:3: attempt to perform arithmetic on a boolean value (global 'nrj_jour')
il semble que le résultat de la ligne 2 n'est pas conforme a ce que j'obtenais dans mon terminal, avez des suggestions de code?