Utilisation fonction de modules.LUA

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 <\>.
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Utilisation fonction de modules.LUA

Message par Doudy »

Bonjour,

J'essaie de récupérer la valeur d'un champ JSON via LUA.
J'essaie de récupérer la valeur "Speed" de mon IDX=43
J'utilise la fonction de la ligne 349 : function jsonInfos(device)
Mes users settings en début de modules.LUA :

Code : Tout sélectionner

-- domoticz
domoticzIP = '192.168.1.xxx'              -- 127.0.0.1'
domoticzPORT = '80yy'
domoticzUSER = 'pi'				-- nom d'utilisateur
domoticzPSWD = 'zzzzzz'     		-- mot de pass
domoticzPASSCODE = ''			-- pour interrupteur protégés
domoticzURL = 'http://'..domoticzIP..':'..domoticzPORT
Mon script :

Code : Tout sélectionner

-- script_device_Wind_Speed.lua
--
-- récupère les infos json du périphérique 43
-- domoticz

commandArray = {}
if (devicechanged['WH2600-Wind']) then
deviceNum = 43
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
local debug = true
print("test::::::")
print(domoticzURL)
print(domoticzUSER)
print(domoticzPSWD)
print(deviceNum)

jsonInfos(deviceNum)

end
commmandArray = {}
print('****************')
return commandArray
L'affichage via print de contrôle des variables est correct dans le log :

Code : Tout sélectionner

 
2019-01-12 10:11:18.420 Status: LUA: test::::::
2019-01-12 10:11:18.420 Status: LUA: http://192.168.1.xxx:80yy
2019-01-12 10:11:18.420 Status: LUA: pi
2019-01-12 10:11:18.420 Status: LUA: zzzzzz
2019-01-12 10:11:18.420 Status: LUA: 43 
Par contre j'obtiens le message suivant :

Code : Tout sélectionner

2019-01-12 10:12:14.041 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_device_Wind_Speed_ter.lua: /home/pi/domoticz/scripts/lua/modules.lua:350: attempt to concatenate field '?' (a nil value)
Ligne 350 du module lua ?

Code : Tout sélectionner

local rid = assert(io.popen(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=devices&rid='..otherdevices_idx[device]..'"'))
Chercher l'intrus !
Une idée ?
Merc
;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Utilisation fonction de modules.LUA

Message par vil1driver »

Salut,

La fonction possède des commentaires sur comment s'en servir :shock:

A commencer par utiliser le nom du device et non son idx..

En suite la fonction retourne une table
Il faut choisir quelle valeur afficher parmi l'ensemble
-- récupère les infos json du périphérique
-- usage
-- local lampe = jsonInfos('ma lampe')
-- print(lampe.Name)
-- print(lampe.Status)
-- etc..
Autrement il y aurait cette méthode
viewtopic.php?p=5146#p5146
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
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: Utilisation fonction de modules.LUA

Message par Doudy »

vil1driver a écrit : 12 janv. 2019, 10:34 La fonction possède des commentaires sur comment s'en servir :shock:
:oops:
vil1driver a écrit : 12 janv. 2019, 10:34 A commencer par utiliser le nom du device et non son idx.. :shock:
;)
vil1driver a écrit : 12 janv. 2019, 10:34 Il faut choisir quelle valeur afficher parmi l'ensemble :shock:
:idea:

Voici, le résultat :

Code : Tout sélectionner

-- script_device_Wind_Speed.lua
--
-- récupère les infos json du périphérique 43 - WH2600-Wind
-- domoticz
-- https://github.com/vil1driver/lua/blob/master/modules.lua

local deviceName = 'WH2600-Wind'
commandArray = {}
if (devicechanged[deviceName]) then
	dofile('/home/pi/domoticz/scripts/lua/modules.lua')
	jsonInfos(deviceName)

	local Name = jsonInfos(deviceName)
	local Wind_Speed = (Name.Speed)

	--print("Name.Speed :" .. Name.Speed) --test
	print("Wind_Speed :" .. Wind_Speed)
end
commmandArray = {}
return commandArray

Code : Tout sélectionner

2019-01-13 10:08:35.733 Status: LUA: Wind_Speed :6.5
Merci vil1driver.
Toujours de bon conseil.
;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Répondre