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