Page 1 sur 1

Probleme Script LUA commande volet sur autre equipement domotique LAG

Publié : 10 oct. 2015, 17:06
par cyberfilou
Bonjour,

Voilà J'ai créé sur domoticz un Device Virtuel de Volet dimmable ( Blinds Percentage )
J'ai créé un Script Lua qui lit le % pour l'envoyer sur mon autre domotique et regler le volet.

Code : Tout sélectionner

-- ~/domoticz/scripts/lua/script_time_Vsam.lua

commandArray = {}

local handle = io.popen("curl -s 'http://192.168.1.46:8080/json.htm?type=devices&rid=21'|jq -r .result[].Level")
       local Level = string.gsub(handle:read("*a"), "\n", "")
       handle:close()
       print( 'Vsam batterylevel is ' .. Level .. "%")
	   io.popen ("curl -s 'http://192.168.1.81:3480/data_request?id=lu_action&output_format=xml&DeviceNum=3&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget=".. Level .."'")

	   
return commandArray
Il s'execute toute les minutes ( pour l'instant ) car si je le met en continuel, il plante domoticz car il s'exécute continuellement.

J'aimerais pouvoir sauvegarder la valeur du Blinds, dans un fichier texte, et a chaque exécution du script comparer la valeur du blinds avec la valeux dans le fichier txt, et si elle est differente, envoyer la commande curl
Mais je ne trouve pas commande pour sauvegarder la valeur "Level "dans un fichier txt, et egalement comment la lire pour la comparer avec l'autre.

Merci de m'aider

Cyberfilou

Re: Script LUA commande volet sur autre equipement domotique

Publié : 10 oct. 2015, 20:35
par cyberfilou
bon, j'ai décidé de travailler autrement, mais sa bloque pendant 10 Sec minimum et là je ne comprend pas pourquoi.

script Lua

Code : Tout sélectionner

-- ~/domoticz/scripts/lua/script_device_Vsam.lua

commandArray = {}
tc = next ( devicechanged ) 
v = tostring ( tc ) 
if  ( v : sub ( 1 , 4 )  ==  'VSAM' )  then
      
       os.execute("/home/pi/domoticz/scripts/sh/test.sh")
end	   
return commandArray
Script SH

Code : Tout sélectionner

result=$(curl 'http://192.168.1.46:8080/json.htm?type=devices&rid=21'|jq -r .result[].Level)
wget 'http://192.168.1.81:3480/data_request?id=lu_action&output_format=xml&DeviceNum=3&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget='$result
Pour moi c'est le Curl qui fait ramer domoticz, car il travaille avec jq ( jq -r .result[].Level )
Mais quelle autre instruction me permetrais de recupere la Valeur Level d'un device Blind