Page 1 sur 1
lua et ouverture de porte
Publié : 30 oct. 2016, 19:25
par minos
Salut à tous ,
je suis tout nouveau sous domoticz...
je voudrais créer un script lua pour détection de porte ouverte. ( j ai le capteur chacon , dans mon interface....=> OK)
j ai vu qu 'il fallait faire une script_device_porte.lua
Code : Tout sélectionner
-- script test ouverture de porte
-------------------------------------------
commandArray = {}
if (devicechanged['PorteFrigo'] == 'Open') then
print = ' frigo ouvert merde !! '
end
return commandArray
bon ça c 'est OK logs => 2016-10-30 19:17:43.700 LUA: frigo ouvert merde
par contre pour la partie je voudrais la notification que apres 10 secondes d'ouverture de la porte.
en résumé :
porte ouverte => 10 secondes apres notification par mail , sms que la porte est encore ouverte ...
voilà si un pro lua peux me filer un coup de main ce serait super cool....
Merci
Minos
Re: lua et ouverture de porte
Publié : 30 oct. 2016, 20:26
par vil1driver
Salut,
Regardes le script mis en demo dans le dossier lua

Re: lua et ouverture de porte
Publié : 31 oct. 2016, 02:31
par minos
Coucou
vil1driver a écrit :Salut,
Regardes le script mis en demo dans le dossier lua

