Page 1 sur 2

Lua switch propriété

Publié : 04 janv. 2017, 08:52
par Mho
Bonjour,
je me lance dans lua avec Domoticz, mais il me manque des infos, je vous explique j'ai un switch (une télécommande miantech) qui active mon alarme, elle fonctionne très bien, le soucis c'est quand je récupère son état il est indiqué "Open" alors que dans l'interface web j'ai la valeur Disarm, arm home ou arm away.

Mon switch (ma télécommande) a comme nom SetAlarme
J'ai récupéré l'état avec devicechanged['SetAlarme'] ou avec otherdevices['SetAlarme'] il me donne la valeur "Open".

Alors que si je fais une requête JSON on voit en rouge que je récupère bien disarm en status et data:
curl -s "http://192.168.x.xx/json.htm?type=devices&rid=6"
{
"ActTime" : 1483515980,
"ServerTime" : "2017-01-04 08:46:20",
"Sunrise" : "08:18",
"Sunset" : "17:02",
"result" : [
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 100,
"CustomImage" : 0,
"Data" : "Disarm",
"Description" : "",
"Favorite" : 1,
"HardwareID" : 4,
"HardwareName" : "RFXtrx433E",
"HardwareType" : "RFXCOM - RFXtrx433 USB 433.92MHz Transceiver",
"HardwareTypeVal" : 1,
"HaveDimmer" : false,
"HaveGroupCmd" : false,
"HaveTimeout" : false,
"ID" : "7247E9",
"LastUpdate" : "2017-01-04 08:34:46",
"MaxDimLevel" : 0,
"Name" : "SetAlarme",
"Notifications" : "false",
"PlanID" : "0",
"PlanIDs" : [ 0 ],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : "-",
"Status" : "Disarm",
"StrParam1" : "",
"StrParam2" : "",
"SubType" : "Meiantech/Atlantic/Aidebao",
"SwitchType" : "Security",
"SwitchTypeVal" : 3,
"Timers" : "false",
"Type" : "Security",
"TypeImg" : "security",
"Unit" : 0,
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "6"
}
],
"status" : "OK",
"title" : "Devices"
}

Est ce qu'il est possible sans intégrer JSON dans LUA de récupérer toutes ces valeurs(propriétés) ?

Merci de votre retour

Re: Lua switch propriété

Publié : 04 janv. 2017, 10:00
par vil1driver
Salut,

Bien sûr comme n'importe quel autre device
Regarde le wiki..

Re: Lua switch propriété

Publié : 04 janv. 2017, 12:00
par Mho
Bonjour,

j'ai regardé ce wiki https://www.domoticz.com/wiki/Events

j'ai vu qu'il y avait les devicechanged, otherdevices, uservariables.
et les otherdevices_svalues et
device changed contains state and svalues for the device that changed.
-- devicechanged['yourdevicename'] = state
-- devicechanged['svalues'] = svalues string


j'ai testé ceci:
if (devicechanged['SetAlarme'])
then
val = otherdevices_svalues[('SetAlarme')]
print("values",otherdevices_svalues[('SetAlarme')])
end

print(val) me donne aucune valeur (error val null)


avec cette function que j'ai trouvé sur https://www.domoticz.com/wiki/LUA_commands
je récupère toutes les valeurs normalement:

function LogVariables(x,depth,name)
for k,v in pairs(x) do
if (depth>0) or ((string.find(k,'device')~=nil) or (string.find(k,'variable')~=nil) or
(string.sub(k,1,4)=='time') or (string.sub(k,1,8)=='security')) then
if type(v)=="string" then print(name.."['"..k.."'] = '"..v.."'") end
if type(v)=="number" then print(name.."['"..k.."'] = "..v) end
if type(v)=="boolean" then print(name.."['"..k.."'] = "..tostring(v)) end
if type(v)=="table" then LogVariables(v,depth+1,k); end
end
end
end
-- call with this command
LogVariables(_G,0,'');

je ne retrouve pas les propriétés.

Auriez vous un exemple pour récupérer les proprietés

merci

Re: Lua switch propriété

Publié : 04 janv. 2017, 12:41
par vil1driver
Pourquoi es tu allé coller des parenthèses ici ?

Code : Tout sélectionner

val = otherdevices_svalues[('SetAlarme')]
Essai plus simplement

