Aller au contenu

Scene Lua - Notification Si Porte Ouverte Ou Fermer


mprinfo

Messages recommandés

Cette scène n'est pas de moi mais le résultat d'un travail en groupe

 

avec quelques membres du forum

 

 

Elle permet l'envoi de notification vers un ou plusieurs téléphones lorsqu'une porte est fermé ou ouverte

 

  • Il faut juste entrer le numéro d'ID des détecteurs suivi de value dans l'entête de la scène
  • Il faut aussi renseigner les ID du ou des téléphones

 

Elle prévient lorsque la box vient de redémarrer.

--[[
%% autostart
%% properties
69 value
53 value
73 value
--]]
 
-- ================================================
-- PREPARATION DU CODE, ON CREER LES FONCTIONS QUE
-- NOUS ALLONS DEVOIR APPELER PAR LA SUITE
-- Dans notre cas, il y a au moins 2 fonctions :
-- une pour l'envoi du message
-- une pour obtenir les informations du module et son état
--
-- Une fonction est un morceau de code que nous pouvons appeler
-- plusieurs fois. Elle peux recevoir des paramètres.
-- Une fonction peux exister sans pour autant être utilisée
-- ================================================
 
-- ================================================
-- Envoi un message sur un ou plusieurs portables
-- ----------------------------------------------------------------------------------
-- Parmètre :
-- idPortables : numéro d'un portable ou tableau de plusieurs portable
-- message : message à  envoyer
-- Exemple :
-- sendPush(23, "Envoi d'un message simple")
-- sendPush({23,25,27}, "Envoi a plusieurs destinataires")
-- ================================================
function sendPush(idPortables, message)
   if (type(idPortables) == "table") then
      -- Si nous avons plusieurs numéros dans un tableau {}
      for i = 1, #idPortables do
         -- On envoi le message sur tout les portables
         fibaro:call(idPortables[i], "sendPush", message)
      end
      fibaro:debug(string.format("Pushs envoyés : %s", message))
   elseif (type(idPortables) == "number") then
      -- Si nous avons un seul numéro de portable
      fibaro:call(idPortables, "sendPush", message)
      fibaro:debug(string.format("Push envoyé : %s", message))
   else
      fibaro:debug(string.format("Erreur : le numéro %s n'est pas valable", idPortables))
   end
end
 
-- ================================================
-- Retourne les information sur un device
-- ----------------------------------------------------------------------------------
-- Parmètre :
-- deviceId : l'dientifiant du device
-- Exemple :
-- local message = getDeviceInfo(69)
-- ================================================
function getDeviceInfo(deviceId)
   local etat = "ouverte"
   if (fibaro:getValue(deviceId, 'value' ) == "0") then
      etat = "ferme"
   end
   return string.format("La %s est %s.", fibaro:getName(deviceId), etat)
end
 
-- ================================================
-- FIN DE LA PREPARATION DU CODE
-- ================================================
 
-- ================================================
-- DEBUT DU CODE PRINCIPAL
-- ================================================
 
-- Déclaration du/des numéros de portables
local idportables = 181
-- local idportables = {23, 24, 25}
 
-- Le déclencheur de cette scène, va nous permettre de savoir qui et
-- comment cette scène a été démarrée
local SourceTrigger = fibaro:getSourceTrigger()
 
if (SourceTrigger['type'] == 'property') then
   -- si la scène a été démarrée par un "device", on va récupérer
   -- les informations du device
   local message = getDeviceInfo(SourceTrigger['deviceID'])
   -- puis l'envoyer sur les portables
   sendPush(idportables, message)
elseif (SourceTrigger['type'] == 'other') then
   -- Si la scène a été démarrée manuellement
   sendPush(idportables, string.format("La scène a été lancée le %s a %s", os.date("%d/%m/%Y"), os.date("%R")))
elseif (SourceTrigger['type'] == 'autostart') then
   -- Si la scène a été démarrée par une sauvegarde de cette scène
   -- ou le redémarrage de la box
   sendPush(portables, string.format("La box a démarré le %s a %s", os.date("%d/%m/%Y"), os.date("%R")))
