jeremyp452 Posté(e) le 1 août 2014 Signaler Posté(e) le 1 août 2014 Merci pour vos explications! Pour moi qui est un novice de programmation Fibaro j’entraperçois une lueur! ton exemple m'a beaucoup fais avancer dans la compréhension du principe fonctionnement. pour ma pars ça ne fonctionne pas encore mais je m'y attache.
Rocketlud Posté(e) le 17 août 2014 Signaler Posté(e) le 17 août 2014 Sympa Tout ça, merci pour le partage
PITP2 Posté(e) le 18 août 2014 Signaler Posté(e) le 18 août 2014 En effet quel boulot ! Pour ma gouverne la différence avec l'alarme native du système Fibaro est la gestion de zones différentes (Jour / Nuit) ?
Moicphil Posté(e) le 18 août 2014 Auteur Signaler Posté(e) le 18 août 2014 C'est ca, moi j'ai mis "jour/nuit" mais ça peut être des zones physiques, garage, extérieur, étage, total, etc... Et d’être averti par mail, push, etc...si un détecteur est ouvert lors de la sélection de la zone. Et aussi, la possibilité d'armer ou non les détecteurs. ( Pour l'alarme Fibaro, l'armement est obligatoire )
Nico Posté(e) le 1 septembre 2014 Signaler Posté(e) le 1 septembre 2014 Et on ne pourrait pas envisager de lier ce module au module alarme d'origine ?
Moicphil Posté(e) le 1 septembre 2014 Auteur Signaler Posté(e) le 1 septembre 2014 Je ne pense pas ... Le module alarme natif active systématiquement l' armement des sensors... Dans ce module virtuel, les conditions sont infinies car un peut spécifier l'armement oui/non + une variable. Peut être que dans le futur Fibaro nous donnera la possibilité de gérer des zones, je trouve que c'est vraiment utile...
soulac Posté(e) le 12 juillet 2015 Signaler Posté(e) le 12 juillet 2015 Bonjour Moicphil, super tuto mais voila je me pose quelque question. J'ai bien compris que ce module nous permet de choisir la zone, de sélectionner les ouvrants à exclure et savoir l'état de nos sensors mais il y a quelque chose que j'ai loupé. Ce module nous permet pas d'activer l'alarme avec si l'un des détecteurs se déclenche il active la sirène. Question bête mais pouvez vous m'éclaircir. D'avance merci
Moicphil Posté(e) le 12 juillet 2015 Auteur Signaler Posté(e) le 12 juillet 2015 Bonjour Soulac, je suis désolé mais je suis pas sur d'avoir compris ta question. En fait c'est toi qui choisi tes actions donc oui tu peux déclencher tes sirènes des déclenchement d'un sensor.
soulac Posté(e) le 13 juillet 2015 Signaler Posté(e) le 13 juillet 2015 Bonjour Moicphil Tout d'abord merci pour ton retour . Bon accord une fois je vois que je ne suis pas trop à l'aise mais , fort de persévérance on y arrive. Donc si je comprends bien avec le module on peut : Sélectionner une zone pour armer les sensor On peux désactiver un sensor (exemple détecteur de fenêtre car il fait chaud en se moment) Par contre je ne vois pas ou on déclare notre sirène et comment on la gère. Je m'explique : Alarme Jour : J'arme mes sensor et mes détecteurs de portes et de fenêtre. J'attend xx seconde histoire de me laisser le temps de sortir de chez moi. ( je ne vois pas dans le module si on peut le faire) Puis alarme activé. Intrusion : Si il y a une détection d'un des détecteurs alors j'active ma sirène. ( je ne vois pas dans le module si on peut le faire) Voila en quelque ligne ce que je souhaiterais faire. Est que se module me permet de faire ceci ou je suis complètement à coté de la plaque. (tu as le droit de me le dire merci de ton retour.
Moicphil Posté(e) le 13 juillet 2015 Auteur Signaler Posté(e) le 13 juillet 2015 Salut Il faut modifier tout ca directement dans la scéne dédiée. j'ai mis un exemple au dessus, selon 2 états ( zone nuit et silence ) > http://www.domotique-fibaro.fr/index.php/topic/1527-module-virtuel-alarme-avancée/?p=20034 Il faut donc insérer tes lignes ( en LUA ) selon tes zones Prend le temps de bien regarder le fonctionnement de la scene. Tu peux ajouter des actions : des l'armement des capteurs, des arlarme d'un sensor si armé ou pas, etc ( pour mettre en route une sirène : fibaro:call(xx, "turnOn") )
soulac Posté(e) le 14 juillet 2015 Signaler Posté(e) le 14 juillet 2015 Bonjour Moicphil, Effectivement avec toute tes explication j'arrive à déclencher ma sirène des qu’un détecteur est ouvert. Par contre je n'arrive pas à faire une tempo de 20s , le temps de sortir de chez moi . Je suis partie sur ce code si dessous. elseif (mode == "Jour" and not armed) then -- vos actions ici fibaro:sleep(20000)--Attente de 20s fibaro:call(100, "setValue", "30")--Sirène 30% Mais après 20s si le détecteur à était ouvert alors la sirène s'allume. Pourrais tu encore me donner un cout de pousse.* Encore merci.
Moicphil Posté(e) le 14 juillet 2015 Auteur Signaler Posté(e) le 14 juillet 2015 Bonjour Soulac La scene n'est pas prévue pour le moment pour gerer un retard avant armement. Le module virtuel, selon la zone séléctionnée envoi dans une "table" la liste des id. Le moyen le plus simple pour toi étant de temporiser directement dans le code du bouton de zone juste avant l'envoi de la variable. Et l'avantage, tu pourras de plus temporiser que certaines zones ou avec un temps différent Voilà un exemple ou tu peux mettre la tempo, directement dans le code du ou des boutons... local sensors = {523, 305, 232, 103, 527, 525, 132, 229, 228, 495, 131, 326} --"Porte escalier","Porte salon 1(25)","Porte entrée","Porte salon 2","Fenetre garage","Fenetre buanderie","Fenetre cuisine","Porte de garage","Chambre grise","Fenetre chambre","Fenetre salon 3","volets"} -- --------------------------------------- -- Ne pas toucher -- --------------------------------------- local mode = "Jour" fibaro:sleep(60x1000) fibaro:setGlobal("PA_Sensors", json.encode(sensors)) fibaro:call(fibaro:getSelfId(), "pressButton", "27")--test des ouvrant fibaro:setGlobal("PA_Mode", mode)
soulac Posté(e) le 15 juillet 2015 Signaler Posté(e) le 15 juillet 2015 Bonjour Moicphil, Encore merci pour tout les renseignements, effectivement tout fonctionne comme je le veux. J'ai encore des questions sur deux trois choses. Sur le module virtuel quand j'active le mode JOUR, j'ai bien ma tempo de 20s et après mon alarme est activé. Il y a une chose qui me perturbe le TEST DES OUVRANTS ce fait après le mode sélectionné . Si j'ai des portes qui sont ouvert et je met mon alarme pas de problème, mais l'alarme ne sonne pas alors que j'ai des portes ouvertes. Pour moi on devrait faire un TEST DES OUVRANTS voir l'état des portes et des fenêtres ouvert. Si on veux laisser une porte ou/et une fenêtre on les inhibes . Puis on fait le choix d'une zone. Question : Est ce que c'est un fonctionnement normal ? Est ce qu'on peut faire un fonctionnement comme décrit si dessus ? Merci de ton retour
Moicphil Posté(e) le 15 juillet 2015 Auteur Signaler Posté(e) le 15 juillet 2015 Bonsoir Soulac Je crois qu'on a a peut prés les memes attentes au niveau de l'alarme. Si j'ai bien compris, ce que tu veux ( et c'est ce que je fais hormis la tempo ) : - appui sur le BP selection de zone > test des ouvrants > si ouvrants OK : On temporise puis on arme > si ouvrant(s) KO : On passe en arret puis push pour spécifier quel sensor est ouvert Dans ce cas, comme dans mon message au dessus, dans chaque bouton de zone rajouter un appui sur le bouton test : local mode = "Jour" fibaro:setGlobal("PA_Sensors", json.encode(sensors)) fibaro:call(fibaro:getSelfId(), "pressButton", "27")--test des ouvrant Dans la scène maintenant : Vers la ligne 239 Pour etre notifié lors d'un test des ouvrants : Modifier selon ton besoin ( moi j'utilise "Pushover" ) : if (stillopen and #stillopen > 0) then -- au moins une porte n'est pas fermée local msg = "" if (#stillopen == 1) then msg = msg .. "Attention : " else msg = msg .. "Attention : " end for i = 1, #stillopen do msg = msg .. " " .. fibaro:getName(tonumber(stillopen[i])) end if (#stillopen == 1) then msg = msg .. " est toujours ouverte." else msg = msg .. " sont toujours ouvertes." end -- on averti sendMessage(msg) fibaro:sleep(2000) fibaro:setGlobal("pushover", msg) fibaro:sleep(2000) fibaro:call(198, "pressButton", "1") --pushover lua Toujours dans la scène ( vers ligne 317 ) tu peux aussi choisir des actions à effectuer uniquement quand le test des ouvrants est ok et que l'alarme est en route Dans mon exemple, j'eteint par sécurité des lampes et clignoter les leds des sirenes, mais tu peux mettre un push de confirmation par exemple... ------------------------------------------- -- Actions lorsque l'alarme est activée ------------------------------------------- fibaro:setGlobal("ETATALARME", "Active") fibaro:call(11, "turnOff")--lampes salon fibaro:call(13, "turnOff")--rgbw fibaro:call(122, "turnOff")--rgbw fibaro:call(186, "turnOff")--rgbw fibaro:call(558, "turnOff")--rgbw cuisine sol fibaro:call(261, "turnOff")--lampes bar fibaro:call(618, "turnOff")--halogènes exterieurs fibaro:call(201, "turnOff");--tablette fibaro:call(316, "pressButton", "2");--hue tablette fibaro:call(317, "pressButton", "2");--hue lampe haute fibaro:call(323, "pressButton", "2");--hue lampe bloom fibaro:call(289, "pressButton", "2");--select param sirene fibaro:sleep(2000);--pause 2 sec fibaro:call(289, "pressButton", "4");--select param sirene fibaro:sleep(2000) fibaro:call(325, "turnOn");--sirene garage fibaro:call(291, "turnOn");--sirene salon Bon courage Si tu galère toujours, je t'enverrais par MP mon module et scène...
soulac Posté(e) le 16 juillet 2015 Signaler Posté(e) le 16 juillet 2015 Bonjour Moicphil, Merci beaucoup pour ton retour et ton aide. Je vais essayer de faire sa ce week end je te tiens au courant.
pepite Posté(e) le 16 juillet 2015 Signaler Posté(e) le 16 juillet 2015 @moicphil : tu eteins les lampes même si elles le sont déjà ? tu ne les testes pas ? Vivement que j'ai une alarme, j'aime beaucoup ton module ;-) Petite parenthese, j'essaierais bien de faire la meme avec GEA.. ;-). toujours dans l'idee de n'avoir a maintenir qu'une scene ;-)
Moicphil Posté(e) le 16 juillet 2015 Auteur Signaler Posté(e) le 16 juillet 2015 Non, pas de testeur l'état des lumières, même si elles sont déjàéteintes, cela n'est pas gênant. GEA...pas sûr que tu puisses tout faire identique, notement l'envoi des id dans une table selon la zone mais le contrôle des ouvrants, variables push etc , je pense que c'est jouable.
pepite Posté(e) le 17 juillet 2015 Signaler Posté(e) le 17 juillet 2015 oui tu as raison, mais ton module tel quel est top déjà;-)
soulac Posté(e) le 17 juillet 2015 Signaler Posté(e) le 17 juillet 2015 Bonjour Moicphil, Bon voici mon code sur le bouton Mode "JOUR" local sensors = {134,152,25,40,121,34,28,42,95,142} -- Ne pas toucher -- --------------------------------------- local mode = "Jour" fibaro:call(100, "setValue", "30")--Sirène flash on fibaro:sleep(20000) fibaro:setGlobal("PA_Sensors", json.encode(sensors)) fibaro:call(fibaro:getSelfId(), "pressButton", "8") --test des ouvrant fibaro:setGlobal("PA_Mode", mode) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblMode.value", mode) fibaro:call(100, "turnOff");--Sirène flash off Première question je ne suis pas sur du numéros de bouton qui correspond à "test des ouvrants" ou puis je le trouver de manière sur ? Désoler de la question bète je sais mais bon il faut bien démarrer un jour. Merci de ton retour.
Moicphil Posté(e) le 17 juillet 2015 Auteur Signaler Posté(e) le 17 juillet 2015 Salut ! Il faut "compter" l'emplacement ou se trouve le bouton, compter aussi les labels Par exemple, pour le module d'exemple dans le post n°1, le bouton lié à "escalier" est 15, celui "test des ouvrants" est 23.
pepite Posté(e) le 17 juillet 2015 Signaler Posté(e) le 17 juillet 2015 Pour trouver le numero des boutons, tu comptes de haut en bas et de gauche a droite ;-)
soulac Posté(e) le 17 juillet 2015 Signaler Posté(e) le 17 juillet 2015 Ok merci beaucoup messieurs, Se soir je serais moins C......
soulac Posté(e) le 17 juillet 2015 Signaler Posté(e) le 17 juillet 2015 OK sa fonctionne : Quand j'appuis sur le mode JOUR sa appuis sur le TEST DES OUVRANTS Si une porte est ouvert sa m'envois un Push porte ouvert (Normal) . Par contre le mode JOUR s'active alors qu'il devrait rester sur ARRET ( Pas Normal). Si tout est fermer alors pas d’envois (Normal). Encore un truc que j'ai loupé. Une ptite idée??
Moicphil Posté(e) le 17 juillet 2015 Auteur Signaler Posté(e) le 17 juillet 2015 Dans la scene, Il faut que tu fasses un "pressButton" sur Arret si une porte est ouverte, vers la ligne 247 Voici mon passage de code pour info , mais j'utilise GEA et les variables ... -- on averti sendMessage(msg) fibaro:sleep(2000) fibaro:setGlobal("pushover", msg) fibaro:sleep(2000) fibaro:call(198, "pressButton", "1") --pushover lua local mode = "Arret" fibaro:setGlobal("PA_Mode", mode) fibaro:call(id_module_virtuel, "setProperty", "ui.lblMode.value", mode)
soulac Posté(e) le 18 juillet 2015 Signaler Posté(e) le 18 juillet 2015 Bonjour Moicphil, j'ai testé mais toujours le même problème. Je récapitule depuis le début. Activation du mode JOUR Tempo de 20s avec la sirène qui flache histoire de savoir qu'il nous reste 20s pour sortir. Puis activation de l'alarme en mode jour. SI l'un des détecteurs est ouvert alors la sirène sonne (mal à la tête tu auras). Mon seul problème c'est si j'ai un détecteur déjà ouvert lors de la mise en alarme je dois repassé en ARRàŠT et avoir dans le résultat du test les détecteurs qui sont en défaut. Je pense que j'ai un problème dans ma scène c'est même sur. --[[ %% properties 152 value 25 value 110 value 40 value 121 value 34 value 28 value 42 value 95 value 142 value %% globals --]] local portables = {16} local id_module_virtuel = 110 function doIt(mode, armed, id) fibaro:debug(mode) if (armed) then fibaro:debug("armé") else fibaro:debug("désarmé") end ----------------------------------------------------------------- if (mode == "Jour" and armed) then -- vos actions ici ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Jour" and not armed) then -- vos actions ici fibaro:call(100, "setValue", "30")--Sirène 30% ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Nuit" and armed) then -- vos actions ici ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Nuit" and not armed) then -- vos actions ici ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Silence" and armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Silence" and not armed) then -- vos actions ici ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Panic") then -- vos actions ici ----------------------------------------------------------------- ----------------------------------------------------------------- end end -- ----------------------------------------------------- -- Envoi le message PUSH -- ----------------------------------------------------- function sendMessage(message) for i = 1, #portables do fibaro:call(portables[i], "sendPush", message) end fibaro:debug(message .. " [envoyé]") end -- ----------------------------------------------------- -- Vérifie si les portes sont bien fermées -- ----------------------------------------------------- function check(doors) local stillopen = {} -- On vérifie l'état des portes -- for i = 1, #doors do if (tonumber(fibaro:getValue(doors[i], "value")) == 1) then table.insert(stillopen, doors[i]) fibaro:debug(fibaro:getName(doors[i]) .. " est ouverte") else fibaro:debug(fibaro:getName(doors[i]) .. " est fermée") end end if (stillopen and #stillopen > 0) then -- au moins une porte n'est pas fermée local msg = "" if (#stillopen == 1) then msg = msg .. "Attention : " else msg = msg .. "Attention : " end for i = 1, #stillopen do msg = msg .. " " .. fibaro:getName(tonumber(stillopen[i])) end if (#stillopen == 1) then msg = msg .. " est toujours ouverte." else msg = msg .. " sont toujours ouvertes." end -- on averti sendMessage(msg) fibaro:sleep(2000) fibaro:setGlobal("pushover", msg) fibaro:sleep(2000) fibaro:call(110, "pressButton", "4") --pushover lua local mode = "Arret" fibaro:setGlobal("PA_Mode", mode) fibaro:call(id_module_virtuel, "setProperty", "ui.lblMode.value", mode) fibaro:call(110, "pressButton", "4") --pushover lua return false end return true end -- ----------------------------------------------------- -- Transforme une châine en tableau en utilisant -- un délimiteur -- ----------------------------------------------------- function split(text, sep) local sep, fields = sep or ":", {} local pattern = string.format("([^%s]+)", sep) text:gsub(pattern, function(c) fields[#fields+1] = c end) return fields end local source = fibaro:getSourceTrigger() local id_declencheur = nil local isOpen = "1" fibaro:debug(source["type"]) if (source["type"] == "property") then id_declencheur = tonumber(source["deviceID"]) elseif (source["type"] == "global") then fibaro:debug( source["name"]) local gName = fibaro:getGlobal(source["name"]) if ( gName == "Panic") then doIt( "Panic", false, 0 ) elseif (source["name"] == "PA_Sensors") then fibaro:debug(gName) local doors = fibaro:getGlobal("PA_Sensors") local exclus = fibaro:getGlobal("PA_Exclus") doors = split(string.gsub(doors, "[%[%]]", ""), ",") if (exclus and exclus ~= "") then exclus = split(string.gsub(exclus, "[%[%]]", ""), ",") else exclus = {} end todo = {} for i = 1, #doors do local found = false for j = 1, #exclus do if (doors[i] == exclus[j]) then found = true end; end if (not found) then table.insert(todo, doors[i]) fibaro:debug(doors[i] .. " doit être vérifiée") end end fibaro:debug("Checking doors") if (not check(todo)) then --fibaro:call(id_module_virtuel, "pressButton", "4") local mode = "Arret" fibaro:setGlobal("PA_Mode", mode) fibaro:call(id_module_virtuel, "setProperty", "ui.lblMode.value", mode) else ------------------------------------------- -- Actions lorsque l'alarme est activée ------------------------------------------- -- vos actions ici si nécessaire fibaro:call(100, "setValue", "30")--Sirène 30% fibaro:call(60, "startProgram", "5") --PROGRAMME RGBW salon ---------------------------------------------- end end elseif (source["type"] == "other") then id_declencheur = 152 isOpen = "0" end if (not id_declencheur) then return end fibaro:debug("Déclencheur " .. id_declencheur) local actif = fibaro:getGlobal("PA_Sensors") local exclus = fibaro:getGlobal("PA_Exclus") if (actif and actif ~= "") then fibaro:debug(actif) actif = string.gsub(actif, "[%[%]]", ",") local exist = string.find(actif, ","..id_declencheur) if (exist) then fibaro:debug("exist") end local todo = exist if (exclus and exclus ~= "") then fibaro:debug(exclus) exclus = string.gsub(exclus, "[%[%]]", ",") if (string.find(exclus, ","..id_declencheur)) then fibaro:debug("ID Excluded") todo = false end else fibaro:debug("Exclus empty") end if (todo and fibaro:getValue(id_declencheur, "value")==isOpen ) then doIt( fibaro:getGlobal("PA_Mode"), fibaro:get(id_declencheur, 'armed')=="1", id_declencheur ) end end Peux tu jeter un coup d’Å“il afin de finaliser mon alarme avec ton super module qui est pour moi le plus finalisé. Merci encore de ta patience.
Messages recommandés