Passerelle box domotique/Monde extérieur (4/n)

Mon idée du moment est de placer un ou plusieurs Raspberry PI entre la box domotique (Vera3 pour ce qui me concerne) et le monde extérieur. Ainsi, pour à peine plus cher qu’un module zWave, je compte sérieusement étendre les possibilité de mon installation…

Brique supplémentaire : le NFC qui va permettre d’interagir avec l’environnement domotique par la simple détection d’un objet (porte-clef, carte etc…)!

Quatrième partie : Mise en oeuvre de la détection NFC.

[Merci à domotique-info pour la source de cette passerelle.]

Il est à noter que cette réalisation nécessite une carte de détection NFC de type « Explore NFC » (disponible, par exemple, chez Univers Domotique) et des badges NFC. Les badges (ou autocollants) doivent impérativement répondre au format Mifare (Voir un exemple sur amazon.fr)

Aprés avoir fait l’installation générique du système, nous allons activer le bus SPI depuis l’utilitaire de configuration du Raspberry à l’aide de la commande suivante

sudo raspi-config
  1. raspi-configSélectionner la ligne [8] puis [A6] , <Yes> et <Ok> pour activer le bus SPI puis, de nouveau <Yes> et <Ok> pour charger le module par défaut.
  2. Si cette option est proposée, redémarrer le raspberry avant de s’y reconnecter pour poursuivre…

Attention : Ne pas réaliser la mise à jour du système RaspBerry pour le moment : la version actuelle de nxppy est compatible avec le système de Décembre 2014 mais pose problème avec des mises à jour postérieures : passer la commande apt-get update mais pas la commande apt-get upgrade…

Il faut , afin de respecter les prérequis, installer l’environnement de développement Python en version 2.7  en passant les commandes suivantes:

sudo apt-get install python2.7-dev
sudo apt-get install python-pip
sudo apt-get install cmake
sudo reboot

Nous pouvons désormais installer et complier les modules pyhton dont dépendra notre script : le premier (nxppy) permet l’interface avec les badges NFC Mifare, le second (requests) permettra d’appeler des URLs depuis notre script.

sudo pip install nxppy
sudo pip install requests

Nous pouvons désormais installer le petit script Python qui vérifie l’arrivée des badges NFC Mifare :

cd /home/pi
wget http://domo.wangler.fr/wp-content/uploads/2015/02/piNFC.txt -O piNFC.py
sudo chmod +x piNFC.py

Il nous faut maintenant faire en sorte que le scripte de détection se lance automatiquement au démarrage du raspberry :nano

sudo nano /etc/rc.local
  • Dans le fichier édité, rajouter la ligne python /home/pi/piNFC.py
  • Enregistrer le fichier (Ctrl-X)

Pour terminer cette étape, nous allons créer le fichier de configuration du script.

sudo nano /home/pi/piNFC.cfg

Dans ce fichier, créons juste une ligne vide pour commencer.
Maintenant que le fichier de configuration existe, nous pouvons redémarrer le Raspberry (sudo reboot).

La dernière tâche consiste donc à repérer l’identifiant de chacun de nos « tags » afin de leur faire correspondre des lancements d’URL. Pour ce faire, l’astuce consiste à supprimer le fichier de log du script

sudo rm piNFC.log

Ensuite, présenter un nouveau tag à la lecture. Si tout se passe bien, le log comprendra dès lors une entrée pour le nouveau tag. exemple :

2015-02-28 | 13:58:11 | Lancement du script
2015-02-28 | 13:58:14 | Mifare UID inconnu : 049F7B82873380

Pour finir, éditer le fichier piNFC.cfg en créant une ligne avec l’identifiant, suivi de l’url (entre guillemets) à appeler sur présentation de ce tag, séparés par des « ; ». Voici, pour exemple, le contenu de mon fichier piNFC.cfg qui appelle une scène de passage en mode présence de ma box Vera sur présentation de deux badges :

049F7B82883380;"http://192.168.1.3:3480/data_request?id=action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=RunScene&SceneNum=6"

048F7B82883380;"http://192.168.1.3:3480/data_request?id=action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=RunScene&SceneNum=6"

Dans le script, j’ai conservé beaucoup du travail vu sur domotique-info, cela permettra à celles et ceux qui en auraient besoin de passer une authentification en paramètre dans le fichier de configuration (pour la faire courte : rajouter le nom et le mot de passe de connexion à la suite de l’url, séparés par un pipe « | »)

2 réflexions au sujet de « Passerelle box domotique/Monde extérieur (4/n) »

  1. Bonjour,

    Malheureusement pour moi, j’ai fais un apt-get upgrade….

    J’obtiens le message d’erreur
    Traceback (most recent call last):
    File « nxpnfc.py », line 72, in
    except (SystemExit, KeyboardInterupt):
    NameError: name ‘KeyboardInterupt’ is not defined

    Une idée de comment le résoudre?

    1. Hello !
      Désolé mais à ce jour je n’ai pas trouvé d’autre moyen : le seul contournement que je connaisse est l’utilisation de la distribution ancienne mentionnée ici.
      Pour ma part, je fais une image de la carte SD après que l’installation soit fonctionnelle : cela me permet de rebalancer cette image sur la carte sd si je fais une boulette dans mes tests (et ça m’arrive fréquemment :P)
      Courage ^^
      Si tu trouves un autre contournement meilleur, n’hésite pas à faire signe 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *