Envoi sms si porte ouverte pendant plus de x secondes

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 <\>.
cyberfrk

Envoi sms si porte ouverte pendant plus de x secondes

Message par cyberfrk »

Bonjour,

Me revoilà... Maintenant que j'ai gouté aux scripts LUA, je ne peux plus m'en passer...!
Plus sérieusement, j'aimerais envoyer 2 sms (madame et moi) si j'ai oublié de fermer la porte 60 secondes après l'avoir ouverte. Par contre, un plus serait même de m'envoyer un sms si la porte est restée fermée pendant plus de 20sec (temps indicatif) après l'avoir ouverte puis refermée. Je sais, c'est un peu tordu...

Porte fermée (Off) ---- J'ouvre la porte (On) ---- Si Toujours ouverte (On) pendant +60sec:
=>2 sms envoyés "porte restée ouverte"
Porte fermée (Off) ---- J'ouvre la porte (On) ---- Si refermée (Off) avant les 60 sec:
=> 2 sms envoyés "porte fermée"
Est-ce plus clair? *espérè...*

Sachant que le pushbullet et mails seront utilisés aussi mais "je maîtrise" ces types de notifications.

Je me suis inspiré de ce script:

Code : Tout sélectionner

-- script_time_PriseA1.lua
t1 = os.time()
s = otherdevices_lastupdate['PriseA1']
-- returns a date time like 2013-07-11 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)

commandArray = {}
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
if (otherdevices['PriseA1'] == 'On' and difference > 30 and difference < 60) then
-- pushbullet et mail
  	commandArray['SendNotification']='Sujet du message#mon contenu!'
-- envoi sms
    -- Ici pour moi
	os.execute('curl -k "https://smsapi.free-mobile.fr/sendmsg?user=123456789&pass=azerty&msg=ATTENTION porte ouvert! "')
    -- Ici pour madame
	os.execute('curl -k "https://smsapi.free-mobile.fr/sendmsg?user=987654321&pass=ytreza&msg=ATTENTION porte ouvert! "')

end
return commandArray
Ayant fait plusieurs essais dont 1 qui a fonctionné, impossible de réussir à nouveau. Je suis perdu...!
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Envoi sms si porte ouverte pendant plus de x secondes

Message par vil1driver »

Salut,

Les scripts time sont lancés toutes les minutes..

Je pense que ta fenêtre de tire (30s à 60s) est trop juste.

Exemple:

Porte ouverte à 20h59 et 50 secondes
À 21h le script se lance, on à pas dépassé les 30s de temps d'ouverture,
À 21h01 le script se lance de nouveau, on est à 70 secondes,
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
oula85
Messages : 161
Inscription : 29 avr. 2015, 18:09
Localisation : Challans

Re: Envoi sms si porte ouverte pendant plus de x secondes

Message par oula85 »

C est un script_device qu il te faut
heartblood
Messages : 189
Inscription : 13 août 2015, 09:50

Re: Envoi sms si porte ouverte pendant plus de x secondes

Message par heartblood »

oula85 a écrit :C est un script_device qu il te faut
Un scritp_device avec un stop ? Le mieux c'est encore un script_time même si le temps va varier...
A moins d'avoir un site internet avec API qui permet de créer un chronomètre virtuel sur Domoticz. Par exemple si le chrono se met en route module virtuel = on, à la fin du compte à rebours, le site envoi un off. (IFTTT possible ??)
cyberfrk

Re: Envoi sms si porte ouverte pendant plus de x secondes

Message par cyberfrk »

