Page 1 sur 1

Extraction valeur batterie

Publié : 09 juin 2016, 21:10
par ganq
Après plusieurs heures de recherche, j'ai (presque) réussi à extraire la valeur de la batterie d'un capteur (mysensor pour moi)

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&param=udevice&idx=124&nvalue=0&svalue='..bat}
		commandArray[2]={['OpenURL']='192.168.0.20:8080/json.htm?type=command&param=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

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 :

Code : Tout sélectionner

  "AddjValue2" : 0.0,
         "BatteryLevel" : 81,
J'ai testé l'affichage du json dans le script domoticz, et là, surprise, la valeur dans le fichier est de 255..

Code : Tout sélectionner

"AddjValue2" : 0.0,
"BatteryLevel" : 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..