Code : Tout sélectionner

val = otherdevices['SetAlarme']

Re: Lua switch propriété

Publié : 04 janv. 2017, 14:01
par Mho
otherdevices['SetAlarme']
me donne "Open"

et
otherdevices_svalues['SetAlarme']
me donne null aussi

je m'étais trompé dans la syntax mais j'avais déjà essayé,

quand je fais otherdevices_svalues['SetAlarme']
j'ai normalement le retour de toutes les propriétés de 'SetAlarme' en format string, est ce bien cela?

Re: Lua switch propriété

Publié : 04 janv. 2017, 15:45
par vil1driver
Mho a écrit : quand je fais otherdevices_svalues['SetAlarme']
j'ai normalement le retour de toutes les propriétés de 'SetAlarme' en format string, est ce bien cela?
Non, du tout.

Ca te donne Data

Et ceci te donne Status

Code : Tout sélectionner

otherdevices['SetAlarme']
T'as un soucis, pourquoi tu obtiens 'open' :shock:
Ce n'est nul par dans la liste.
Tu n'aurais pas un autre device avec le même nom ?

Re: Lua switch propriété

Publié : 04 janv. 2017, 17:20
par Mho
Le retour de otherdevices['SetAlarme'] est "Open" je ne sais pas pourquoi, cependant via la requete JSON j'ai plein d'infos.

Ces infos sont ils récupérable via LUA ? sans intégrer JSON,

Aussi otherdevices_svalues['SetAlarme'] devrait me donner qu'une seule valeur ou un tableau de valeur ?

quand on voit le retour du JSON: en rouge le nom du switch et Disarm
curl -s "http://192.168.x.xx/json.htm?type=devices&rid=6"
{
"ActTime" : 1483515980,
"ServerTime" : "2017-01-04 08:46:20",
"Sunrise" : "08:18",
"Sunset" : "17:02",
"result" : [
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 100,
"CustomImage" : 0,
"Data" : "Disarm",
"Description" : "",
"Favorite" : 1,
"HardwareID" : 4,
"HardwareName" : "RFXtrx433E",
"HardwareType" : "RFXCOM - RFXtrx433 USB 433.92MHz Transceiver",
"HardwareTypeVal" : 1,
"HaveDimmer" : false,
"HaveGroupCmd" : false,
"HaveTimeout" : false,
"ID" : "7247E9",
"LastUpdate" : "2017-01-04 08:34:46",
"MaxDimLevel" : 0,
"Name" : "SetAlarme",
"Notifications" : "false",
"PlanID" : "0",
"PlanIDs" : [ 0 ],
"Protected" : false,
"ShowNotifications" : true,
"SignalLevel" : "-",
"Status" : "Disarm",
"StrParam1" : "",
"StrParam2" : "",
"SubType" : "Meiantech/Atlantic/Aidebao",
"SwitchType" : "Security",
"SwitchTypeVal" : 3,
"Timers" : "false",
"Type" : "Security",
"TypeImg" : "security",
"Unit" : 0,
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "6"
}
],
"status" : "OK",
"title" : "Devices"
}

si je veux récupérer le subtype en lua est ce possible ?

merci pour vos infos

Re: Lua switch propriété

Publié : 04 janv. 2017, 22:08
par patrice
Bonsoir
C'est possible en incluant la librairie json.lua ds ton script lua puis en appelant la rubrique json qui t'intéresse voir le wiki anglophone ou la semaine prochaine ( je crois) sur le blog ( me souviens plus de la date de parution automatique)

Envoyé de mon PULP 4G en utilisant Tapatalk

Re: Lua switch propriété

Publié : 05 janv. 2017, 16:02
par Mho
merci de votre retour,

donc sans importer json, juste avec LUA (domoticz) il n'est pas possible de récupérer ces mêmes valeurs ?,

Merci

Re: Lua switch propriété

Publié : 05 janv. 2017, 16:15
par vil1driver
bah non, si tu vas voir le wiki ou l'article de Patrice, tu vas comprendre que domoticz ne passe aux scripts lua qu'un minimum d'infos.
et la plupart du temps c'est amplement suffisant. (tu devrais vraiment trouver pourquoi ça te mets 'Open' !)
si tu veux utiliser json c'est juste 5 lignes de plus dans ton script, pourquoi te sent on si réfractaire ?