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
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...