En effet, en me documentant un peu, j'ai compris la différence et surtout l'incidence de script_time (lancé chaque minutes) et script_device (en fonction du changement d'état). ;)

D'après vos échanges, je déduis que je dois nommer le script en fonction de :
-vérification toutes les minutes que ma porte est bien fermée (script_time)
-vérification à partir du moment où j'ouvre la porte (script_device) et que je la ferme

A mon avis, le resultat sera le même à quelques 10aines de secondes près, non?
J'avoue être perdu et voudrais savoir comment vous gérez cela?
oula85
Messages : 161
Inscription : 29 avr. 2015, 18:09
Localisation : Challans

Re: Envoi sms si porte ouverte pendant plus de x secondes

Message par oula85 »

script_device avec condition de temps entre 2 changements d'état du capteur

la c'est mon code de détection de soucis de pile ou disfonctionnement de mes sondes oregon mais suffit d'adapter avec une condition de changement d'état de ta porte

Code : Tout sélectionner

--------------------------------
------ Variables à éditer ------
--------------------------------

local sonde = 'Temp Salon' -- Nom de la sonde de température


--------------------------------
-- Fin des variables à éditer --
--------------------------------

time = os.date("*t")  

function timedifference(d)
   s = otherdevices_lastupdate[d]
   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)
   t1 = os.time()
   t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
   difference = os.difftime (t1, t2)
   return difference
end


-- on regarde de quand date la dernière relève de température

local lastSeen = timedifference(sonde)

commandArray = {}


-- lance une alarme par zone au dessus du seuil 600s si l'alarme est à OFF et la coupe en dessous si l'alarme est à On 

if (lastSeen > 600 ) and (otherdevices['Pile Salon'] == 'Off') then
      commandArray['Pile Salon']='On'
end

if (lastSeen < 600 ) and (otherdevices['Pile Salon'] == 'On') then
      commandArray['Pile Salon']='Off'
end


   
    
   
  return commandArray
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: Envoi sms si porte ouverte pendant plus de x secondes

Message par rimram31 »

En fait ta logique envoie des sms que la porte soit ou non fermée :-) seul le contenu du message change je suppose. Désolé, je n'ai pas de script tout fait a te proposer mais étant donné la logique que tu souhaites décrites plus haut: j'ouvre la porte puis selon > 60 s ou fermée, j'effectue une action, je verrais en réalité deux scripts.

Un premier script "device" capture le changement d'etat On/Off de ta porte. Si passage a On, il "arme" (créé) une variable contenant la date/heure de l'événement. A écrire mais en gros: porte_ouverte = os.time()) Dans le même script si au contraire passage a Off et la variable "armée" (non vide, existante ?) => cas Off "avant les 60 secs".
Un 2eme script "time" celui là s'exécute et contrôle l'existence de la variable, si elle existe checke (elle contient la date/heure) si > 60 secs (en réalité jusqu'à 2 minutes au pire) et envoie le SMS pas fermé (et désarme la variable ...).

Ta variable armée lors du passage a On de la porte sera désarmée, soit par le script device parce que la porte est fermée "a temps", soit par le script time en voiture balai (:-)) si pas de changement dans un temps "raisonnable". La "variable" te permet de communiquer de l'appel s'un script a un autre.
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
ben33880
Messages : 268
Inscription : 13 nov. 2014, 21:12

Re: Envoi sms si porte ouverte pendant plus de x secondes

Message par ben33880 »

Tu as la commande "at" qui te permet de lancer une commande à une heure donnée ( now + 1 minutes par exemple), mais c'est du shell pas du lua.
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Envoi sms si porte ouverte pendant plus de x secondes

Message par patrice »

Bonjour

Dans l'idée de la soluce de rimram31 ,une autre piste que je vois est de jouer avec 3 scripts

Un 1er script lié à l' action ON de la porte renomme un fichier device_time_aaa.XXXX en device_time_aaa.lua
Un 2eme script lié à l'action OFF de ta porte recopie le fichier device_time_aaa.lua en device_time_aaa.XXX

ET donc durant le ON de ta porte tu as un fichier device_time_aaa.lua qui se declenche tt les minutes qui peut vérifier le temps depuis lequel elle est ouverte par un lastupdate et faire le job que tu veux

le OFF en renommant le script time arrete ce mecanisme

Bon ca vaut, ce que ca vaut
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Répondre