Page 1 sur 1
json et récupération des valeurs de "Paramètres" (settings)
Publié : 17 août 2020, 05:04
par denis_brasseur
permet de récupérer des valeurs comme celle ci :
{
"AcceptNewHardware": 0,
"ActiveTimerPlan": 0,
---
"ElectricVoltage": 230,
---
"EmailFrom": "
mon_ip@gmail.com"
}
Pour récupérer une valeur en particulier, ElectricVoltage par exemple, plutôt simple :
Code : Tout sélectionner
local settings = assert(io.popen(curl..'-u "mon_ip:8060/json.htm?type=settings"'))
local list = settings:read('*all')
settings:close()
local sValue = json:decode(list).ElectricVoltage
Je me suis mis dans l'idée d'une fonction générique permettant de récupérer la valeur envoyer en paramètre via key :
Code : Tout sélectionner
--Pref('ElectricVoltage')
function Pref(key)
local settings = assert(io.popen(curl..'-u "mon_ip:8060/json.htm?type=settings"'))
local list = settings:read('*all')
settings:close()
local sValue = json:decode(list).ElectricVoltage
return sValue
end
Problème, comment concaténer la valeur envoyer en parametre
local sValue = json:decode(list).key
afin d'obtenir ainsi
local sValue = json:decode(list).ElectricVoltage
Re: json et récupération des valeurs de "Paramètres" (settings)
Publié : 17 août 2020, 06:15
par Keros
J'utilise ce type de formatage avec le i qui est une variable :
Code : Tout sélectionner
[code]json:decode(list).hourly[i]["rain"]
json:decode(list).daily[i+1].dt
Re: json et récupération des valeurs de "Paramètres" (settings)
Publié : 17 août 2020, 10:23
par vil1driver
Salut,
sans avoir testé je dirais
Code : Tout sélectionner
--Pref('ElectricVoltage')
function Pref(key)
local settings = assert(io.popen(curl..'-u "mon_ip:8060/json.htm?type=settings"'))
local list = settings:read('*all')
settings:close()
local sValue = json:decode(list)
for name, value in pairs sValue do
if name == key then
return value
end
end
end
Re: json et récupération des valeurs de "Paramètres" (settings)
Publié : 17 août 2020, 10:56
par denis_brasseur
Il n'aime pas ta boucle !
Error: EventSystem: in toute_les_5_mn: [string "-- chargement des modules ..."]:30: 'do' expected near 'sValue'
Re: json et récupération des valeurs de "Paramètres" (settings)
Publié : 17 août 2020, 10:58
par boum
En Lua, nomTable.nomClef est l'équivalent de nomTable["nomClef"]
Code : Tout sélectionner
--Pref('ElectricVoltage')
function Pref(key)
local settings = assert(io.popen(curl..'-u "mon_ip:8060/json.htm?type=settings"'))
local list = settings:read('*all')
settings:close()
local jsonTable = json:decode(list)
local sValue = jsonTable[key]
return sValue
end
(et pour l'erreur, c'est pairs(sValue) mais itérer sur la table est inutile si tu connais l'index)
Re: json et récupération des valeurs de "Paramètres" (settings)
Publié : 17 août 2020, 11:09
par vil1driver
Probablement plus simple ainsi effectivement
Pour l'erreur c'est surtout que j'avais oublié le do (que j'ai rajouté plus tard mais tu as du voir mon message avant ça)
[Resolu] json et récupération des valeurs de "Paramètres" (settings)
Publié : 17 août 2020, 11:23
par denis_brasseur
@boum : Nickel, cela fonctionne avec ta méthode, merci
@vil1driver : Ce n'est pas le do le probleme, mais bien la parenthèse manquante pairs(sValue), ça fonctionne également.
merci à vous 2, efficace et clair.
Re: json et récupération des valeurs de "Paramètres" (settings)
Publié : 17 août 2020, 11:24
par vil1driver