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

Code : Tout sélectionner

http://mon_ip:8060/json.htm?type=settings
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
;)