HomeMode Manager (type GeoFence)
      Préambule :   Si comme moi vous recherchez une solution pour savoir si des membres de votre habitation sont présents ou s'ils sont tous partis afin de exécuter des scénarios, comme par exemple : Lorsqu'un membres de la famille arrive à la maison : Désactiver les caméras de votre domicile afin de préserver l'intimité des membres de la famille Suggérer l'arrêt de l'alarme (par notification push action) Allumer les lumières extérieurs la nuit Ouvrir les volets ou le portail ... Lorsque tous les membres de la famille ont quitté la maison : Activer les caméras de votre domicile Vérifier que l'alarme à bien été activée sinon suggérer la mise en marche de l'alarme (par notification push action) Simuler une présence la nuit (par suggestion push ou automatique) Eteindre toutes les lumières Fermer les volets ou le portail lorsque vous rentrez chez vous ... Je sais c'est une fonctionnalité de l'Application Fibaro, mais il semblerait qu'elle fonctionne de façon aléatoire et qu'elle consomme un max de la batterie.   J'ai donc fait quelques recherches, notamment sur le Forum officiel de Fibaro, mais les solutions (App pour Smartphone de type GeoFence avec utilisation de IFTT, Détection de la connexion sur le réseau wifi, ...) proposées me donnaient pas vraiment satisfaction. J'ai donc cherché une solution native sur les iPhones (oui j'avoue, nous mangeons des pommes dans notre petite famille).    L'iPhone permet au travers de l'application Maison (Home) la possibilité de crée des automatisations quand notamment : Quelqu'un arrive à un lieu (ex. : la maison) Quelqu'un quite un lieu (ex. : la maison) Et utiliser ces automatisations pout agir sur les boutons d'un Virtual Device de nos HC2 et donc de modifier un label et/ou une variable globale qui pourront être utilisés dans nos différents scénarios.   Attention, il faut évidement au préalable avoir installé et configuré Homebridge pour que vos Virtual Device soient visibles dans l'application Maison.   Mais vous pouvez également utiliser ce VD avec toutes autres solutions pour détecter la presence ou absence des membre du domicile comme celles citées précédemment : App Fibaro permettant d'obtenir le localisation et au travers d'une scène d'intercepter cette position App pour Smartphone (iOS ou Androïd) de type GeoFence avec utilisation de IFTT pour dialoguer avec la HC et agir sur le VD Scène de détection de la connexion ou non des smartphones sur le réseau wifi de la maison et agir sur le FD ...)   L'intérêt de ce VD est qu'il, est entièrement automatisé. Il suffit de nommer les utilisateurs à suivre dans les labels et le tour est joué. Magique, non ?    Le Projet :   Création d'un VD permettant de changer le mode soit présence ou absence selon 2 boutons soit pour : Un seul membre du domicile L'ensemble des membres du domicile (tous d'un coup) Cela peut être notamment utile lorsque par exemple : un téléphone n'a plus de batterie et que tous les membres ont quitté le domicile activation du mode vacance activation de l'alarme ...   Les résultats sont sont stocké dans : Les labels correspondant à chacun des membres Une variable globale (option facultative) de votre choix (que j'ai nommée HomeMode) qui va contenir : Par membre sont état : Présent = true  (en valeur booléenne) Absent = false  (en valeur booléenne) Pour l'ensemble des membres du domicile l'état : Présente = true  (en valeur booléenne) Absente = false  (en valeur booléenne) Nota : Les valeurs true et false peuvent être modifiées par autre chose, idem pour le nom de la variable globale HomeMode. Voir point 5 dans la partie Configuration.   Vous pouvez donc utiliser pour vos scènes et VD, soit le contenu des labels soit le contenu des entrées dans la variable globale.   Pré-requis :   Si vous utilisez la localisation avec l'application Maison (Home) : Utiliser des d'iPhones et activer la localisation Avoir une AppleTV 4+ ou un iPad (iOS 10+) qui reste à la maison (branché) ou un HomePod pour faire hub HomeKit. (à jour !) Avoir configuré Homebridge pour que vos Module et Virtual Device soient visible dans l'application Maison de votre iPhone Configurer les automatisations sur votre iPhone   Si vous utilisez une autre solution de localisation : Rien de particulier, si ce n'est de mettre en place cette solution   Installation : Télécharger et installer le Virtual Device ci-dessous (dans sa dernière version) Télécharger les icônes ci-dessous ou fabrique les votres Associez les icônes à chacun des boutons du VD en fonction de l'état, ce sera plus jolie   Configuration :   Du Virtual Device :   1) Renseigner dans chacun des boutons vos ID de vos icônes, selon les variables suivante : local Icon_Family_Present = 1235  -- Icon ID when one member of the family is present local Icon_Family_Away    = 1236  -- Icon ID when all members of the family are away 2) Renseigner dans chacun des labels le nom des membres du domicile. Nota : Le premier label et boutons associés correspondent à l'ensemble des membres du domicile et ne doit pas être changé de place. Ce seront ces noms qui sont utiliser dans la Variable Globale (si vous utilisez l'option) 3) Pouvez changer les emoji des boutons. Mais il est souhaitable de le mettre en cohérence avec ceux des variable Label de configuration (voit point 5)  4) Vous pouvez ajouter ou supprimer des membres : En cas d'ajouts, il convient de conserver la même structure et : Ajouter un Label et renseigner le nom du membre Ajouter une ligne de 2 bouton immédiatement après la nouvelle ligne Label et : dans chacun des bouton copier le code présent dans une bouton existant (tout les codes de boutons sont identiques) Associer les icônes aux 2 nouveau bouton En cas de suppression, il convient de supprimer les lignes label et bouton (sauf celles prévue pour l'ensemble des membres du domicile, la famille)     Nota : Si vous utilisez la variable globale. Sont contenu est réactualisé lors de chaque appui sur un bouton (les anciens membres sont supprimer automatiquement) en fonction des membres configurés dans le VD.   5) Facultatif : Presque tout est configurable dans ce VD, vous avez la possibilité de modifier les variables suivantes :  local lbl_UserStateValue_Present = "X Présent" -- Label value (if Present) local lbl_UserStateValue_Away    = "Y Absent"  -- Label value (if Away) local lbl_FamilyStateValue_Present = "X Présente" -- Label value (if Present) local lbl_FamilyStateValue_Away    = "Y Absente"  -- Label value (if Away) local Use_The_VG_HomeMode = true    -- Indicates if you want to use the Global Variable local VG_HomeMode = "HomeMode"      -- Global Variable containing the homemode state local VG_StateValue_Present = true  -- VG value (if Present) local VG_StateValue_Away    = false -- VG value (if Away) local debug = false -- Indicate the debug mode state (true ou false)   De vos codes (Scènes ou VD)   Adapter ou créer vos codes pour prendre en compte soit le contenu du label lblState ou les entrées présentes dans la variable globale pour lancer vos scénarios.   La variable Global a une structure JSON et doit être décodé par la commande : json.decode(). Elle convient ceci (dans mon exemple) : {"Florian":false,"Famille":true,"Gaby":false,"Michel":true}   En ce qui me concerne j'utilise GEA pour tester les changement d'état et j'utilise le contenu des labels pour lancer des actions. Exemple de conditions ci-dessous avec l'utilisation de mon VD Surveillance Station Manager (voir ma signature) : -- Gestion de l'arrivée au domicile d'un membres et le départ de tous les membres ------------------------------------------------------- -- Activation du mode Home Mode dans Surveillance Station Synology -- Mise en marche (activation) des caméras si plus membres du domicile présents -- Arrêt des caméras (désactivation) si l'un de membres est présent au domicile GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Présente"} ,{"Trigger", "lblFamilyPresence"} ,{"Or", {"Label", id["VD_CAM_GLOBAL"], "lblCamState", "#r#Marche"}, {"Label", id["VD_CAM_GLOBAL"], "lblCamState", "#r#Partiel"}}} ,-1, "Un membre de la famille vient d'arriver à la maison, Arrêt des caméras" ,{"VirtualDevice", id["VD_CAM_GLOBAL"], 5} ,"Arrivée d'un membre de la famille de la maison, Arrêt des caméras") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Absente"} ,{"Trigger", "lblFamilyPresence"} ,{"Or", {"Label", id["VD_CAM_GLOBAL"], "lblCamState", "#r#Arrêt"}, {"Label", id["VD_CAM_GLOBAL"], "lblCamState", "#r#Partiel"}}} ,-1, "Tous les membres de la famille ont quitté la maison, Mise en marche des caméras" ,{"VirtualDevice", id["VD_CAM_GLOBAL"], 5} ,"Tous les membres de la famille ont quitté la maison, Mise en marche des caméras") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Présente"} ,{"Trigger", "lblFamilyPresence"} ,{"Label", id["VD_CAM_GLOBAL"], "lblPresence", "#r#Absence"}} ,-1, "Un membre de la famille vient d'arriver à la maison, Activation du mode présence" ,{{"VirtualDevice", id["VD_CAM_GLOBAL"], 4}} ,"Arrivée d'un membre de la famille de la maison, Activation du mode présence") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblFamilyPresence", "#r#Absente"} ,{"Trigger", "lblFamilyPresence"} ,{"Label", id["VD_CAM_GLOBAL"], "lblPresence", "#r#Présence"}} ,-1, "Tous les membres de la famille ont quitté la maison, Activation du mode absence" ,{{"VirtualDevice", id["VD_CAM_GLOBAL"], 4}} ,"Tous les membres de la famille ont quitté la maison, Activation du mode absence") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblToto", "#r#Présent"} ,{"Trigger", "lblToto"} ,{"Open!", id["VOLET_SALON"], 100}} ,-1, "" ,{{"Ask", {id["PHONE_ID_Toto"]}, "Toto arrive à la maison. Ouverture des volets ?", 37} },"Toto vient d'arriver à la maison") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblToto", "#r#Absent"} ,{"Trigger", "lblToto"} ,{"Open!", id["VOLET_SALON"], 0}} ,-1, "" ,{{"Ask", {id["PHONE_ID_Toto"]}, "Toto quitte la maison. Fermeture des volets ?", 110} },"Toto vient de quitter la maison") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblTata", "#r#Présent"} ,{"Trigger", "lblTata"}} ,-1, "Tata arrive de la maison" ,{"Push", {id["PHONE_ID_Toto"]}} ,"Gaby vient d'arriver de la maison") GEA.add({{"Label", id["VD_HomeMode_Manager"], "lblTata", "#r#Absent"} ,{"Trigger", "lblTata"}} ,-1, "Tata quitte la maison" ,{"Push", {id["PHONE_ID_Toto"]}} ,"Tata vient de quitter de la maison") Nota : la condition "TriggerPropertyName" n'est pas une fonction de base de GEA 6.11. Il convient de l'ajouter dans la liste des fonctions renseignées dans la partie : function config() GEA.options.trigger = { name = "Trigger", getValue=function(value) if (not value)then if (GEA.source.type == "autostart") then return "autostart" elseif (GEA.source.type == "global") then return "Global["..GEA.source.name.."]" elseif (GEA.source.type == "property") then return "Property[" ..GEA.source.deviceID .."]" elseif (GEA.source.type == "event") then return "Event["..GEA.source.event.data.deviceId.."]" end elseif (value) then if (GEA.source.type == "property") then return GEA.source.propertyName:gsub("ui.", ""):gsub(".value", "") == value end end return "other" end } Ajouter l'ID du VD et ses labels associés dans l'entête de GEA dans la section properties, cf exemple ci-dessous "999 ui.lblFamilyPresence.value", remplacer 999 par l'ID du VD : --[[
