lua et ouverture de porte

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
minos
Messages : 72
Inscription : 30 oct. 2016, 18:40

lua et ouverture de porte

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: lua et ouverture de porte

Message par vil1driver »

Salut,

Regardes le script mis en demo dans le dossier lua ;)
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
minos
Messages : 72
Inscription : 30 oct. 2016, 18:40

Re: lua et ouverture de porte

Message 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 :D :P

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
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: lua et ouverture de porte

Message 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
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
minos
Messages : 72
Inscription : 30 oct. 2016, 18:40

Re: lua et ouverture de porte

Message 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 ,
deennoo
Messages : 4036
Inscription : 25 janv. 2015, 02:00

Re: lua et ouverture de porte

Message 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/
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
ganq
Messages : 385
Inscription : 01 avr. 2015, 14:20

Re: lua et ouverture de porte

Message 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
domoticien amateur option bidouille
minos
Messages : 72
Inscription : 30 oct. 2016, 18:40

Re: lua et ouverture de porte

Message 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... :P
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: lua et ouverture de porte

Message par thier »

Tu changes le nom en script_time_blablabla et n'oublies pas de supprimer le script_devices.
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Répondre