[LUA] Script double clic

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

[LUA] Script double clic

Message par vil1driver »

Bonjour,

voici un petit script pour prendre en compte le double clic sur un interrupteur mural ou une télécommande,
pour par exemple pouvoir allumer ou éteindre occasionnellement plus d'une lampe..

voici le script lua

Code : Tout sélectionner

 -- script_device_doubleTapeSalonOff.lua
 --
 -- script de gestion du double clic


--------------------------------
------ Variables à éditer ------
--------------------------------

local switch = 'inter de droite'	-- nom de l'interrupteur à détecter
local state = 'Off' -- état à détecter (ex: double clic sur Off)
local delai = 5	-- temps en seconde durant lequel les 2 appuis doivent être effectués
-- actions à réaliser
-- attention, ne pas mettre dans action le switch d'activation,
-- sous peine de générer une boucle infinie.
local action = [[ 	
					commandArray['la chambre'] = 'Off' 
					commandArray['le salon'] = 'Off' 
					commandArray['les pierres'] = 'Off' 
				]]
				
local ip = '192.168.22.100:8080'	-- user:pass@ip:port de domoticz pour création variable

--------------------------------
-- Fin des variables à éditer --
--------------------------------

function url_encode(str)
  if (str) then
    str = string.gsub (str, "\n", "\r\n")
    str = string.gsub (str, "([^%w %-%_%.%~])",
        function (c) return string.format ("%%%02X", string.byte(c)) end)
    str = string.gsub (str, " ", "+")
  end
  return str	
end
	
	
commandArray = {}

if(uservariables['doubleTape_'..switch..'_'..state] == nil) then
	commandArray['OpenURL']=ip..'/json.htm?type=command&param=saveuservariable&vname=doubleTape_'..url_encode(switch)..'_'..state..'&vtype=2&vvalue='..url_encode(otherdevices_lastupdate[switch])
	print('DoubleTape : création variable manquante doubleTape_'..switch..'_'..state)
	return commandArray
end	


s1 = otherdevices_lastupdate[switch]
	year1 = string.sub(s1, 1, 4)
	month1 = string.sub(s1, 6, 7)
	day1 = string.sub(s1, 9, 10)
	hour1 = string.sub(s1, 12, 13)
	minutes1 = string.sub(s1, 15, 16)
	seconds1 = string.sub(s1, 18, 19)
	
s2 = uservariables['doubleTape_'..switch..'_'..state]
	year2 = string.sub(s2, 1, 4)
	month2 = string.sub(s2, 6, 7)
	day2 = string.sub(s2, 9, 10)
	hour2 = string.sub(s2, 12, 13)
	minutes2 = string.sub(s2, 15, 16)
	seconds2 = string.sub(s2, 18, 19)
	
t1 = os.time{year=year1, month=month1, day=day1, hour=hour1, min=minutes1, sec=seconds1}
t2 = os.time{year=year2, month=month2, day=day2, hour=hour2, min=minutes2, sec=seconds2}
difference = os.difftime (t1, t2)


if (devicechanged[switch] == state) then

	if (difference < delai) then
	
	-- liste des actions en cas de double clic
	
		load(action)()
		print('doubleTape_'..switch..'_'..state..': '..difference..'s')
		
	-- fin des actions	
	end
	
	commandArray['Variable:doubleTape_'..switch..'_'..state] = s1

end	
return commandArray
Dernière modification par vil1driver le 28 nov. 2016, 04:05, modifié 2 fois.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Script double clic

Message par Neutrino »

Je viens de tester le script (qui va me servir, merci :) )
Tu as initialisé la variable utilisateur à quelle valeur ?
Un truc genre : 2016-11-27 22:00:01 ?
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Script double clic

Message par vil1driver »

Bonne remarque :D

Oui exactement, c'est vrai que sans cela ça coince..

MAJ du code pour création automatique de la variable ;)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Script double clic

Message par Neutrino »

Impeccable ! ;)
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Répondre