Aller au contenu

Rechercher dans la communauté

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



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
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Annonces et suggestions
  • La Home Center et ses périphériques
    • La Home Center pour les nuls
    • HC 2 & Lite
    • HC 3
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Quick App
    • Multimédia (audio, vidéo ...)
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets, piscines, ...)
    • Eclairage
    • Applications Smartphones et Tablettes
  • Autres solutions domotiques
    • Box / Logiciel
    • Modules Nice (433 & 866 MHz)
    • Modules Zigbee
    • GCE Electronics
    • Modules Bluetooth Low Energy
  • Objets connectés
    • Les Assistants Vocaux
    • Netatmo
    • Philips Hue
    • DIY (Do It Yoursel)
  • Sécurité
    • Alarmes
    • Caméras
    • Portiers
    • Serrures
  • Informatique / Réseau
    • Tutoriels
    • Matériels Réseaux
    • Matériels Informatique
    • NAS
    • Virtualisation
  • 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

5 résultats trouvés

  1. Détection de présence avec points d'accès Wi-Fi Ubiquiti Unifi Surveillance d'équipements réseaux connectés (smartphone, etc) Prérequis : Une ou plusieurs borne(s) Ubiquiti Unifi (gamme UAP) Logiciel Unifi Controller opérationnel sur une machine (VM, NAS, etc) Des appareils connectés sur le réseau IP en Wi-Fi Installation : Dans Unifi Controller, créer un utilisateur dédié avec des droits en Read-Only : Dans Unifi Controller, récupérer l'adresse MAC de tous les appareils à surveiller : Télécharger le code LUA en pièce jointe Dans la HC2, créer une nouvelle scène Copier/coller le code LUA dans cette scène Modifier le début du code LUA de la scène comme suit : -- User variables local URL = "https://192.168.1.1:8443" local username = "User" local password = "Password" local intervalle = 60 local LAN_Devices = { { mac = "00:00:00:00:00:00", -- Sony Xperia Z2 vg = "Unifi_LAN_XperiaZ2" }, { mac = "00:00:00:00:00:00", -- Samsung Galaxy S4 Mini vg = "Unifi_LAN_S4mini" } } URL : chemin d'accès à l'interface Web de Unifi Controller username : nom d'utilisateur créé précédemment password : mot de passe de cet utilisateur intervalle : rafraichissement toutes les 60 secondes LAN_Devices : mac : adresse MAC des périphériques Wi-Fi à surveiller vg : variable globale qui contient le timestamp Unix de la dernière fois que l'appareil a été vu sur le réseau (ces variables globales seront automatiquement créées au démarrage de la scène) Sauvegarder la scène, et affecter une icône, par exemple : Sur la HC2, créer une autre scène contenant le code LUA suivant, à adapter en fonction de vos besoins : --[[ %% autostart %% properties %% globals Unifi_LAN_XperiaZ2 Unifi_LAN_S4mini --]] function Check() local delay = 3600*12 local timestamp = os.time() local Unifi_LAN_XperiaZ2 = tonumber(fibaro:getGlobalValue("Unifi_LAN_XperiaZ2")) local Unifi_LAN_S4mini = tonumber(fibaro:getGlobalValue("Unifi_LAN_S4mini")) local PresenceChristophe = fibaro:getGlobalValue("PresenceChristophe") if Unifi_LAN_XperiaZ2 < timestamp - delay and Unifi_LAN_S4mini < timestamp - delay then if PresenceChristophe == "1" then fibaro:debug(os.date('%d/%m/%Y').." : Absence détectée") fibaro:setGlobal("PresenceChristophe", "0") end else if PresenceChristophe == "0" then fibaro:debug(os.date('%d/%m/%Y').." : Présence détectée") fibaro:setGlobal("PresenceChristophe", "1") end end end local trigger = fibaro:getSourceTrigger() if trigger["type"] == "autostart" then fibaro:debug(os.date('%d/%m/%Y').." : Autostart infinite loop...") while true do Check() fibaro:sleep(300*1000) -- 5 minutes end elseif trigger["type"] == "global" then fibaro:debug("Global variable change : "..trigger['name']) Check() elseif trigger["type"] == "other" then fibaro:debug(os.date('%d/%m/%Y').." : Started manually") Check() elseif trigger["type"] == "property" then fibaro:debug(os.date('%d/%m/%Y').." : Property changed : ".. trigger['deviceID'].." => "..trigger['propertyName']) else fibaro:debug(os.date('%d/%m/%Y').." : Unknown trigger : "..trigger["type"]) end Dans l'en-tête, en trigger, on positionne les variables globales Unifi_LAN_XXX Pensez à modifier le code en fonction du nom des variables globales que vous avez choisi. Comme on peut le voir, je monitore 2 téléphones, ce qui me permet d'améliorer la fiabilité de détection. Il faut juste modifier légèrement le code pour ne surveiller qu'un seul ou plusieurs appareils. J'ai configuré un délai de détection de 12h, car cette scène me permet de détecter si je suis absent plus de 12h de la maison, donc que je suis en déplacement professionnel, c'est à dire que je ne passerai pas la nuit au domicile. Cela est très fiable. Ensuite, on peut utiliser la variable globale PresenceXXX dans des scénarios (Scènes, VD, GEA, etc) Si on veut gérer la présence de plusieurs personnes, il suffit de créer plusieurs scènes et autant de variables globales correspondantes. Remarque : c'est exactement le même code que la scène de détection de présence via Freebox, il est donc possible d'utiliser la même scène pour détecter des appareils via la Freebox et les bornes Unifi simultanément. Problème connu : Si dans le debug de la scène vous avez le message d'erreur "sslv3 alert handshake failure" ou "wrong version number" : [DEBUG] 00:00:00: httpClient:request() : Error : sslv3 alert handshake failure Alors c'est que la HC2 n'accepte pas la suite de chiffrement proposée par le serveur Web de l'Unifi Controller, et tente de se connecter en SSLv3, qui est un vieux protocole peu sécurisé et bloqué. Mon Unifi Controller est installé dans une VM sous Debian 9, voici la procédure : Modifier le fichier system.properties : vi /var/lib/unifi/system.properties Notes : - sur Synology, le fichier se trouve dans /var/packages/Unifi Controller 5/target/data/system.properties => Voir tuto de Nico plus bas dans la page. - sur Windows, le fichier se trouve dans C:\Users\XX YOUR USER NAME\Ubiquiti UniFi\data\system.properties => Merci Sebcbien Ajouter les suites de chiffrement comme suit, ce qui aura pour conséquence de résoudre le problème de la HC2 qui n'arrive pas à se connecter, et d'augmenter la sécurité globale de l'interface Web de Unifi Controller : unifi.https.ciphers=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA unifi.https.sslEnabledProtocols=TLSv1.2,TLSv1.1,TLSv1 Puis redémarrer le démon Unifi Controller : service unifi restart Puis redémarrer la scène sur la HC2. Compatibilité avec Unifi Dream Machine et Cloud Key v2 (basés sur Unifi OS) : Voir le message de @PdB en page 13 : Et également le script modifié partagé par @Nico en page 16 : Monitoring des 2 scènes avec le Watchdog : {type = "Scene", id = 1, match = {text="GetDevices", interval=2*60}, no_match = {text=""}, count=1, restart=true, notification = {"push", "email"}}, -- Unifi {type = "Scene", id = 6, match = {text="", interval=0}, no_match = {text=""}, count=1, restart=true, notification = {"push", "email", "sms"}}, -- Présence Téléchargement : Scene Ubiquiti Unifi v1.2.lua
  2. Bonjour, Voilà un moment que je cherchais le moyen de piloter les projecteurs de mes caméras « Présence » (j'en ai une côté cour et une autre côté jardin). C'est chose faite et je partage ma solution si cela peut aider quelqu'un. Tout d'abord merci à @KiboOst, qui « sévit » sur le forum jeedom, pour son excellent « php-simpleNetatmoAPI ». D'après ce que j'ai compris il s'agit d'un travail de reverse engineering qui s'est terminé par un retour aux API Netatmo ... sauf, qu'en fouillant dans les API officielles de Netatmo, je n'ai trouvé nulle part le moyen de piloter l'allumage du projecteur et encore moins de gérer sa luminosité ! Donc ma solution : - Côté Serveur (mon Raspberry) installation des composants de « php-simpleNetatmoAPI » sur mon Raspberry création d'un fichier TXT de paramétrage de l'API et des projecteurs écriture d'un script PHP destiné à exécuter une action sur un projecteur - Côté Home Center création d'un VD pour piloter mes 2 projecteurs simultanément ... outil prêt pour une utilisation future, ex : allumer tous les extérieurs de la maison en cas de fête et/ou d'intrusion Un peu de contenu si cela vous intéresse : Côté HC2, le VD et ses icônes Côté Raspberry, le fichier TXT et le script PHP Et voilou ... enjoy Cordialement - Jean-Paul Le VD L'export du VD est disponible en fichier joint. Sur le Raspberry 1 - Fichier texte de paramètrages User=.......... Password=.......... ClientId=.......... ClientSecret=.......... Projo1Home=3 Projo1Name=Présence avant Projo2Home=1 Projo2Name=Présence arrière 2 - Script PHP <?php //-------------------------------------------------------------------------------------------------- // // Script de commande du projecteur d'une caméra Presence Netatmo // // Inspiration : https://github.com/KiboOst/php-simpleNetatmoAPI // // Principe : // 1 - Les infos de connexion sont enregistrées dans un fichier texte sur ce serveur // . les 4 premières lignes sont dédiées à la connexion à l'API Netatmo // . puis une paire de lignes par caméra (ligne 1 = code 'Maison', ligne 2 = nom 'Présence') // 2 - Pour connaître les 'Home' et 'Name' des projecteurs : // . ne saisir que les 4 premières lignes dans le fichier texte // . lancer le script comme ceci : /ProjoAutoOnOff.php?projo=1&action=on // . lire ce qui s'affiche // . rechercher "Si le nombre de projecteurs est égal à zéro" dans le code // . débloquer/dupliquer les lignes en commentaires en remplacant 'xx' par le/les codes 'Maison' // 3 - En entrée : // . le numéro du projecteur à piloter (1 ou 2 ... ou plus) // . la commande à envoyer au projecteur ('auto', 'on' et 'off') // 4 - En sortie : // . commande OK // . commande non effectuée car le projo est déjà à l'état demandé // . autre (erreur) // //-------------------------------------------------------------------------------------------------- $Verbose = false; /* Validation du code action */ $Action = $_GET["action"]; if (strlen($Action) == 0) { exit('Missing action code'); } else { if ($Action != 'auto' and $Action != 'on' and $Action != 'off') { exit('Invalid action code'); } } if ($Verbose) {echo 'Code action ----> ', $Action, '<br>';} /* Récupération du numéro de projecteur */ $NumProjo = $_GET["projo"]; if (strlen($NumProjo) == 0) { exit('Missing floodlight number'); } if ($Verbose) {echo 'Numéro de projecteur ----> ', $NumProjo, '<br>';} /* Ouverture du fichier des infos de connexion au routeur et retourne un tableau contenant une ligne par élément */ $lines = file('ProjosCredentials.txt'); $NbLines = count($lines); if ($Verbose) { foreach ($lines as $lineNumber => $lineContent) { echo $lineNumber,' ',$lineContent, '<br>'; } echo 'Nombre de lignes : ', $NbLines, '<br>'; } /* Vérification du nombre de lignes */ if (($NbLines % 2) == 1) { exit('Invalid line number (odd)'); } /* Chargement des variables de connexion */ $Netatmo_User = ""; $Netatmo_Psw = ""; $Netatmo_ClientID = ""; $Netatmo_ClientSecret = ""; /* ----> Netatmo User */ $mystring = trim($lines[0]); $findme = 'User='; $pos = strpos($mystring, $findme); if ($pos === false) { echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'", '<br>'; exit('Error retrieving Netatmo User'); } else { if ($pos <> 0) { echo 'La chaîne ', $findme, ' n\'est pas au début de ', $mystring, '<br>'; exit('Error retrieving Netatmo User'); } else { if ($Verbose) {echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring' et débute à la position $pos", '<br>';} $Netatmo_User = substr($mystring, strlen($findme)); } } /* ----> Netatmo Password */ $mystring = trim($lines[1]); $findme = 'Password='; $pos = strpos($mystring, $findme); if ($pos === false) { echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'", '<br>'; exit('Error retrieving Netatmo Password'); } else { if ($pos <> 0) { echo 'La chaîne ', $findme, ' n\'est pas au début de ', $mystring, '<br>'; exit('Error retrieving Netatmo Password'); } else { if ($Verbose) {echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring' et débute à la position $pos", '<br>';} $Netatmo_Psw = substr($mystring, strlen($findme)); } } /* ----> Netatmo Client ID */ $mystring = trim($lines[2]); $findme = 'ClientId='; $pos = strpos($mystring, $findme); if ($pos === false) { echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'", '<br>'; exit('Error retrieving Netatmo Client ID'); } else { if ($pos <> 0) { echo 'La chaîne ', $findme, ' n\'est pas au début de ', $mystring, '<br>'; exit('Error retrieving Netatmo Client ID'); } else { if ($Verbose) {echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring' et débute à la position $pos", '<br>';} $Netatmo_ClientID = substr($mystring, strlen($findme)); } } /* ----> Netatmo Client Secret */ $mystring = trim($lines[3]); $findme = 'ClientSecret='; $pos = strpos($mystring, $findme); if ($pos === false) { echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'", '<br>'; exit('Error retrieving Netatmo Client Secret'); } else { if ($pos <> 0) { echo 'La chaîne ', $findme, ' n\'est pas au début de ', $mystring, '<br>'; exit('Error retrieving Netatmo Client Secret'); } else { if ($Verbose) {echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring' et débute à la position $pos", '<br>';} $Netatmo_ClientSecret = substr($mystring, strlen($findme)); } } /* Chargement des numéros de projecteurs */ $i = 4; $NbProjo = 0; $TabProjo = array(); while ($i < $NbLines) { $NbProjo = $NbProjo + 1; $mystring = trim($lines[$i]); $findme = 'Projo' . $NbProjo . 'Home='; $pos = strpos($mystring, $findme); if ($pos === false) { echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'", '<br>'; exit('Error retrieving Floodlight' . $NbProjo . ' Home'); } else { if ($pos <> 0) { echo 'La chaîne ', $findme, ' n\'est pas au début de ', $mystring, '<br>'; exit('Error retrieving Floodlight' . $NbProjo . ' Home'); } else { if ($Verbose) {echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring' et débute à la position $pos", '<br>';} $TabProjo[$NbProjo][1] = substr($mystring, strlen($findme)); } } $i = $i + 1; $mystring = trim($lines[$i]); $findme = 'Projo' . $NbProjo . 'Name='; $pos = strpos($mystring, $findme); if ($pos === false) { echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'", '<br>'; exit('Error retrieving Floodlight' . $NbProjo . ' Name'); } else { if ($pos <> 0) { echo 'La chaîne ', $findme, ' n\'est pas au début de ', $mystring, '<br>'; exit('Error retrieving Floodlight' . $NbProjo . ' Name'); } else { if ($Verbose) {echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring' et débute à la position $pos", '<br>';} $TabProjo[$NbProjo][2] = substr($mystring, strlen($findme)); } } $i = $i + 1; } if ($Verbose) { echo 'Netatmo User = ', $Netatmo_User, '<br>'; echo 'Netatmo Password = ', $Netatmo_Psw, '<br>'; echo 'Client ID = ', $Netatmo_ClientID, '<br>'; echo 'Client Secret = ', $Netatmo_ClientSecret, '<br>'; echo 'Nombre de projecteurs = ', $NbProjo, '<br>'; echo 'Table des projecteurs :', '<br>'; for ($i=1; $i<=$NbProjo; $i++) { echo 'Presence', $i, ' Home = ', $TabProjo[$i][1], ' - Presence', $i, ' Name = ', $TabProjo[$i][2], '<br/>'; }; } // Si le nombre de projecteurs est égal à zéro on récupère les infos "Homes" if ($NbProjo == 0) { require($_SERVER['DOCUMENT_ROOT']."/php-simpleNetatmoAPI/class/splNetatmoAPI.php"); $_splNetatmo = new splNetatmoAPI($Netatmo_User, $Netatmo_Psw, $Netatmo_ClientID, $Netatmo_ClientSecret); if (isset($_splNetatmo->error)) die($_splNetatmo->error); // Liste des maisons avec le nombre de caméras rattachées $homes = $_splNetatmo->getHomes(); echo "<pre><br>homes:<br>".json_encode($homes, JSON_PRETTY_PRINT)."</pre><br>"; // -------------------------------------------------------------------------------------------------------------------------------- // Remplacer 'xx' dans l'instruction suivante par le code maison obtenu et décommenter les lignes pour obtenir les infos 'Présence' // // $_splNetatmo = new splNetatmoAPI($Netatmo_User, $Netatmo_Psw, $Netatmo_ClientID, $Netatmo_ClientSecret, xx); // $Cameras = $_splNetatmo->getPresenceCameras(); // echo "<pre>Cameras:<br>".json_encode($Cameras, JSON_PRETTY_PRINT)."</pre><br>"; // --------------------------------------------------------------------------------------------------------------------------------- exit ('Please enter the projectors codes (House and Name)'); } /* Validation du numéro de projecteur */ if ($NumProjo < 1 or $NumProjo > $NbProjo) { exit('Invalid floodlight number'); } // C'est parti /* Récupération du statut du projecteur */ require($_SERVER['DOCUMENT_ROOT']."/php-simpleNetatmoAPI/class/splNetatmoAPI.php"); $ProjoHome = $TabProjo[$NumProjo][1]; $ProjoName = $TabProjo[$NumProjo][2]; $_splNetatmo = new splNetatmoAPI($Netatmo_User, $Netatmo_Psw, $Netatmo_ClientID, $Netatmo_ClientSecret, $ProjoHome); $Cameras = $_splNetatmo->getPresenceCameras(); $StatusProjo = $Cameras[$ProjoName]['light_mode_status']; if ($Verbose) { echo "<pre>Cameras :<br>".json_encode($Cameras, JSON_PRETTY_PRINT)."</pre><br>"; echo "Status du projo '", $ProjoName, "' de la maison '", $ProjoHome, "' = ", $StatusProjo, '<br>'; } /* Si le projo est déjà à l'état demandé on ne fait rien */ if ($Action == $StatusProjo) { if ($Verbose) {echo 'Changement du status du projecteur inutile - On arrête', '<br>';} exit('Floodlight already set'); } /* On passe le projo à l'état demandé */ $_splNetatmo->setLightMode($ProjoName, $Action); if ($Verbose) {echo "Projecteur passé à '", $Action, "'", '<br>';} exit('Floodlight set'); ?> Projecteurs_Caméras.vfib.json
  3. jpr105

    APIs BULKSMS et PRESENCE NETATMO

    Bonjour my Geek Team, Aujourd'hui je me lance dans la partie Alarme de ma Home Center 2 : OK je suis complètement d'accord qu'une alarme dédiée est la meilleure solution et c'est ce que j'avais dans une précédente vie (Alarme Sériée) ... sans domotique je considère donc ma démarche comme une version 1, peut-être une alarme dédiée en version 2 dans le futur ... et puis les vacances approchant je n'ai pas beaucoup de temps ... alors faisons avec la HC2 Mes détecteurs : 2 capteurs d'ouvertures Z-wave (FIBARO FGK_101) pour les 2 portes d'entrée 1 sirène Z-Wave SSA2 (FORTREZZ SSA-02) sur secteur 1 multisensor Z-wave (AEON Labs DSB05) 4 détecteurs IR en commande (véranda, salon, salle à manger, réserve) 1 bouton dédié (Fibaro FGPB-101 "The Button") lui aussi en commande Ce que j'ai compris : il me faut faire une action d'armer et de désarmer l'alarme et de dire, lors de ces actions, avec quels détecteurs je vais bosser je trouve ça plutôt bien car on peut imaginer une alarme générale avec tous les détecteurs opérationnels et, pourquoi pas, une alarme avec les détecteurs périphériques lorsqu'on dort à la maison ensuite, l'alarme étant enclenchée, libre à moi d'entreprendre toute(s) action(s) nécessaire(s) Donc dans le cadre des actions à entreprendre lorsque l'alarme est déclenchée, je voudrais entre autres : envoyer des SMS aux personnes "de confiance" allumer les projecteurs de mes 2 caméras Présence de chez Netatmo Ce que j'ai trouvé : Pour les SMS à envoyer aux personnes de confiance ... et qui ne sont pas tous chez Free ... c'est pas top au niveau de la HC2 mais j'ai trouvé ce site qui offre des crédits de SMS (bulksms) et qui, de plus possède une partie API là. Quelqu'un a-t-il des retours là-dessus ? Pour allumer mes deux projecteurs extérieurs des Présence Netatmo, ce n'est pas dans les API standard de Netatmo mais j'ai trouvé une solution en reverse-engineered ici. Encore une fois, quelqu'un a-t-il des retours là-dessus ? Voilà vous savez tout et merci d'avance pour vos lumières. Bon dimanche - Jean-Paul
  4. Détection de présence avec la Freebox Surveillance d'équipements réseaux connectés (smartphone, etc) Prérequis : Freebox v6 Revolution en mode routeur (par défaut) Module virtuel Freebox Server de @Krkroff en version 0.1.1 minimum Des appareils connectés sur le réseau IP (en Wi-Fi ou câble Ethernet) Installation : Télécharger le module virtuel Freebox et suivre les instructions de @Krikroff pour son installation : https://www.domotique-fibaro.fr/topic/328-plugin-freebox-v6/La dernière version connue à ce jour est la v0.1.1 : https://www.domotique-fibaro.fr/topic/328-plugin-freebox-v6/?page=9#comment-101866 Sur l'interface Web d'administration de Freebox OS, il faut aller dans la fenêtre Périphériques réseaux pour découvrir les adresses MAC des appareils à surveiller. Modifier la Main Loop du module virtuel Freebox afin d'ajouter la surveillance d'équipements réseaux, voici la syntaxe (vous pouvez ajouter autant d'éléments que désiré) _lanDevice = { { mac = "00:00:00:00:00:00", -- Sony Xperia Z2 (ether-00:00:00:00:00:00) vg = "FbxV6_LAN_XperiaZ2" }, { mac = "00:00:00:00:00:00", -- Samsung Galaxy S4 Mini vg = "FbxV6_LAN_S4mini" } }, mac : adresse MAC relevée sur la Freebox vg : variable globale qui contient le timestamp Unix de la dernière fois que l'appareil a été vu sur le réseau... cela concerne donc aussi bien le Wi-Fi (sans-fil) que l'Ethernet (câble). Sur la HC2, dans le panneau de variables, Pensez à créer vous-même les variables globales FbxV6_LAN_XXX choisies précédemment, ce n'est pas pris en charge automatiquement par le module virtuel Freebox. Créer également une autre variable prédéfinie PresenceXXX qui contiendra le statut de la présence, soit 0 ou 1 : Sauvegarder le module virtuel Freebox, qui va se connecter sur la Freebox et récupérer les informations de dernière connexion des périphériques réseaux surveillés. Les timestamps (valeur numérique) doivent apparaitre automatiquement dans les variables globales. Sur la HC2, créer une scène contenant le code LUA suivant, à adapter en fonction de vos besoins : --[[ %% autostart %% properties %% globals FbxV6_LAN_XperiaZ2 FbxV6_LAN_S4mini --]] function Check() local delay = 3600*12 local timestamp = os.time() local FbxV6_LAN_XperiaZ2 = tonumber(fibaro:getGlobalValue("FbxV6_LAN_XperiaZ2")) local FbxV6_LAN_S4mini = tonumber(fibaro:getGlobalValue("FbxV6_LAN_S4mini")) local PresenceChristophe = fibaro:getGlobalValue("PresenceChristophe") if FbxV6_LAN_XperiaZ2 < timestamp - delay and FbxV6_LAN_S4mini < timestamp - delay then if PresenceChristophe == "1" then fibaro:debug(os.date('%d/%m/%Y').." : Absence détectée") fibaro:setGlobal("PresenceChristophe", "0") end else if PresenceChristophe == "0" then fibaro:debug(os.date('%d/%m/%Y').." : Présence détectée") fibaro:setGlobal("PresenceChristophe", "1") end end end local trigger = fibaro:getSourceTrigger() if trigger["type"] == "autostart" then fibaro:debug(os.date('%d/%m/%Y').." : Autostart infinite loop...") while true do Check() fibaro:sleep(300*1000) -- 5 minutes end elseif trigger["type"] == "global" then fibaro:debug("Global variable change : "..trigger['name']) Check() elseif trigger["type"] == "other" then fibaro:debug(os.date('%d/%m/%Y').." : Started manually") Check() elseif trigger["type"] == "property" then fibaro:debug(os.date('%d/%m/%Y').." : Property changed : ".. trigger['deviceID'].." => "..trigger['propertyName']) else fibaro:debug(os.date('%d/%m/%Y').." : Unknown trigger : "..trigger["type"]) end Dans l'en-tête, en trigger, on positionne les variables globales FbxV6_LAN_XXX Pensez à modifier le code en fonction du nom des variables globales que vous avez choisi. Comme on peut le voir, je monitore 2 téléphones, ce qui me permet d'améliorer la fiabilité de détection. Il faut juste modifier légèrement le code pour ne surveiller qu'un seul ou plusieurs appareils. J'ai configuré un délai de détection de 12h, car cette scène me permet de détecter si je suis absent plus de 12h de la maison, donc que je suis en déplacement professionnel, c'est à dire que je ne passerai pas la nuit au domicile. Cela est très fiable. Mais je considère qu'il n'est pas possible de faire de la détection de présence de courte durée par monitoring des smartphones, pour plusieurs raisons : - le smartphone peut avoir été laissé à la maison pendant une absence, temporairement - le smartphone peut être en panne de batterie temporairement - le smartphone peut avoir le Wi-Fi désactivé temporairement Donc ce type de détection de présence n'est pas adapté à des scénarios de mise en marche/arrêt d'alarme par exemple. Ensuite, on peut utiliser la variable globale PresenceXXX dans des scénarios (Scènes, VD, GEA, etc) Si on veut gérer la présence de plusieurs personnes, il suffit de créer plusieurs scènes et autant de variables globales correspondantes.
  5. Bonjour à tous, Ne possédant que des appareils à la pomme, j'ai lu (et tester) que la géolocalisation via GPS n'était pas assez fiable pour s'en servir comme variable de présence dans une scène. J'ai ensuite exploré les topics parlant de ping/adresse mac pour vérifier que l'iphone est sur le réseau mais idem trop de soucis comparé à android... J'ai eu l'idée folle suivante : Imaginons que je glisse un motion sensor dans la boite à gant de ma voiture. Lorsque je quitte mon garage, ce dernier détecte un mouvement et deviendra un noeud mort une fois hors de portée Lorsque je reviens chez moi, le noeud mort se réveille et je suis donc dans le périmètre. C'est bancal comme idée ? Je me dis que le motion sensor risque de solliciter trop de pile en roulant, mais on pourrait remplacer par n'importe quel module à pile qui deviendrait hors de portée ? Edit : humm je crois m'être trompé de rubrique pour mon premier post ; je fouillais dans les tutoriels sorry
×