Page 1 sur 1

introduire un délai entre les commandes LUA ?

Publié : 25 déc. 2016, 14:39
par DrMacabre
Salut,

Je rencontre un petit problème avec mon script actuel, j'ai ici 2 lampes Leds dont le passage de l'une, change l'état de la seconde à cause de code IR similaires.

Ce que j'essaye de faire : Avant d'envoyer la commande pour passer ma lampe en rouge, le script doit éteindre la seconde lampe afin qu'elle ne reçoive pas le code de la première, ensuite, une fois le code reçu par la bonne lampe, le script rallume la seconde lampe. En principe ça devrait marcher mais voilà, tout va trop vite et j'ai l'impression que les commandes s'évaporent après l'extinction de la lampe "LEDs Studio"

les commandes sont transmises à un RM Pro qui doit à mon avis pédaler dans la semoule en recevant une salve d'URL dans la tronche.

Est-ce qu'il existe par hasard une commande qui temporise le script pendant x temps avant de passer à la commande suivante ?

Code : Tout sélectionner

if (devicechanged['LEDs Balls RGB'] == 'Rd' and otherdevices['LEDs Mezzanine'] == 'On') then
   commandArray['LEDs Studio']='Off' -- Extinction des LEDs Studio
   commandArray['LEDs Balls R']='On' -- Passage des LEDs Balls en rouge (qui change aussi la couleur des LEDs Studio si elles sont allumées... misère)
   commandArray['LEDs Studio']='On' -- Rallumage des LEDs Studio
end
Merci

Re: introduire un délai entre les commandes LUA ?

Publié : 25 déc. 2016, 23:01
par patrice
Bonsoir
Wait ou sleep ou pause (je ne me rappelle plus en Lua)
Si tu cherches avec ses mot tu devrais trouver

Re: introduire un délai entre les commandes LUA ?

Publié : 03 janv. 2017, 11:59
par lost
DrMacabre a écrit : Est-ce qu'il existe par hasard une commande qui temporise le script pendant x temps avant de passer à la commande suivante ?
Le pb est que ca va bloquer domoticz pdt l'execution du script... Donc mieux vaudrait utiliser les possibilités de "On|Off AFTER <DelayInSeconds>" directement dans la commande, cf:
https://www.domoticz.com/wiki/LUA_commands

Re: introduire un délai entre les commandes LUA ?

Publié : 12 janv. 2017, 12:00
par nissart
bonjour

pour ma part je crée un dummy on/off avec allumage retardé (le temps voulu de la pause) et extinction une seconde plus tard.
Exemple: pour une pause de 1 seconde.

Nom: 1seconde
délai d'allumage: 1
délai d'extinction: 2

en concret:
j'écoute de la radio via MPD... quand je veux changer de radio je dois
-effacer la liste de lecture en cours,
-charger une nouvelle playlist,
-lancer la playlist en cours...


voici mon script simplifié

Code : Tout sélectionner

		if (devicechanged['FUN'] == 'On') then 
			commandArray['OpenURL']='http://192.168.5.14/command/?cmd=clear'        //ici je vide ma playlist
			commandArray['1seconde'] = 'On'                                                                        // la je lance une pause de 1 seconde
			commandArray['2secondes'] = 'On                                                                       // la je lance une pause de 2 secondes
			commandArray['NRJ'] = 'Off'	                                                                              //la je coupe toutes mes radios possibles
			commandArray['voltage'] = 'Off'
			commandArray['vibration'] = 'Off'
			commandArray['cherie'] = 'Off'
		end
		if (devicechanged['1seconde'] == 'On')  and otherdevices['FUN'] == 'On' then               
			commandArray['OpenURL']='http://192.168.5.14/command/?cmd=load%20fun'              //une seconde plus tard je charge ma plays
		end
		if (devicechanged['2secondes'] == 'On') and otherdevices['FUN'] == 'On' then 		               // deux secondes plus tard je lance la playlist		
			commandArray['OpenURL']='http://192.168.5.14/command/?cmd=play'
		end
a toi de l'adapter

Re: introduire un délai entre les commandes LUA ?

Publié : 12 janv. 2017, 12:09
par vil1driver
pour mpd si tu installes le client mpc tu peux le faire comme ceci (sans usage de délai aucun..)

Code : Tout sélectionner

-- script_device_rock.lua
--
-- lancement de la playlist rock sur mpd


local ip = '192.168.22.100'		-- ip du serveur mpd
local port = '6600'				-- port du serveur mpd

commandArray = {}

if (devicechanged['mpd_rock'] == 'On') then

	print('MPD : Play la grosse radio Rock')
	
	-- On efface la playlist en cours, mais on garde le titre qui est joué actuellement.
	-- On charge la playlist
	-- On lance un fichier mp3 ou autre contenu dans la playlist
	os.execute('MPD_HOST='..ip..' MPD_PORT='..port..' mpc crop && MPD_HOST='..ip..' MPD_PORT='..port..' mpc load La\\ grosse\\ radio && MPD_HOST='..ip..' MPD_PORT='..port..' mpc play 3 &')
	
end

return commandArray 

Re: introduire un délai entre les commandes LUA ?

Publié : 12 janv. 2017, 12:36
par nissart
pas mal du tout, a tester !!
par contre j'utilise un raspberry dédié sur lequel est installé runeaudio avec un DAC USB , pour éviter de charger la conf du domoticz.

tu es sur le meme Rpi toi ?

Re: introduire un délai entre les commandes LUA ?

Publié : 16 févr. 2017, 19:55
par jec_44
très intéressant ! super les gars ! moi j'utilise Volumio sur un RPI dédié. J'utilise un device avec plusieurs options et je les lance avec (par exemple) :
http://192.168.0.128/command/?cmd=load%20Radio

je vais essayer d'adapter vos scripts LUA :D

Re: introduire un délai entre les commandes LUA ?

Publié : 22 sept. 2017, 10:55
par shinji
lost a écrit :
DrMacabre a écrit : Est-ce qu'il existe par hasard une commande qui temporise le script pendant x temps avant de passer à la commande suivante ?
Le pb est que ca va bloquer domoticz pdt l'execution du script... Donc mieux vaudrait utiliser les possibilités de "On|Off AFTER <DelayInSeconds>" directement dans la commande, cf:
https://www.domoticz.com/wiki/LUA_commands
Bonjour a tous,

Il y a un truc que je ne capte pas. J'utilise domoticz sur un syno avec des periphériques xiaomi.
Quand j'utilise => commandArray['RGB Gateway'] = 'On AFTER 30' la gateway s'allume bien après 30s.

mais si je mets :
commandArray['RGB Gateway'] = 'On'
commandArray['RGB Gateway'] = 'Off AFTER 30'

Il ne se passe rien. Du coup je ne capte pas pourquoi dans un cas cela fonctionne et dans l'autre non !
Elle devrait s'allumer direct et s'éteindre après 30s.

Du coup pour l'instant je passe par commandArray['RGB Gateway'] = 'On FOR 1' et ça fonctionne pendant 1 minute.

Mais j'avoue que j'aimerais bien comprendre pourquoi la succession On/Off AFTER ne fonctionne pas.

Des idées ?

Merci

Re: introduire un délai entre les commandes LUA ?

Publié : 22 sept. 2017, 12:03
par vil1driver

Re: introduire un délai entre les commandes LUA ?

Publié : 22 sept. 2017, 13:08
par shinji
Merci !!

ça marche top

commandArray[1] = {['RGB Gateway'] = 'On'}
commandArray[2] = {['RGB Gateway'] = 'Off AFTER 30'}