Table counterCalendar
Re: Table counterCalendar
La ligne d'erreur indique un problème de calcul avec une valeur booléenne. Le pense que faire variable = os.execute("curl -s etc ...) retourne vrai ou faux si le script s'est bien exécuter ou pas. Mais pas la valeur calculée par le script.
Fais peut-être une recherche avec curl -s sur le forum : tu trouveras peut-être des exemples.
Fais peut-être une recherche avec curl -s sur le forum : tu trouveras peut-être des exemples.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Table counterCalendar
Ok j'ai trouvé l'instruction io.popen qui semble fonctionner et me permet de récupérer la valeur de mon compteur.
la valeur est fournie sous forme d'une chaine comme ceci "1.690"
je n'arrive pas a faire la conversion et la coercition ne fonctionne pas..
le script:
le message d'erreur du log:
"2021-04-18 10:58:24.970 Status: LUA: "1.690"
2021-04-18 10:58:24.970
2021-04-18 10:58:24.861 Error: EventSystem: in /home/kan/domoticz/scripts/lua/script_device_compteurjour.lua: .../kan/domoticz/scripts/lua/script_device_compteurjour.lua:7: attempt to perform arithmetic on a nil value (global 'kw_jour')
la valeur est fournie sous forme d'une chaine comme ceci "1.690"
je n'arrive pas a faire la conversion et la coercition ne fonctionne pas..
le script:
Code : Tout sélectionner
commandArray = {}
local handle = io.popen("curl -s 'http://raspberrypi:8080/json.htm?type=graph&sensor=counter&idx=9&range=week' | jq .result[7].v")
local nrj_jour = handle:read("*a")
handle:close()
print (nrj_jour)
kw_jour = tonumber(nrj_jour)
euro_jour= kw_jour*uservariables[prixKWh]
msg = 'la valeur euro du jour est'..euro_jour..'Euros'
print (msg)
return commandArray
"2021-04-18 10:58:24.970 Status: LUA: "1.690"
2021-04-18 10:58:24.970
2021-04-18 10:58:24.861 Error: EventSystem: in /home/kan/domoticz/scripts/lua/script_device_compteurjour.lua: .../kan/domoticz/scripts/lua/script_device_compteurjour.lua:7: attempt to perform arithmetic on a nil value (global 'kw_jour')
Re: Table counterCalendar
La ligon d'erreur sans aucune information n'est pas normale. Je ne suis pas sur que nrj_jour ait bien une valeur.
Pourrais-tu modifier ton print en affichant le nom de la variable :
Pourrais-tu modifier ton print en affichant le nom de la variable :
Code : Tout sélectionner
print ("nrj_jour = "..nrj_jour)Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Table counterCalendar
oui bien sur...
"2021-04-18 13:43:02.229 Status: LUA: nrj_jour="4.871"
2021-04-18 13:43:02.229
2021-04-18 13:43:02.066 Error: EventSystem: in /home/kan/domoticz/scripts/lua/script_device_compteurjour.lua: .../kan/domoticz/scripts/lua/script_device_compteurjour.lua:7: attempt to perform arithmetic on a nil value (global 'kw_jour')"
la valeur "nrj_jour" est bien acquise ("4.871" ) et c'est une "string"! Mais pas moyen de la convertir en nombre!
l'operation "tonumber" donne une valeur nulle.
une idée?
Merci
"2021-04-18 13:43:02.229 Status: LUA: nrj_jour="4.871"
2021-04-18 13:43:02.229
2021-04-18 13:43:02.066 Error: EventSystem: in /home/kan/domoticz/scripts/lua/script_device_compteurjour.lua: .../kan/domoticz/scripts/lua/script_device_compteurjour.lua:7: attempt to perform arithmetic on a nil value (global 'kw_jour')"
la valeur "nrj_jour" est bien acquise ("4.871" ) et c'est une "string"! Mais pas moyen de la convertir en nombre!
l'operation "tonumber" donne une valeur nulle.
une idée?
Code : Tout sélectionner
commandArray = {}
local handle = io.popen("curl -s 'http://raspberrypi:8080/json.htm?type=graph&sensor=counter&idx=9&range=week' | jq .result[7].v")
local nrj_jour = handle:read("*a")
handle:close()
print ("nrj_jour="..nrj_jour)
kw_jour = tonumber(nrj_jour)
euro_jour= kw_jour*uservariables[prixKWh]
msg = 'la valeur euro du jour est'..euro_jour..'Euros'
print (msg)
return commandArray
Re: Table counterCalendar
Le calcul se fait sur tu forces la valeur en indiquant directement kw_jour=4,871 ?
Ce ne serait pas une histoire de point à la place de la virgule qui bloquerait la conversion en nombre ?
Ce ne serait pas une histoire de point à la place de la virgule qui bloquerait la conversion en nombre ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Table counterCalendar
C'est pas plutôt les guillemets le problème ?"2021-04-18 13:43:02.229 Status: LUA: nrj_jour="4.871"
Re: Table counterCalendar
si je force la valeur comme tu le suggères et que je corrige une erreur de syntaxe sur uservariables ['prixKWh']
il faut des apostrophes autour du nom de la variable...
j'ai le résultat:
2021-04-18 14:38:36.994 Status: LUA: nrj_jour="5.996"
2021-04-18 14:38:36.994
2021-04-18 14:38:36.994 Status: LUA: prix KWh=0.56
2021-04-18 14:38:36.994 Status: LUA: la valeur euro du jour est 2.72776Euros
donc j'en suis ramené a convertir le contenu de ma variable nrj_jour --> "5,996" en nombre!
je cherche...En effet le résultat s'affiche avec une virgule alors que le séparateur décimal doit être représenté par un point..
il y a une piste.
il faut des apostrophes autour du nom de la variable...
Code : Tout sélectionner
commandArray = {}
local handle = io.popen("curl -s 'http://raspberrypi:8080/json.htm?type=graph&sensor=counter&idx=9&range=week' | jq .result[7].v")
local nrj_jour = handle:read("*a")
handle:close()
print ("nrj_jour="..nrj_jour)
kw_jour = 4.871
print ("prix KWh="..uservariables['prixKWh'])
euro_jour= kw_jour* uservariables['prixKWh']
msg = 'la valeur euro du jour est '..euro_jour..'Euros'
print (msg)
return commandArray
2021-04-18 14:38:36.994 Status: LUA: nrj_jour="5.996"
2021-04-18 14:38:36.994
2021-04-18 14:38:36.994 Status: LUA: prix KWh=0.56
2021-04-18 14:38:36.994 Status: LUA: la valeur euro du jour est 2.72776Euros
donc j'en suis ramené a convertir le contenu de ma variable nrj_jour --> "5,996" en nombre!
je cherche...En effet le résultat s'affiche avec une virgule alors que le séparateur décimal doit être représenté par un point..
il y a une piste.
Re: Table counterCalendar
Merci je reçois la valeur telle quelle avec les guillemets donc effectivement c'est peut être ca le problème mais comment virer les guillemets...je cherche merci pour la piste...Neutrino a écrit : 18 avr. 2021, 14:20C'est pas plutôt les guillemets le problème ?"2021-04-18 13:43:02.229 Status: LUA: nrj_jour="4.871"
Re: Table counterCalendar
Trouvé! Merci les amis pour votre aide precieuse...
j'utilise la commande string.sub (nrj_jour,2, 6) qui me vire les 2 guillemets
comme ceci..
le resultat:
2021-04-18 15:43:13.355 Status: LUA: kwh_jour=6.993
2021-04-18 15:43:13.356 Status: LUA: prix KWh=0.56
2021-04-18 15:43:13.356 Status: LUA: la valeur euro du jour est 3.91608Euros
j'utilise la commande string.sub (nrj_jour,2, 6) qui me vire les 2 guillemets
comme ceci..
Code : Tout sélectionner
commandArray = {}
local handle = io.popen("curl -s 'http://raspberrypi:8080/json.htm?type=graph&sensor=counter&idx=9&range=week' | jq .result[7].v")
local nrj_jour = handle:read("*a")
handle:close()
print ("nrj_jour="..nrj_jour)
kwh_jour = string.sub(nrj_jour,2,6)
print ("kwh_jour="..kwh_jour)
--local kwh_jour = tonumber(nrj_jour)
print ("prix KWh="..uservariables['prixKWh'])
local euro_jour= kwh_jour* uservariables['prixKWh']
msg = 'la valeur euro du jour est '..euro_jour..'Euros'
print (msg)
return commandArray
2021-04-18 15:43:13.355 Status: LUA: kwh_jour=6.993
2021-04-18 15:43:13.356 Status: LUA: prix KWh=0.56
2021-04-18 15:43:13.356 Status: LUA: la valeur euro du jour est 3.91608Euros
Re: Table counterCalendar
Maintenant qu'est-ce qui ce passe si ta consommation est de 10.000 ?
https://www.lua.org/pil/20.html 
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos