Lua switch propriété

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 <\>.
Mho
Messages : 18
Inscription : 05 déc. 2016, 08:23

Lua switch propriété

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Lua switch propriété

Message par vil1driver »

Salut,

Bien sûr comme n'importe quel autre device
Regarde le wiki..
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
Mho
Messages : 18
Inscription : 05 déc. 2016, 08:23

Re: Lua switch propriété

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Lua switch propriété

Message 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']
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
Mho
Messages : 18
Inscription : 05 déc. 2016, 08:23

Re: Lua switch propriété

Message 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?
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Lua switch propriété

Message 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 ?
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
Mho
Messages : 18
Inscription : 05 déc. 2016, 08:23

Re: Lua switch propriété

Message 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
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Lua switch propriété

Message 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
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Mho
Messages : 18
Inscription : 05 déc. 2016, 08:23

Re: Lua switch propriété

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Lua switch propriété

Message 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 ?
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
Répondre