PILBI-2016-Team1

De fablab
Révision de 23 janvier 2017 à 09:01 par Michecan (discussion | contributions) (Technologies eGitHubt matériel)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Introduction

Membres de l'équipe

  • Valérian BAILLET
  • Matthias BEAUPERE
  • Pierre GRAUX
  • Guillaume MALLET
  • Canelle MICHEL
  • Simon REY

Problématique

Le but de ce projet est de mettre en place un système de sécurité dans le Fablab, permettant de détecter une intrusion éventuelle ainsi que de la notifier à l'administrateur du FabLab.
Cet administrateur disposera d'une application dédiée où il pourra visualiser toute intrusion en temps réel.

Il recevra également un mail d'alerte pour toute intrusion.
Toutes les interactions possibles avec le système sont détaillées dans le cas d'usage plus bas.

Contraintes

Ce système doit s'intégrer dans un système plus large, englobant les projets des autres équipes. Le serveur OpenHab devra donc tourner sur un rapsberry PI pour que tout nouveau projet puisse se rattacher à un serveur central.

Il faut donc avoir des scripts d'installations pour qu'un serveur soit déployés rapidement sur une machine. Cela permettra aux autres équipes de faire des tests en local avant de déployer leur projet sur le serveur global.

Par ailleurs, le réseau wifi a un serveur proxy qui bloque les requêtes HTTP et SMTP.

Technologies et matériel

Ce projet s'appuie sur quatre technologies existantes :

  • Le logiciel OpenHab (logiciel opensource)
  • Un serveur Mosquitto
  • Des capteurs EnOcean : capteur de détection d'ouverture de portes.
  • Raspberry Pi


Par ailleurs, nous utilisons une librairie en Python qui permet de faire fonctionner EnOcean avec MQTT, libraire que nous avons personnalisée pour l'apprentissage. Cette librairie a été développée il y a environ deux ans et n'a pas vocation à évoluer.
Elle peut être retrouvée sur GitHub.

OpenHab

OpenHab est un logiciel open-source qui permet de représenter très facilement une maison intelligente et tous les objets connectés qui s'y trouvent.
Il crée une interface web qui peut être visualisé sur PC, ou mobile de façon simple et pratique en utilisant simplement une URL.

La configuration d'OpenHab se fait de la façon suivante. L'utilisateur commence par renseigner tous les items (capteurs de mouvements, capteurs de portes, etc...) qu'il va utiliser et peut les regrouper en différents groupes. {

|
Items d'un groupe
|
Groupe de capteurs d'ouvertures de portes

}