Oui merci , je l'avais déjà remarqué ce script...
mais je crois que j'y suis arrivé .... ça marche
voici le script en question , je me suis inspiré de ce que j ai pu trouvé sur le net , j ai pioché à gauche à droite ....testé , débuggé , et validé ...
Code : Tout sélectionner
-- script_device_Porte_Frigo.lua
-- Ce script verifie l 'etat de fermeture de la prte du Frigo
-- Si la porte est restée ouverte plus de 1 minute , notifiactions sur freeboxserver V6 par voix et envoie sms et Mail
------------------------------------------------------------------------------------------------------------
----------------------------------
----- Variables à éditer ---------
----------------------------------
emailAddress = "machin@gmail.com" --Adresse Email du destinatiare
bodytext = string.format(" !!! Attention, Cela fait plus de 1 minute que la porte du Frigo est ouverte !!! ")
local objet = " Porte du Frigo ouverte Le "
local voice = " attention le frigo est resté ouvert "
--------------------------------------
t1 = os.time()
s = otherdevices_lastupdate['PorteFrigo']
-- returns a date time like 2016-10-17 17:23:12
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
--Mode deboggage (affichage des messages)
debug=true
--Initialise la commande de retour finale
commandArray = {}
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
----------------------------------------------------------------
-- Fonctions -
----------------------------------------------------------------
--- Function SMS ---
--------------------
function notification_SMS(sms)
-- Premiére compte freemobile
local user1 = 'XXXXXX' -- A remplacer par identifiant Free Mobile
local pass1 = 'XXXXXX' -- A remplacer par la clé d'identification au service SMS Free
-- SMS
local Message = '!!! Attention, Cela fait plus de 1 minute que la porte du Frigo est ouverte !!!'
-- Envois Sms à user1
command1 = "curl -s 'https://smsapi.free-mobile.fr/sendmsg?user="..user1.."&pass="..pass1.."&msg="..Message.."'"
os.execute(command1)
print("<font color='#f3031d'>---------------- Envoie SMS DOM !!</font>");
end
--- Function MAILS ---
function notification_MAIL(mail)
DateMail = os.date('%d/%m/%Y à %H:%M:%S', os.time()) -- (09/16/98 à 23:48:10)
commandArray['SendEmail']=objet..DateMail.."#"..bodytext.."#"..emailAddress
print ("<font color='#f3031d'>---------------- Envoie Mail pour Dom </font>");
end
--- Function VOIX ---
function notification_VOICE(voice)
os.execute("/volume1/@appstore/domoticz/var/scripts/bash/Play-Text.bash attention le frigo est ouvert")
print("<font color='#f3031d'>---------------- Notification Voix</font>");
end
---------------------------------------------------------------
-- Fin Fonctions -
---------------------------------------------------------------
if (otherdevices['PorteFrigo'] == 'Open' and difference > 60) then
print ("<font color='#f3031d'>script_device_Porte_Frigo.lua</font>");
-- envoi SMS
-- Ici pour DOM
notification_SMS(sms)
-- envoi un mail
notification_MAIL(mail)
-- envoi notification voix sur freeboxserver V6
notification_VOICE(voice)
end
return commandArray
Voilou , si ça peut servir tant mieux
Minos
Re: lua et ouverture de porte
Publié : 31 oct. 2016, 09:47
par thier
Juste une remarque, les scripts_devices sont fait pour réagir sur des changements d'état et commence plutôt par des if deviceschanged sinon c'est des script_time
Re: lua et ouverture de porte
Publié : 31 oct. 2016, 10:06
par minos
Hello,
thier a écrit :Juste une remarque, les scripts_devices sont fait pour réagir sur des changements d'état et commence plutôt par des if deviceschanged sinon c'est des script_time
J 'en prends note mais j 'avoue ne pas très bien distinguer la nuance....
Dans mon cas c 'est un
changement d’état d'un contacteur de porte => script_device
mais également dans la durée => script_time .....?
Donc si tu as des exemples de scripts concrets ... je suis preneur pour ma culture de débutant ...
Merci de la remarque ,
Re: lua et ouverture de porte
Publié : 31 oct. 2016, 11:15
par deennoo
minos a écrit :Hello,
thier a écrit :Juste une remarque, les scripts_devices sont fait pour réagir sur des changements d'état et commence plutôt par des if deviceschanged sinon c'est des script_time
J 'en prends note mais j 'avoue ne pas très bien distinguer la nuance....
Dans mon cas c 'est un
changement d’état d'un contacteur de porte => script_device
mais également dans la durée => script_time .....?
Donc si tu as des exemples de scripts concrets ... je suis preneur pour ma culture de débutant ...
Merci de la remarque ,
il faut essaye de traduire de l'anglais au français :
Pour les script_device_blabla
if devicechanged = si le capteur change = si ton capteur a une nouvelle valeur = une nouvelle temperature, passe de on a off
ils sont executer tout de suite au changement de valeur
Pour les script_time_blabla
il sont executer toutes les minutes, verifie le valeur de ton capteur, et en fonction de cette valeur il s'execute ou non.
pour les exemples de scripts :
http://easydomoticz.com/mon-premier-scr ... en-oeuvre/
Re: lua et ouverture de porte
Publié : 31 oct. 2016, 15:51
par ganq
Pour compléter deennoo, ton script se déclenche par un autre changement de valeur mais pas parce que le frigo est ouvert depuis 60 s.
Par exemple, si tu n'as que ce capteur de porte, l'alerte ne se déclenchera jamais.(ou que quand la porte se fermera)
Au contraire, si tu as plein de devices, il va se déclencher tout le temps...
Dans ton cas, je préfererai un script_time pour être sur de faire le test toutes les minutes et de faire le test si porte ouverte depuis plus d'une minute alors
Re: lua et ouverture de porte
Publié : 31 oct. 2016, 18:04
par minos
ganq a écrit :Dans ton cas, je préfererai un script_time pour être sur de faire le test toutes les minutes et de faire le test si porte ouverte depuis plus d'une minute alors
pour passer en script_time... , je n'ai qu ' a le renommer , il n 'y a rien d'autre dans le code à proprrement dit ...?
script_devive_blabla => script_time_blabla...
merci en tout cas pour ces précisions...

Re: lua et ouverture de porte
Publié : 31 oct. 2016, 18:33
par thier
Tu changes le nom en script_time_blablabla et n'oublies pas de supprimer le script_devices.