end
  • Upvote 3
Lien vers le commentaire
Partager sur d’autres sites

super tout ça, on apprend beaucoup sur LUA.

 

Mais perso je suis fainéant, et j'utilise GEA :

-- notification dès que la porte est ouverte
GEA.add(id["Porteâ€],-1,"La porte est ouverte")

-- notification si la porte est ouverte depuis 5 min
GEA.add(id["Porteâ€],5*60,"La porte est ouverte depuis #duration#")

-- notification à  la fermeture de la porte
GEA.add(id["Porteâ€],-1,"La porte est fermée",{"Inverse"})

N.B. mprinfo : ce n'est PAS pour casser ta baraque, mais il y a plusieurs façons de faire :

  1. les fainéants comme moi
  2. les fan du LUA comme toi, mais grâce à  eux on apprend beaucoup et ils génèrent des idées  :13:
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Jojo je sais que tu es un fan de lua tu utilises gea pour certaines choses et tu te prends comme moi la tête a faire des scripts et dieux sais que c'est bon lorsque cela fonctionne après des heures a s'arracher les cheveux lol

Lien vers le commentaire
Partager sur d’autres sites

en effet, quand je peux le faire simplement avec GEA, je le fait avec GEA.

Quand cela devient plus touchy, c'est du pur LUA (modification avec 1 click de mes heating panels en fonction du mode de chauffe de la maison et des vacances : cela me fait penser que je devrais le partager)

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Merci du partage, a tester de suite ^^

 

@mprinfo

 

j'ai installé la scène et j'ai cela dans le débug

[DEBUG] 14:28:57: Erreur : le numéro nil n'est pas valable
Modifié par cybersquat
Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

Bonjour

 

Je voudrais créer une scène qui se déclenche que sur un cumul de module en 'alerte' et revenu 'Normal' dans un intervalle de 5 min , en gros , seulement si le garage vient de s'ouvrir (et donc refermer ensuite), et que 'presence-voiture= de 0 à  1 ET que la Porte du garage en 'ALERTE' et que Mode 'Soir' ou 'Nuit' ALORS , le NABAZTAG me dit 'Bonsoir',,, (((( si c'est jour, dit Bonjour' bien sure !!!))) tout cela dans un intervalle de 5 min env le temps de rentrer la voiture ,

 

Hu

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

Bonjour,

 

je voudrais utilisée cette scène pour vérifie si mes capteurs de port sont bien fermer avant d'activé mon alarme et ainsi m'envoyer un message push pour m'avertir si telle ou telle porte/fenêtre est ouverte avant l'activation de l'alarme.

 

malheureusement je ne capte pas tout le code, certaine fonction me sont inconnues :(

Lien vers le commentaire
Partager sur d’autres sites

un peu tt !

 

j'essaie par mes propres me moyen mais je n'arrive pas à  m'envoyer un message push du genre:

 

j'ai un module virtuel avec un bouton qui dans l'ideal test mes capteurs de porte avant d'armer l'alarme ! 

 

Comment personnaliser le push comme tu l'as fait ici

sendPush(idportables, string.format("La scène a été lancée le %s a %s", os.date("%d/%m/%Y"), os.date("%R")))
Lien vers le commentaire
Partager sur d’autres sites

Je n'ai rien fait, tout revient à  @mrprinfo 

 

Pour personnaliser le push, tu modifies la variable avec l'id de ton tel qui doit recevoir le push

  • -- Déclaration du/des numéros de portables
    local idportables = 181

Puis tu modifies ce qu'il y a ecrit entre les apostrophes, après le string.format

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

bonjour à  tous,

 

cette  scene fonctionne parfaitement, et en continu

je n'arrive pas à  la désactiver

le seul moyen est de décocher "scene active" dans ses paramètres

 

mon but étant de pouvoir l'activer ou la désactiver par une requette http lors de la mise en route de mon alarme

 

quelqu'un a t il une suggestion??

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
×
×
  • Créer...