Extraction valeur batterie
Publié : 09 juin 2016, 21:10
Après plusieurs heures de recherche, j'ai (presque) réussi à extraire la valeur de la batterie d'un capteur (mysensor pour moi)
Quand je lance le code via domoticz (script_device), la valeur de la batterie m'indique 255. Or, quand je teste en dehors de domoticz, dans le navigateur, l'url me renvoie bien la bonne valeur :
J'ai testé l'affichage du json dans le script domoticz, et là, surprise, la valeur dans le fichier est de 255..
Pourquoi cette valeur change-t-elle (et c'est la seule qui change) quand on passe via domoticz ? Une idée ?
[edit] Quand le script dure plus de 10 secondes (lu sur le log), la valeur renvoyée est correcte... Je ne comprends plus rien..
Code : Tout sélectionner
commandArray = {}
-- variable debog : affiche les print si debog vaut 1
bat=200
debog=1
if (devicechanged['Distance'] ) then
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- For Linux
-- json = (loadfile "JSON.lua")() -- For Linux
-- adresse du capteur
url='http://192.168.0.20:8080/json.htm?type=devices&rid=121'
-- lecture fichier Json
local config=assert(io.popen("curl '"..url.."'"))
local location = config:read('*all')
config:close()
local jsonLocation = json:decode(location)
-- récupération de la valeur de la batterie
if (debog==1) then
print('début script device battery distance')
print(location)
print ('url :'..url)
print('Batterie Distance = '..bat)
end
bat=jsonLocation.result[1].BatteryLevel
if (debog==1) then
print('s script device battery distance')
print(location)
print ('url :'..url)
print('Batterie Distance = '..bat)
print('valeur brute :'..jsonLocation.result[1].BatteryLevel)
end
-- inscription dans les variables
commandArray[1]={['OpenURL']='192.168.0.20:8080/json.htm?type=command¶m=udevice&idx=124&nvalue=0&svalue='..bat}
commandArray[2]={['OpenURL']='192.168.0.20:8080/json.htm?type=command¶m=udevice&idx=125&nvalue=0&svalue='..bat}
if (debog==1) then
print('suite script device battery distance')
print('Batterie Distance = '..bat)
print('fin script device battery distance')
end
end
return commandArray
Code : Tout sélectionner
"AddjValue2" : 0.0,
"BatteryLevel" : 81,Code : Tout sélectionner
"AddjValue2" : 0.0,
"BatteryLevel" : 255,[edit] Quand le script dure plus de 10 secondes (lu sur le log), la valeur renvoyée est correcte... Je ne comprends plus rien..