Les items créés peuvent être des items statiques (pour indiquer un numéro par exemple) ou des items dont la valeur va être modifié au cours du temps (comme les capteurs d'ouverture de portes). La différenciation de ses items se fera dans l'instanciation des items dans le fichier de configuration d'OpenHab. Dans notre cas, les signaux reçus par notre serveur OpenHab nécessite un serveur mosquitto (voir section le serveur mosquitto) donc il faut aussi le déclarer dans la configuration des items.

fichier de configuration des items

Une fois ces étapes passés, un avantage très intéressant des serveurs OpenHAB est la création de règles. Les règles permettent de déclencher des actions (envoi de mails, requêtes sur des sites web, etc...). La création de règle se fait de la manière suivante:

  • un bloc "when" pour savoir quand la règle doit se déclencher
  • un bloc "then" avec toutes les actions que la règle doit faire
Fichier de règles

Pour conclure, il faut noter que lorsque openHAB, lorsqu'il est configuré en tant que service, recharge automatiquement sa configuration lors qu'elle est modifiée. Cela évite de le relancer à chaque modification.


Le serveur Mosquitto

Eclipse Mosquitto est un message broker pour le protocole MQTT. Il est spécialisé dans l'internet des objets (voir le site web).

Message broker : Un message broker est un carrefour de communication, qui permet le dialogue de deux machines ayant des protocoles différents.

Exemple d'utilisation : Un broker placé en amont d'un serveur de production permet par exemple de recevoir toutes les requêtes destinées au serveur et de les formater pur qu'elles s'adaptent au serveur. Ainsi, dans le cas d'un changement de serveur, il est uniquement nécessaire de modifier les règles du broker pour s’adapter au nouveau serveur, sans avoir à informer tous les clients.

Le protocole MQTT : MQTT est un protocole basé sur la méthode publish-subscribe avec TCP/IP. La méthode publish-subscribe consiste à avoir des producteurs qui soumettent des messages dans certains fils d'informations et des consommateur qui s'abonnent aux fils d'informations pour les traiter. Ce protocole est très utilisé dans l'internet des objets car il permets aux producteurs, dans ce cas les objets possédant la technologie embarquée, de publier un message au moment voulu, sans attente. Les appareils n'ont ainsi besoin que d'un court laps de temps pour émettre leurs informations, et par conséquence ils peuvent fonctionner à basse consommation de ressources.

Les capteurs EnOcean

Les capteurs EnOcean sont de tout nouveaux capteurs présentant un système de récupération d'énergie. C'est-à-dire que les capteurs sont auto-alimenté grâce à l'énergie environnante. Par exemple, un interrupteur capte l'énergie nécessaire par la pression sur lui, les capteurs par des cellules photovoltaïques ou des différences de températures. Cela permet de réduire efficacement le coup des capteurs. Dans notre projet nous avons utilisé principalement deux types de capteurs:

  • Capteurs détectant les ouvertures de portes
  • Interrupteurs


Capteur détectant les ouvertures de portes:
Ces capteurs sont composés de deux parties : une partie principale avec la cellule photovoltaïque et les outils nécessaires pour envoyer un signal, et une partie secondaire avec un aimant qui permet de déclencher le signal. Ce capteur envoie deux signaux: 0 quand la porte se ferme et 1 quand la porte s'ouvre. Il possède une faible autonomie quand ils ne sont pas exposés vivement à la lumière. Il se peut donc qu'un message mette du temps à partir car le capteur n'a pas assez de puissance pour l'envoyer.

capteur détectant les ouvertures de portes

Interrupteurs:
Ces capteurs sont composés d'une seule partie qui permet d'envoyer un message lorsqu'on le presse. Contrairement au précédent, ce capteur utilise uniquement l'énergie faite par la pression du doigt pour envoyés son message. Il n'y a donc pas de problème de batterie et de retard de message.

interrupteur EnOcean


Les signaux des deux capteurs sont reçus par une clé usb fournit par EnOcean. Cette clé usb reçoit tous les signaux envoyés par les capteurs et peut les retransmettre au serveur mosquitto de EnOcean. Ce serveur permet de faire la jonction entre le serveur mosquitto nécessaire au serveur OpenHab et les capteurs de EnOcean.

Scénarios d'usage

L'utilisateur est un administrateur du fablab. Il doit pouvoir en temps réel savoir quelles sont les portes ouvertes du fablab. Le serveur OpenHab fonctionnera sur un Raspberry Pi connecté au WIFI du fablab.

Scénario d'usage

De plus, le serveur OpenHab doit être opérationnel et facile de modification pour que les autres groupes de projets puissent rajouter leurs composants aux serveurs. Il faut donc un dossier de scripts contenant les scripts nécessaires à la mise en place d'un serveur openHab qui fonctionne avec les serveurs mosquitto installé pour pouvoir utiliser les capteurs EnOcean.

Architecture du projet

Architecture d'intégration

Architecture d'intégration


Notre système est composé de 5 capteurs qui envoient un signal lorsque une porte s'ouvre ou se ferme. Le serveur mosquitto EnOcean permet de transformer le signal pour savoir de quel capteur vient le signal. Le serveur mosquitto EnOcean va ensuite transmettre le signal au serveur mosquitto de OpenHab. Pour terminer, le serveur OpenHab va pourvoir changer l'affichage de son interface web.

Position des capteurs de portes


Définition du livrable

Le livrable devra comporter les parties suivantes:


  • l'application web basée sur OpenHab
  • les capteurs physiques installés dans le FablLab aux emplacements
  • le code source du projet
  • des vidéos de démonstration hébergées sur Dailymotion


Les différentes parties non physiques qui composent le livrable peuvent être retrouvées ici.

Fonctionnement et test du projet

Fonctionnement basique

On peut voir qu'initialement la porte principale est fermée. Sur le serveur OpenHab, on peut voir qu'elle est notée closed.

Porte fermée

Lors de l'ouverture de la porte, on peut voir que le serveur Mosquitto capte un signal venant du capteur. On peut voir que la porte est maintenant ouverte.

Porte ouverte

Test du fonctionnement de l'infrastructure le jour et la nuit

Si l'on répète l'exemple de fonctionnement précédent, on peut calculer les domaines de fréquence de fonctionnement de l'infrastructure. On définit la fréquence de fonctionnement comme le nombre d'actions [Ouverture | Fermeture] d'une porte possibles en une seconde.

En outre, la nuit, les capteurs ne se rechargeant plus, on a un fonctionnement limité en nombre d'utilisations. Nos observations ont donné les caractéristiques que l'on peut voir ci-dessous.

Fonctionnement de l'infrastructure le jour et la nuit

Scripts d'installation

Pour pouvoir faciliter le travail des autres groupes, nous avons mis en place des scripts d'installations pour tous les clients que nous avons utilisé : OpenHab, mosquitto, mosquitto EnOcean, capteur Enocean. Cela permet de créer un serveur local opérationnel pour pouvoir travailler en local avant d'intégrer sur le serveur OpenHab du Fablab.

De plus, pour pouvoir utiliser internet alors que l'on est connecté sur le Wi-Fi fablab, il est nécessaire d'utiliser un proxy. Pour cela, nous avons aussi créer des scripts qui permettent d'ouvrir une fenêtre internet avec le proxy directement configuré.

Tous ces scripts peuvent être récupérés sur GitHub

Livrables

Application web

Depuis le Fablab

Pour voir l'application web donnée par le serveur OpenHab:

  • Se connecter en Wifi sur le wifi du FabLab
  • Se connecter en SSH sur le Raspberry Pi : ssh pi@192.168.0.77
  • Ouvrir un navigateur et entrer l'adresse : 192.168.0.77:8080/openhab.app?sitemap=fablab#

Depuis l'extérieur

Pour pouvoir utiliser l'application web depuis l'extérieur:

Vidéos de démonstration

Les vidéos de démonstration de l'utilisation du système peuvent être retrouvées sur Dailymotion. Nous pouvons y voir des cas d'usage classiques ainsi que le visuel de l'application en temps réel.

Code source

La partie code du projet peut être retrouvé sur GitHub.

Slides de la soutenance

Les slides utilisées pour la soutenance le 23 janvier 2017 peuvent être retrouvées ici.

Documentation