%% autostart
%% properties 999 ui.lblFamilyPresence.value 999 ui.lblToto.value 999 ui.lblTata.value %% globals
%% events
--]]   Quelques exemples de solutions de détection de vos entrées et sorties de maison :   1) Sur vos iPhones avec la fonction intégrée de géolocalisation et l'utilisation de l'application domotique "Maison (home)" d'Apple   Elle nécessites l'installation de Homebridge (voir les tutos ci-dessous, il y a de nombreuses solutions, j'en ai testé qu'une, la première) :   Dans un docker sous un NAS Synology (il en existe plusieurs) : https://github.com/marcoraddatz/homebridge-docker (la solution que j'utilise) https://github.com/oznu/docker-homebridge/wiki/Homebridge-on-Synology (pas testé) https://github.com/ilcato/homebridge-Fibaro-HC2 (pas testé) ... Dans Raspberry PI : https://github.com/nfarina/homebridge/wiki/Running-HomeBridge-on-a-Raspberry-Pi (pas testé) https://techarea.fr/installation-homebridge-sur-raspberry-pi/ (pas testé) https://www.journaldulapin.com/2018/02/06/dyson-homebridge-homekit/ (pas testé) ... Sur Mac OS : https://github.com/nfarina/homebridge/wiki/Install-Homebridge-on-macOS (pas testé) ... Sous windows 10 : https://github.com/nfarina/homebridge/wiki/Install-HomeBridge-on-Windows-10-(new) (pas testé)   Tuto présent sur le forum :     Configuration des réglages de vos iPhones : Réglage > Confidentialité >Service de localisation > Maison Réglage > Confidentialité >Service de localisation > Services systèmes > Partager ma position Réglage > Confidentialité >Service de localisation > Services systèmes > Homekit Réglage > Ton utilisateur en haut > iCloud > Partager ma position coché et à partir de : « Cet appareil » Réglage > Ton utilisateur en haut > Partage familial > Partage de position > Partager ma position coché et à partir de : « Cet appareil »   L'automatisation dans l'application Maison (Home) de votre iPhone :   Voir images ci-dessous, elles parlent d'elles-même :     2) Application Synology DS CAM disponible sur iOS et Android   Elle intègre une solution Geofence permettant  de connaitre les entrées et sorties de la maison.   Cette info est exploitable directement sur votre NAS et elle peut être interceptée avec une règle d'action qui va envoyer en local (sans passer par le Cloud/Internet) une requête sur votre HC2 via une commande de type :   http://<HC2 ip address>/api/callAction?deviceID=XXX&name=pressButton&arg1=2    Voilà une solution compatible pour les 2 mondes iOS et Android  sans faire circuler sur internet vos mots de passe (comme par exemple avec IFTTT).   Utilisation du VD : Utiliser de la première série de bouton pour agir d'un coup pour tous les membres du domicile (Famille) le premier bouton pour activer le mode Présence Utiliser le deuxième bouton pour activer le mode Absence Utiliser boutons suivants pour agir sur un membre du domicile (Famille) en particulier  le premier bouton pour activer le mode Présence Utiliser le deuxième bouton pour activer le mode Absence   Versions : V1.0 : du 15/01/2019 -> Initialisation du projet V2.0 : du 18/01/2019 -> Ajout de la fonctionnalité pour gérer individuellement chacun membres au domicile ou l'ensemble d'un coup   Roadmap - Evolutions à venir : Gérer des localisations différentiées (Travail, Ecole, ...) Fournir quelques exemples de Lignes GEA A voir selon vos suggestions    Dernière version du VD :   VD : HomeMode_Manager V2.0.vfib.json   Icônes :