Page 2 sur 2

Re: script pour gestion volets

Publié : 24 sept. 2020, 17:35
par pierreet
Merci, desolé pour les maj, je dois avoir un souci avec la casse des caracteres, le pire c est qu en lisant je le voyait pas...
Maintenant cela reagi mais il me fait le AAAAA ensuite je ne comprends pas pourquoi
2020-09-24 17:31:17.826 Status: User: pierreet initiated a switch command (365/Volet bureau/On)
2020-09-24 17:31:18.052 (Sonoff touch) Light/Switch (Volet bureau off)
2020-09-24 17:31:18.043 Status: LUA: 0
2020-09-24 17:31:18.043 Status: LUA: DDDDD
2020-09-24 17:31:18.043 Status: LUA: 0
2020-09-24 17:31:18.044 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-24 17:31:18.291 Status: LUA: 1
2020-09-24 17:31:18.291 Status: LUA: 1
2020-09-24 17:31:18.292 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-24 17:31:42.105 MQTT: Topic: domoticz/in, Message: {"idx": 364, "nvalue": 0, "svalue": ""}
2020-09-24 17:31:42.637 (Sonoff touch) Light/Switch (Volet bureau)
2020-09-24 17:31:42.385 Status: LUA: 0
2020-09-24 17:31:42.385 Status: LUA: AAAAA
2020-09-24 17:31:42.385 Status: LUA: 0
2020-09-24 17:31:42.385 Status: EventSystem: Fetching URL 192.168.2.25:8080/json.htm?type=command&param=switchlight&idx=365&switchcmd=Off after 0.2 seconds...
2020-09-24 17:31:42.386 Status: EventSystem: Script event triggered: script_device_volet_bureau
2020-09-24 17:31:42.600 Status: User: Admin initiated a switch command (365/Volet bureau/Off)
2020-09-24 17:31:42.859 Status: LUA: 1
2020-09-24 17:31:42.859 Status: LUA: 1
2020-09-24 17:31:42.859 Status: EventSystem: Script event triggered: script_device_volet_bureau
Surement a cause de la communication mqtt entre l inter physique sonoff du volet et domoticz, du coup je vois pas comment faire, une vraie temporisation ou autre, peut etre?

Re: script pour gestion volets

Publié : 25 sept. 2020, 15:43
par pierreet
bonjour,
suite a de nombreux essais avec des loops de temps qui ne fonctionnaient pas, je me suis apercu finalement que CCCCC et DDDDD avait la meme fonction, erreur de ma part (encore)
du coup cela fonctionne enfin, il faut que je nettoie le code de tous mes essais mais cela fonctionne
je n ai vraiment pas l ame d un programmeur, je suis passé cent fois devant l erreur sans la voir, un peu comme pour les majs
desolé et merci a tous

ca ne servira surement pas mais au cas où

Code : Tout sélectionner

local Host = '192.168.2.25:8080' -- user:pass@ip:port de domoticz
local volet = 'Volet bureau'
local virt_volet_btn = '365'  --bouton viruel Domoticz pour le volet du bureau
local phys_volet_bureau_on = 'Volet bureau on'
local phys_volet_bureau_off = 'Volet bureau off'

--- function pause(seconds)
--	local _start = os.time()
--	local _end = _start+seconds
--	while (_end ~= os.time()) do
--	end
-- end

--local clock = os.clock
--function sleep(n)  -- seconds
--  local t0 = clock()
--  while clock() - t0 <= n do end
--end

commandArray = {}
    if devicechanged[phys_volet_bureau_off] or devicechanged[phys_volet_bureau_on] or devicechanged[volet]=='Closed' or devicechanged[volet]=='Open' then
      
		print (uservariables['volet_bureau_premiere_passe'])
		if uservariables['volet_bureau_premiere_passe'] == 0 then
			if (devicechanged[phys_volet_bureau_off]) then
				print 'AAAAA'
				commandArray['OpenURL'] = Host..'/json.htm?type=command&param=switchlight&idx='..virt_volet_btn..'&switchcmd=Off'
