Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'zone'.



Plus d’options de recherche

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Bienvenue
    • Annonces et suggestions
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Autres Solutions Domotiques
  • La HC2 et ses périphériques
    • La Home Center pour les nuls
    • Home Center 2 & Lite
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Alarme & Vidéo-surveillance
    • Multimédia
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets...)
    • Eclairage
    • Applications Smartphones et Tablettes
    • English Section
  • Les objets connectés
    • Les Assistants Vocaux
  • Fibaro's Awards
    • Membre du mois
    • Jeux concours & Cadeaux
  • Les bonnes affaires
    • Sites internet
    • Petites annonces

Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Jabber


Skype


Ville :


Intéret :


Version

1 résultat trouvé

  1. Moicphil

    Module Virtuel Alarme Avancée

    Module Virtuel Alarme Avancée Voici un module virtuel qui va vous permettre de gérer une " alarme " avec sélection de la zone à contrôler. Ce module est couplé à une seule et unique scène. Avant d'activer la zone choisie, vous aurez préalablement renseigné les sensors à contrôler. Possibilité, pour chaque zone, d'exclure temporairement un ou plusieurs sensors de la zone. Possibilité de lancer un test de l'ensemble des sensors déclarés dans la HC2. Ceci pour vérifier leur état ( ouvert ou fermé ) Un mode "Panic" fonctionnant sur un double-clic (paramétrable) Principe de fonctionnement : Appui sur la zone souhaitée...si les sensors déclarés sont dans l'état "fermé", on active le mode choisi (via une variable) puis push pour confirmer la mise en route. Si un ou des sensors sont ouverts, on reste en mode "arrêt", puis push pour nous signaler quel(s) sensor est ouvert(s). La scène contrôle en continu l'état des variables et des sensors. si passage en "ouvert" pendant qu'une zone est active, les actions se feront selon votre choix selon si votre sensor est "ouvert" ou "ouvert et armé" Nous avons donc 7 scènes en une . Dans ce module, pour "regrouper", j'ai intégré le pilotage de mes automatismes, mais vous pouvez bien évidement supprimer les boutons et labels dédiés. Avant toute chose, créer 3 variables : PA_Sensors (stocke les ID a contrôler) PA_Mode (stocke le mode en cours) PA_Exclus (stocke les ID a exclure) Sur les 3 premiers boutons (dans mon cas, c'est Jour, Nuit, Silence), il faut remplacer la ligne local sensors = {21, 28, 91, 82} par les détecteurs que vous souhaitez vérifier selon le mode : . Si vous souhaitez "armer" les sensor dans un mode vous pouvez saisir le code ci-dessous pour chaque sensor à armer : . local sensors = {133, 25, 232, 103, 28, 31, 132, 229, 228, 29, 30, 131} --"Porte escalier","Porte salon 1","Porte entrée","Porte salon 2","Fenetre garage","Fenetre buanderie","Fenetre cuisine","Porte de garage","Chambre grise","Fenetre chambre","velux","Fenetre salon 3"} -- --------------------------------------- -- Ne pas toucher -- --------------------------------------- local mode = "Jour" fibaro:setGlobal("PA_Sensors", json.encode(sensors)) fibaro:setGlobal("PA_Mode", mode) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblMode.value", mode) --pour armer un ou des sensors : --fibaro:call(25, "setArmed", "1") armer un sensor --fibaro:call(232, "setArmed", "1") armer un sensor . Les boutons d'exclusion sensor: Derrière chaque bouton, renommer le Label ( dans mon cas "Fen.1" ... "Fen.2" ), puis copier le code ci-dessous et changer l'ID de l'ouvrant concernée ..ID 25 dans mon cas car 25 est l'ID de mon détecteur de fenêtre 1 local sensor = 25 . Code à insérer sur chaque bouton : local sensor = 25 -- --------------------------------------- -- Ne pas toucher -- --------------------------------------- function exist(t, s) for i,k in ipairs(t) do if (k == s) then return i end end return nil end local exclus = fibaro:getGlobal("PA_Exclus") if (exclus and exclus ~= "") then exclus = json.decode(exclus) else exclus = {} end local index = exist(exclus, sensor) if (index) then table.remove(exclus, index) else table.insert(exclus, sensor) end local jExclus = "" local nExclus = "" if (#exclus > 0) then jExclus = json.encode(exclus) for i = 1, #exclus do nExclus = nExclus .. fibaro:getName(exclus[i]) .. ", " end nExclus = nExclus:sub(1, nExclus:len()-2) end fibaro:setGlobal("PA_Exclus", jExclus) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblExclus.value", nExclus) Vous pouvez, si vous souhaitez, supprimer ou ajouter des boutons supplémentaires. Bouton "test des ouvrants" : Pour le bouton "test des ouvrants", spécifier le ou les Id des smartphones qui recevront une notification : (Dans mon cas : 239 ) . Voici la scène qui gère tout ça : Ce que vous avez à faire : Au début du code... - Renseigner l'ensemble des id des sensors associé à la HC2 sous l'entète "properties" - Renseigner l'Id du ou des smartphones - Renseigner l'Id du module virtuel précédemment créé. - Renseigner les actions selon le mode choisi et si le(s) sensor(s) et armé ou non : . --[[ %% properties %% globals PA_Mode PA_Sensors --]] local portables = {xx, xx} local id_module_virtuel = xxx 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 ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Jour" and not armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Nuit" and armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Nuit" and not armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Silence" and armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Silence" and not armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Manuel" and armed) then ----------------------------------------------------------------- elseif (mode == "Manuel" and not armed) then ----------------------------------------------------------------- elseif (mode == "Arret" and armed) then ----------------------------------------------------------------- elseif (mode == "Arret" and not armed) then ----------------------------------------------------------------- ----------------------------------------------------------------- elseif (mode == "Panic") then ----------------------------------------------------------------- ----------------------------------------------------------------- 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 (doors[i]~=nil) then local id = tonumber(doors[i]) local name = fibaro:getName(id) or "unknown" if (tonumber(fibaro:getValue(id, "value")) == 1) then table.insert(stillopen, id) fibaro:debug(name .. " est ouverte") else fibaro:debug(name .. " est fermée") end else fibaro:debug("ID #"..i.." n'existe plus") 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 -- -------------------------------------------- -- Actions si sensor(s) ouvert(s) ----------------------------------------------- -- on averti par push sendMessage(msg) -- Passage en mode Arret local mode = "Arret" fibaro:setGlobal("PA_Mode", mode) fibaro:call(id_module_virtuel, "setProperty", "ui.lblMode.value", mode) 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 else ------------------------------------------- -- Actions lorsque l'alarme est activée ------------------------------------------- --Vos actions ici ---------------------------------------------- end end elseif (source["type"] == "other") then id_declencheur = nil 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 -- J'ai testé ce module pendant 15 jours, sans aucuns soucis, très fiable et réactif. Pour télécharger le Vfid, c'est ici : >> Alarme_Avancée.vfib J’espère ne rien avoir oublié et que c'est assez clair... Un grand merci à Steven pour son aide si précieuse . .
×