LUA - Status d'un device particulier

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
mma13
Messages : 18
Inscription : 15 sept. 2018, 15:59

LUA - Status d'un device particulier

Message par mma13 »

Bonjour,

Je souhaite retrouver l'ensemble des données d'un device particulier. Je fais référence à :
http://adrIp:port/json.htm?type=devices&rid=169
Dans mon navigateur ça fonctionne parfaitement...
Avec le script lua suivant :

Code : Tout sélectionner

json = assert(loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
local config = assert(io.popen('/usr/bin/curl http://adrIp:port/json.htm?type=devices&rid=169'))
local blocjson = config:read('*all')
config:close()
print(blocjson)
local jsonValeur = json:decode(blocjson)
nom = jsonValeur.result[1].Name
data = jsonValeur.result[1].Data
print("---------------------------------------------")
print(nom.." : "..data)
commandArray = {}
print("---------------------------------------------")
return commandArray
J'obtiens l'ensembles des données des switch...
Du coup jsonValeur.result[1].Name ne pointe pas vers le bon device... y a-t'il une différence entre l'URL dans le navigateur et la manière de l'utiliser dans les scripts ?
Raspberry Pi 3B - Raspbian GNU/Linux 9.4 (stretch)
Domodicz 4.9700 - RFLink USB 433,42 MHz - RFLink Wifi 433,92 MHz (V1.1 - R48)
Stores SOMFY - AVR-X4100W DENON - OTIO EHS-5050 - ESPEasy mega-20180517 (plusieurs types)
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: LUA - Status d'un device particulier

Message par vil1driver »

Salut,

De mémoire j'ai résolu ce souci en évitant le mot json dans les variables

Exemple

local bloc

Au lieu de

local blocjson
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
jackslayter
Messages : 1040
Inscription : 30 sept. 2014, 14:40
Localisation : Isère (38)

Re: LUA - Status d'un device particulier

Message par jackslayter »

j'ai changé les noms et ça ne marche toujours pas

Code : Tout sélectionner

commandArray={}

donnee = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
local config = assert(io.popen('/usr/bin/curl http://IP/json.htm?type=devices&rid=170'))
local bloc = config:read('*all')
config:close()
--print(bloc)
local Valeur = donnee:decode(bloc)
nom = Valeur.result[1].Name
data = Valeur.result[1].Data
print("---------------------------------------------")
print(tostring(nom).." : "..tostring(data))
print("---------------------------------------------")

return commandArray
bizarre ce truc
Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
mma13
Messages : 18
Inscription : 15 sept. 2018, 15:59

Re: LUA - Status d'un device particulier

Message par mma13 »

Merci pour la réponse... mais pas mieux

Code : Tout sélectionner

print("TestDeviceValue")
recup = assert(loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
local config=assert(io.popen('/usr/bin/curl http://adrIp:port/json.htm?type=devices&rid=169'))
local bloc = config:read('*all')
config:close()
print(bloc)
local valeur = recup:decode(bloc)
nom = valeur.result[1].Name
data = valeur.result[1].Data
print("---------------------------------------------")
print(nom.." : "..data)
commandArray = {}
print("---------------------------------------------")
return commandArray
Raspberry Pi 3B - Raspbian GNU/Linux 9.4 (stretch)
Domodicz 4.9700 - RFLink USB 433,42 MHz - RFLink Wifi 433,92 MHz (V1.1 - R48)
Stores SOMFY - AVR-X4100W DENON - OTIO EHS-5050 - ESPEasy mega-20180517 (plusieurs types)
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: LUA - Status d'un device particulier

Message par vil1driver »

Tu peux te rabattre sur la fonction que j'utilise

Voir ma signature

Code : Tout sélectionner

-- récupère les infos json du périphérique
-- usage
-- local lampe = jsonInfos('ma lampe')
-- print(lampe.Name)
-- print(lampe.Status)
-- etc..
function jsonInfos(device)
	local rid = assert(io.popen(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=devices&rid='..otherdevices_idx[device]..'"'))
	local list = rid:read('*all')
	rid:close()
	return json:decode(list).result[1]
end
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
mma13
Messages : 18
Inscription : 15 sept. 2018, 15:59

Re: LUA - Status d'un device particulier

Message par mma13 »

Ok, je vais regarder
Raspberry Pi 3B - Raspbian GNU/Linux 9.4 (stretch)
Domodicz 4.9700 - RFLink USB 433,42 MHz - RFLink Wifi 433,92 MHz (V1.1 - R48)
Stores SOMFY - AVR-X4100W DENON - OTIO EHS-5050 - ESPEasy mega-20180517 (plusieurs types)
mma13
Messages : 18
Inscription : 15 sept. 2018, 15:59

Re: LUA - Status d'un device particulier

Message par mma13 »

Effectivement ça fonctionne... même si ça me frustre un peu ;-)
Bon j'avance dans mes découvertes... Saurais-tu me dire :
- Est-ce que je peu modifier certaines valeurs dans la structure renvoyée pour, par exemple modifier ce que je suppose être des coefficients ?
- Comment retrouver les valeurs brutes envoyées par mon RFLink à Domoticz... toujours pour analyser mon périphériques Revolt...
EHS-5050 RFLink.JPG
EHS-5050 RFLink.JPG (12.63 Kio) Consulté 4873 fois
Par avance merci... Je vais jeter également un œil à tes différentes fonctions...
Raspberry Pi 3B - Raspbian GNU/Linux 9.4 (stretch)
Domodicz 4.9700 - RFLink USB 433,42 MHz - RFLink Wifi 433,92 MHz (V1.1 - R48)
Stores SOMFY - AVR-X4100W DENON - OTIO EHS-5050 - ESPEasy mega-20180517 (plusieurs types)
Répondre