--                sleep(5)
--				pause(45)
			elseif (devicechanged[phys_volet_bureau_on])  then
				print 'BBBBB'
				commandArray['OpenURL'] = Host..'/json.htm?type=command&param=switchlight&idx='..virt_volet_btn..'&switchcmd=On'
--                sleep(5)
--			    pause(45)
			elseif devicechanged[volet] == 'Closed' then
				print 'CCCCC'
				commandArray [phys_volet_bureau_off] = 'On'
--				sleep(5)
--				pause(45)
			elseif devicechanged[volet] == 'Open' then
				print 'DDDDD'
                commandArray [phys_volet_bureau_on] = 'On'
--                sleep(5)
--				commandArray [phys_volet_bureau_off] = 'On FOR 100'
--                pause(45)
			end
--        sleep(9)
		commandArray['Variable:volet_bureau_premiere_passe'] = tostring(1)
-- print (uservariables['volet_bureau_premiere_passe'])
	else
		commandArray['Variable:volet_bureau_premiere_passe'] = tostring(0)
-- print (uservariables['volet_bureau_premiere_passe'])
end
end


--	print (commandArray)
	return commandArray

Re: script pour gestion volets

Publié : 25 sept. 2020, 16:01
par pierreet
Apres qq modifs pour faciliter le changement de chaque script (1 par volet)

Code : Tout sélectionner

local Host = '192.168.2.25:8080'
local volet = 'Volet bureau'  --bouton viruel Domoticz pour l inter volet en denomination
local virt_volet_btn = '365'  --bouton viruel Domoticz pour l inter volet en idx
local phys_volet_on = 'Volet bureau on'  --bouton 1 du sonoff via mqtt
local phys_volet_off = 'Volet bureau off'   --bouton 2 du sonoff via mqtt

commandArray = {}
    if devicechanged[phys_volet_off] or devicechanged[phys_volet_on] or devicechanged[volet]=='Closed' or devicechanged[volet]=='Open' then
		if uservariables['volet_bur'] == 0 then
			if (devicechanged[phys_volet_off]) then
				commandArray['OpenURL'] = Host..'/json.htm?type=command&param=switchlight&idx='..virt_volet_btn..'&switchcmd=Off'
			elseif (devicechanged[phys_volet_on])  then
				commandArray['OpenURL'] = Host..'/json.htm?type=command&param=switchlight&idx='..virt_volet_btn..'&switchcmd=On'
			elseif devicechanged[volet] == 'Closed' then
				commandArray [phys_volet_off] = 'On'
			elseif devicechanged[volet] == 'Open' then
                commandArray [phys_volet_on] = 'On'
			end

		commandArray['Variable:volet_bur'] = tostring(1)
	else
		commandArray['Variable:volet_bur'] = tostring(0)

end
end

return commandArray

Re: script pour gestion volets

