Probleme Script LUA commande volet sur autre equipement domotique LAG

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
cyberfilou
Messages : 22
Inscription : 12 juin 2015, 17:11

Probleme Script LUA commande volet sur autre equipement domotique LAG

Message 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
Dernière modification par cyberfilou le 10 oct. 2015, 21:16, modifié 1 fois.
cyberfilou
Messages : 22
Inscription : 12 juin 2015, 17:11

Re: Script LUA commande volet sur autre equipement domotique

Message 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
Répondre