Vous utilisez probablement des capteurs de présence dans votre installation domotique. Cependant comment éteindre ces capteurs automatiquement quand vous ou quelqu'un de votre famille rentre à votre domicile ?

Pour répondre à cette problématique, j'ai mis en place une solution simple à mon domicile. J'utilise les API de la Freebox pour identifier la liste des téléphones mobiles attachés à mon réseau Wifi.

Cela me permet facilement de savoir si quelqu'un de ma famille est à mon domicile ou non et donc de m'alerter uniquement quand une présence anormale est détectée.

nodered-freebox-1

Pour mettre en place ce système sur mon système de domotique qui fonctionne sur la base de Node-Red, j'ai développé un noeud Node-Red qui a comme seule vocation de récupérer la liste des terminaux connectés au réseau de la Freebox et de les pousser en sortie.

https://github.com/ltoinel/node-red-contrib-freebox

Pour installer ce noeud sur votre installation Node-Red, voici la commande à lancer depuis le répertoire de Node-Red :

$npm install clone https://github.com/ltoinel/node-red-contrib-freebox.git

Lors de la première utilisation de ce noeud, vous devrez autoriser l'usage de ce noeud depuis le panneau de votre Freebox.

Attention, vous n'aurez que 30 secondes pour valider la demande d'autorisation de token.

Afin que le jeton d'authentification récupéré sur la Freebox puisse être persisté dans Node-Red, vous devrez préalablement décommenter le paramètre ci-dessous du fichier configuration de Node-Red.

   contextStorage: {
        default: {
            module:"localfilesystem"
        },
    },

Enfin, pour vérifier la présence d'un téléphone connu à votre domicile, vous pourrez juxtaposer une "Function" avec le code suivant qui retournera "true" ou "false" en fonction de la détection réalisée. Ce qui vous permettra de détecter une alarme seulement quand aucun de vos terminaux mobiles n'est détecté.

var deviceFound = false

for(var i in msg.payload){

  var device = msg.payload[i];
  
  if (device.primary_name.trim() == "iPhone Ludo"){
      if (device.reachable == true)  deviceFound = true
  }

}

return { payload: deviceFound };

Vous voilà avec une alarme intelligente qui se déclenchera seulement quand aucune personne connue n'est à votre domicile !

N'hésitez pas à me proposer des pull request si vous voyez des améliorations à ce noeud Node-Red.
Si vous souhaitez construire une baie de brassage avec tous vos équipements domotique, je vous invite à lire cet article.