Publié : 30 sept. 2020, 00:14
par pierreet
Incomprehensible, apres 4 jours où tout fonctionnait sans probleme c est la cata...
J ai juste fait une sauvegarde hier via configuration/parametre/sauvegarde et aujourd hui une partie des volets ne s ouvrent plus, pire, si on les ouvre via le bouton physique, ils se referment aussitot :(
J ai aussi constaté que tout mes boutons domoticz sont passés de pushon a on/off ????

Bref j ai tout remis d aplomb et cela ne fonctionne pas plus, je comprenais deja pas grand chose mais là je suis perdu

Re: script pour gestion volets

Publié : 30 sept. 2020, 12:12
par pierreet
Re,
bon sans rien changer (a part un reboot de plus) cela refonctionne aujourd hui, bizarre et inexplicable...

Re: script pour gestion volets

Publié : 13 mars 2022, 16:58
par bozzo12
salut.
ton script m'interesse
j'ai créé un script lua device
copier collé le cript et changé les valeurs des 4 premières lignes mais pas d'action chez moi.
j'ai surement loupé une bricole.
tu es dans le coin??

Re: script pour gestion volets

Publié : 13 mars 2022, 17:37
par Keros
Regarde dans ma signature, j'ai écrit un petit guide d'aide au débogage.

Mets nous ton script avec les logs correspondant.

Re: script pour gestion volets

Publié : 13 mars 2022, 21:23
par pierreet
salut,
mon script a evolué un peu depuis, voici ce que j utilise maintenant

Code : Tout sélectionner

local Host = '192.168.2.25:8080'
local volet = 'Volet bureau'  --bouton virtuel Domoticz pour l inter volet en denomination
local virt_volet_btn = '365'  --bouton virtuel Domoticz pour l inter volet en idx
local phys_volet_on = 'Volet bureau on'  --bouton 1 du sonoff via mqtt
local phys_volet_off = 'Volet bureau off'   --bouton 2 du sonoff via mqtt
local var = 'Variable:volet_bur'  -- variable utilisateur defini ds domoticz pour changer sa valeur
local var2 = 'volet_bur'   -- variable utilisateur defini ds domoticz pr appeler sa valeur
local pos = 'Variable:pos_volet_bur' --variable utilisateur defini ds domoticz pour changer sa valeur, variable donnant la position du volet haut (1) et en bas (0)
local pos2 = 'pos_volet_bur' -- variable utilisateur defini ds domoticz pr appeler sa valeur, variable donnant la position du volet haut (1) et en bas (0)
-----------------------------------------------------------------------------------------------------------
commandArray = {}
    if devicechanged[phys_volet_off]=='On' or devicechanged[phys_volet_on]=='On' or devicechanged[volet]=='Closed' or devicechanged[volet]=='Open' then

		if uservariables[var2] == 0 and uservariables[pos2] == 0 then   --volet en position ferme

			if (devicechanged[phys_volet_on]) then
				commandArray['OpenURL'] = Host..'/json.htm?type=command&param=switchlight&idx='..virt_volet_btn..'&switchcmd=On'
			    commandArray [pos] = tostring(1)
			    print ('le ' ..volet.. ' etait ferme je l ouvre')
			    commandArray[var] = tostring(1)
		    
		    elseif devicechanged[volet] == 'Open' then
                commandArray [phys_volet_on] = 'On'
			    commandArray [pos] = tostring(1)
			    print ('le ' ..volet.. ' etait ferme je l ouvre')
			    commandArray[var] = tostring(1)
			
			elseif devicechanged[volet] == 'Closed' then
			    print ('le '..volet..' est deja ferme')
			
			elseif (devicechanged[phys_volet_off]) then
			    print ('le '..volet..' est deja ferme')
		    end   
--		commandArray[var] = tostring(1)
	else
		commandArray[var] = tostring(0)
	end
	
		        
		if uservariables[var2] == 0 and uservariables[pos2] == 1 then        --volet en position ouvert
		        
		    if (devicechanged[phys_volet_off]) then
				commandArray['OpenURL'] = Host..'/json.htm?type=command&param=switchlight&idx='..virt_volet_btn..'&switchcmd=Off'
			    commandArray [pos] = tostring(0)
			    print ('le ' ..volet.. ' etait ouvert je le ferme')
			    commandArray[var] = tostring(1)
			   
            elseif devicechanged[volet] == 'Closed' then
				commandArray [phys_volet_off] = 'On'
				commandArray [pos] = tostring(0)
			    print ('le ' ..volet.. ' etait ouvert je le ferme')
			    commandArray[var] = tostring(1)
			    
			elseif devicechanged[volet] == 'Open' then
			    print ('le ' ..volet.. ' est deja ouvert')
			
			elseif (devicechanged[phys_volet_on]) then
			    print ('le ' ..volet.. ' est deja ouvert')
			    
	        end
			
		--commandArray[var] = tostring(1)
	else
		commandArray[var] = tostring(0)
        end
    end
return commandArray
cela fonctionne parfaitement depuis un bail, il n est surement pas optimum mais ca fait le boulot avec un script par volet, je ne suis pas du tout dans l informatique...
on voit les traces de differents essais, a chaque fois j ai utilisé les print pr savoir ce qui fonctionnait et où ca plantait
je me rend compte que je n ai pas fait le menage dans le script maintenant qu il fonctionne mais bon c est pas grave