Page 1 sur 3

Lire une sonde de type "Air Quality" par un script lua

Publié : 06 sept. 2015, 22:47
par ricky74
Bonjour à tous,
J'ai un petit souci avec mon script lua.
J'aimerais simplement envoyer une notification quand mon Co2 dans la maison dépasse une certaine valeur...
J"ai une station météo netatmo que j'ai liée à domoticz. Tout fonctionne, je remonte la valeur en ppm.
Dans mon script lua, j'aimerais lire cette valeur en faisant :

tonumber(otherdevices_svalues['Co2'])

mais je n'ai rien en retour.
En Faisant cela :
for i, v in pairs(otherdevices_svalues) do print(i, v) end

Idem, ma sonde Air Quality ne me retourne rien...
Quelqu'un peut il m'aider ???

Re: Lire une sonde de type "Air Quality" par un script lua

Publié : 06 sept. 2015, 23:52
par vil1driver
Salut,

Il faudrait voir ton script et son nom ainsi que le résultat de cette commande

http://192.168.22.100:8080/json.htm?type=devices&rid=112

Remplace avec ton ip et 112 par l'idx de ton device

Re: Lire une sonde de type "Air Quality" par un script lua

Publié : 07 sept. 2015, 06:30
par ricky74
Voici le résultat
result" : [
{
"AddjMulti" : 1.0,
"AddjMulti2" : 1.0,
"AddjValue" : 0.0,
"AddjValue2" : 0.0,
"BatteryLevel" : 255,
"CustomImage" : 0,
"Data" : "627 ppm",
"Description" : "",
"Favorite" : 1,
"HardwareID" : 3,
"HardwareName" : "Netatmo",
"HaveTimeout" : false,
"ID" : "15F92",
"LastUpdate" : "2015-09-07 06:25:10",
"Name" : "Co2",
"Notifications" : "false",
"PlanID" : "0",
"Protected" : false,
"Quality" : "Excellent",
"ShowNotifications" : true,
"SignalLevel" : 12,
"SubType" : "Unknown",
"Timers" : "false",
"Type" : "Air Quality",
"TypeImg" : "air",
"Unit" : 1,
"Used" : 1,
"XOffset" : "0",
"YOffset" : "0",
"idx" : "19"
}

C'est le champ data que je veux récupérer...

Re: Lire une sonde de type "Air Quality" par un script lua

Publié : 07 sept. 2015, 08:16
par vil1driver
ton script et son nom ?

Re: Lire une sonde de type "Air Quality" par un script lua

Publié : 07 sept. 2015, 08:32
par ricky74
Mon script s'appelle script_device_Co2.lua
mon capteur s’appelle "Co2"
Voici le code :

commandArray = {}
if (devicechanged['Co2']) then
--print(otherdevices_svalues['Co2'])
-- otherdevices_svalues['Co2'] est vide !

if (tonumber(otherdevices_svalues['Co2']) >= 1200 and uservariables['Var2'] == '0') then
time = os.date("*t")
commandArray['Variable:Var2']='1'
commandArray['SendEmail']=time.hour..':'..time.min..' Niveau de Co2 élevé dans la maison#Envoyé par Domoticz...#xxxxxxxxxx@gmail.com'
end

if (tonumber(otherdevices_svalues['Co2']) < 1200 and uservariables['Var2'] == '1') then
time = os.date("*t")
commandArray['SendEmail']=time.hour..':'..time.min..' Niveau de Co2 redescendu...#Envoyé par Domoticz...#xxxxxxxxx@gmail.com'
commandArray['Variable:Var2']='0'
end
end

return commandArray

Re: Lire une sonde de type "Air Quality" par un script lua

Publié : 07 sept. 2015, 09:33
par epierre
ton device ne peut être devicechanged et otherdevice en même temps...

Re: Lire une sonde de type "Air Quality" par un script lua

Publié : 07 sept. 2015, 09:44
par ricky74
Ok, comment faut-il faire alors pour détecter le dépassement d'un seuil sur ce type de mesure ?

Re: Lire une sonde de type "Air Quality" par un script lua

Publié : 07 sept. 2015, 09:59
par epierre
ricky74 a écrit :Ok, comment faut-il faire alors pour détecter le dépassement d'un seuil sur ce type de mesure ?

tiens j'ai vu que gizmocuz a répondu sur son forum pour l'usage de nvalues:

otherdevices_nvalues['Co2']

essaye sino je testerai ce soir, j'ai 15 capteurs de gaz chez moi ;-)

Re: Lire une sonde de type "Air Quality" par un script lua

Publié : 07 sept. 2015, 10:03
par ricky74
otherdevices_nvalues['Co2'] ne fonctionne pas non plus, cela me retourne cette erreur :

attempt to index global 'otherdevices_nvalues' (a nil value)

Re: Lire une sonde de type "Air Quality" par un script lua

Publié : 07 sept. 2015, 17:20
par vil1driver
epierre a écrit :ton device ne peut être devicechanged et otherdevice en même temps...
si bien-sur et heureusement :D

que donne ceci ?

Code : Tout sélectionner

commandArray = {} 
if (devicechanged['Co2']) then
   print('co2: ' .. otherdevices_svalues['Co2'])
end  

return commandArray
si comme je le pense ça te met "co2: 627 ppm"
il va falloir dans ton script virer le ppm avant de pouvoir comparer la valeur à une autre...