Aide creation script envoi de mail

Vous avez des questions concernant les scripts dans Domoticz, posez vos questions ici, quelque soit le langage nous tenterons des réponses pertinentes ...
dartflag
Messages : 126
Enregistré le : 27 nov. 2015, 20:43

Aide creation script envoi de mail

Message par dartflag » 01 déc. 2019, 18:59

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
Modifié en dernier par vil1driver le 01 déc. 2019, 20:05, modifié 1 fois.
Raison : Cacher adresse mail

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


vil1driver
Messages : 5187
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Aide creation script envoi de mail

Message par vil1driver » 01 déc. 2019, 19:08

Salut,

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

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

denis_brasseur
Messages : 287
Enregistré le : 24 déc. 2018, 17:05
Localisation : (26)

Re: Aide creation script envoi de mail

Message par denis_brasseur » 01 déc. 2019, 19:13

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.
Pi3 + DD PiDrive + RFXtrx433 + AEON Labs ZW090
10 Getdio 54755 (gestion chauffage)
2 CHACON 34131 (détecteur fumées)
5 Bresser Capteur thermo/hygro
2 CHACON DiO 54781 (contacteur porte)
OWL Micro+ CM180
D2L LINKY
FGR-223 "Roller Shutter 3"

dartflag
Messages : 126
Enregistré le : 27 nov. 2015, 20:43

Re: Aide creation script envoi de mail

Message par dartflag » 01 déc. 2019, 22:42

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.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


thier
Messages : 568
Enregistré le : 26 sept. 2015, 10:32
Localisation : charente

Re: Aide creation script envoi de mail

Message par thier » 01 déc. 2019, 23:28

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'
PI3 + stretch, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.

dartflag
Messages : 126
Enregistré le : 27 nov. 2015, 20:43

Re: Aide creation script envoi de mail

Message par dartflag » 02 déc. 2019, 21:17

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?

david.2d
Messages : 21
Enregistré le : 25 avr. 2017, 14:15

Re: Aide creation script envoi de mail

Message par david.2d » 03 déc. 2019, 10:26

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

vil1driver
Messages : 5187
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Aide creation script envoi de mail

Message par vil1driver » 03 déc. 2019, 11:32

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'

dartflag
Messages : 126
Enregistré le : 27 nov. 2015, 20:43

Re: Aide creation script envoi de mail

Message par dartflag » 03 déc. 2019, 21:14

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
	

vil1driver
Messages : 5187
Enregistré le : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Aide creation script envoi de mail

Message par vil1driver » 04 déc. 2019, 03:26

Impec ;)

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre