Page 1 sur 3

[Résolu] Aide creation script envoi de mail

Publié : 01 déc. 2019, 18:59
par dartflag
Bonsoir a tous,

je suis debutant en LUA et je galère un peu. Je souhait faire un script qui m'envoi une notification par mail quand ma fenêtre est restée ouverte. Mais je reçois des centaines de mails. Je ne sais pas comment limiter a une seul mail?
J'ai testé dans tout les sens et je dois jeter l'éponge, je ne sais pas faire, mes connaissances étant trop limitées.

pouvez vous m'aider?

voici mon script

Code : Tout sélectionner

-- script_device_keypad.lua
time = os.date("*t")
			EnvMailContBUR = 'KO'
			EnvMailContCHA = 'KO'
			
commandArray = {}
			
	if devicechanged['switch'] == 'On' or otherdevices['switch'] == 'On'
		then
			print('switch est passé a ON, Variable EnvMailContBUR :'..EnvMailContBUR)
			print('switch est passé a ON, Variable EnvMailContCHA :'..EnvMailContCHA)
				print('KeyPad: On')
				print('Away')
				print('contacteur bureau:'..otherdevices['Contacteur Bureau'])

-- verification si la fenetre du bureau est ouverte, si oui, envoi mail
					if otherdevices['Contacteur Bureau'] == 'Open' and EnvMailContBUR == 'KO'
						then 
							commandArray['SendEmail']='Alarme: fenetre bureau#La fenetre du bureau est ouverte#dartflag78@gmail.com'
							EnvMailContBUR = 'OK'
							print('la boucle envoi mail a été executée EnvMailContBUR :'..EnvMailContBUR)
					end		
-- verification si la fenetre de la chambre est ouverte, si oui, envoi mail
					if otherdevices['Contacteur Chambre'] == 'Open' and EnvMailContCHA == 'KO'
						then 
							commandArray['SendEmail']='Alarme: fenetre chambre#La fenetre de la chambre est ouverte#xxxxxxxxxx@gmail.com'
							EnvMailContCHA = 'OK'
							print('la boucle envoi mail a été executée EnvMailContCHA :'..EnvMailContCHA)
					end		

	end

return commandArray

Re: Aide creation script envoi de mail

Publié : 01 déc. 2019, 19:08
par vil1driver
Salut,

Aide toi du script fourni en demo (de type TIME)

https://github.com/domoticz/domoticz/bl ... e_demo.lua

Re: Aide creation script envoi de mail

Publié : 01 déc. 2019, 19:13
par denis_brasseur
Ton script étant de type device, il s'exécute à chaque changement d'état d'un device.
De plus, en utilisant des variables locales, a chaque exécution de ton script, celles-ci prennent la valeurs par défaut que tu definis dans ton script.

Re: Aide creation script envoi de mail

Publié : 01 déc. 2019, 22:42
par dartflag
Je pensais qu’un script device était adapté dans mon cas?

Mon idée était:
Quand je pars de chez moi, j’active un keypad comme une alarme. Puis si une fenêtre est ouverte ou restée ouverte alors le script m’envoi un mail.

Donc c’est bien au déclenchement d’un device que ça doit m’envoyer un mail?

Le script que j’ai se déclenche bien mais il m’envoie 200 mails et je ne sais pas le limiter à 1 seul.

Re: Aide creation script envoi de mail

Publié : 01 déc. 2019, 23:28
par thier
if devicechanged['switch'] == 'On' envoi le mail au changement d'état. Comme c'est un script device, il est exécuté à chaque changement d'état de n'importe quel device, et puisque ton switch est toujour On, ta condition otherdevices['switch'] == 'On' est toujour vrai donc envoi le mail à chaque fois. Enlève otherdevices['switch'] == 'On'

Re: Aide creation script envoi de mail

Publié : 02 déc. 2019, 21:17
par dartflag
c'est vrais que c'est un peu compliqué pour moi.

je voulais gérer dans le meme script deux cas quand je mets mon keypad a On (c'est a dire je pars de chez moi)

1er cas: une fenêtre est restée ouverte donc envoi de mail. Pour cela je pensais le gérer otherdevices['switch'] == 'On'
2eme cas: une fenêtre a été ouverte, donc envoi de mail, et dans ce cas c'est devicechanged['switch'] == 'On'

mais je dois peux etre faire un script pour chaque cas?

Re: Aide creation script envoi de mail

Publié : 03 déc. 2019, 10:26
par david.2d
TU peut le faire dans le même script, il faut juste que tu vérifie que ta fenêtre ou porte et bien le device qui a changé et pas autre chose dans domotique avec le tableau devicechanged

exp:
if devicechanged['Contacteur Chambre'] and otherdevices['Contacteur Chambre'] == 'Open' and EnvMailContCHA == 'KO'

David

Re: Aide creation script envoi de mail

Publié : 03 déc. 2019, 11:32
par vil1driver
Pour info,
Ceci se simplifie

Code : Tout sélectionner

devicechanged['Contacteur Chambre'] and otherdevices['Contacteur Chambre'] == 'Open'
Comme cela

Code : Tout sélectionner

devicechanged['Contacteur Chambre'] == 'Open'

Re: Aide creation script envoi de mail

Publié : 03 déc. 2019, 21:14
par dartflag
bon j'ai compris que mon script device ne s'execute qu'au changement d'état de celui ci. Donc avec vos conseils, j'ai créé ca.
qui semble bien fonctionner ce coup ci. Dans les deux cas que je peux avoir.
Il est certainement pas parfait et un peu long, puis que j'ai un bloc de deux if pour chaque fenetres, mais ca semble deja marcher et sans m'envoyer 200 mails :D

on debute :lol:


Code : Tout sélectionner

-- script_device_keypadfenetreouverte.lua
			
commandArray = {}
	
	-- verification si la fenetre du bureau est ouverte, si oui, envoi mail		
	if otherdevices['KeyPad'] == 'On' and devicechanged['Contacteur Bureau'] == 'Open'
		then
			commandArray['SendEmail']='Alarme: fenetre bureau#La fenetre du bureau a été ouverte#x@gmail.com'
	end
	
	if devicechanged['KeyPad'] == 'On' and otherdevices['Contacteur Bureau'] == 'Open'
		then
			commandArray['SendEmail']='Alarme: fenetre bureau#La fenetre du bureau est resté ouverte#x@gmail.com'
	end
	
	
	-- verification si la fenetre du salon est ouverte, si oui, envoi mail		
	if otherdevices['KeyPad'] == 'On' and devicechanged['Contacteur Salon'] == 'Open'
		then
			commandArray['SendEmail']='Alarme: fenetre salon#La fenetre du salon a été ouverte#x@gmail.com'
	end
	
	if devicechanged['KeyPad'] == 'On' and otherdevices['Contacteur Salon'] == 'Open'
		then
			commandArray['SendEmail']='Alarme: fenetre salon#La fenetre du salon est resté ouverte#x@gmail.com'
	end
	return commandArray
	

Re: Aide creation script envoi de mail

Publié : 04 déc. 2019, 03:26
par vil1driver
Impec ;)