Projets-2015-2016-OpenSmartCampus

=Présentation du Projet=

Introduction
Le projet nommé smart Campus est un projet étudiant visant à rendre un domaine universitaire intelligent. Il a vu le jour il y a 3 ans et il a comme but principal de rendre plus pratique la vie sur le campus ainsi que la gestion de celui-ci.

Le projet en 2014-2015 : SmartCampus2014-2015 Le projet en 2013-2014 : SmartCampus2013-2014

L'équipe
RICM5 : 
 * Quentin Torck
 * Vivien Michel
 * Jérémy Hammerer
 * Rama Codazzi
 * Zhengmeng Zhang

DUT : 
 * Andréas Gillet-Pascal

Encadrants : 
 * Didier Donsez
 * Vivien Quéma

=Organisation du Projet= Dans le but de mener à bien notre projet, nous avons décider d'utiliser la méthode agile Scrum. Le projet étant à faire dans un court intervalle de temps (2 mois), nous avons décidé de faire des sprints d'une semaine chacun.

Sprint 1 (du 25 Janvier au 31 Janvier)
Matériel récupéré:
 * Gateways
 * Raspberry Pi 2 + Alimentation 5V DC
 * ZWave
 * Clé USB Sigma ZWave
 * Détecteur de présence Aeon-labs ZWave
 * Détecteur d'ouverture Zipato ZWave
 * Rfxcom
 * Récepteur RFXCom 443 MHz
 * Station WMR88
 * Sonde Oregon Hygro Baro
 * Sonde Oregon Luminosité
 * Sonde Oregon Thermo Hygro All Weather
 * enOcean
 * Digital Security Camera
 * DLink DSC 5222L PTZ, UPnP

Travail effectué:
 * Etude de l'existant
 * Etude des données de la métro de Grenoble, savoir si l'on peut leur apporter de nouvelles données ou non.

A voir
 * http://fablab.ensimag.fr/index.php/SmartCampus/FicheSuivi
 * http://air.imag.fr/index.php/PM2M/2016/TP
 * http://air.imag.fr/index.php/GrenobloisFut%C3%A9

Sprint 2 (du 1 Février au 7 Février)
Architecture réalisée avec Didier Donsez :

L'utilisation de Météor avec une base de donnée MongoDB est possible. Une alternative à explorer est Sails.js. Étant donné le caractère exploratoire de ce sprint, l'architecture peut être amenée à changer. Notamment en ce qui concerne l'utilisation de Météor ou la base de donnée MongoDB. Taches :


 * Explorer l'utilisation de Météor et de Kadira à travers des tutoriels. Installation locale pour l'instant.


 * Installer un serveur Mosquito/MQTT(S) pour les communications avec les cartes


 * Installer Node-Red sur Rasberry PI : faire flux de reception/envoie entre la carte et le serveur MQTT : Tutoriel d'installation Node-Red

Tutoriel pour connecter Node-Red avec serveur MQTT. Ceci est à adapter suivant la configuration dans settings.json

Regarder ce flux existant proposant un envoie sécurisé sur le serveur

Regarder ce flux existant pour envoyer des données reçues par la Z-Wave


 * Explorer l'utilisation de Twilio pour l'envoie de sms automatique depuis les cartes. Technologies JavaScript utilisable sur serveur Node.js

Prendre en main sa rasberry pi à distance
http://www.framboise314.fr/prenez-la-main-a-distance-sur-votre-raspberry-pi-avec-vnc/

Installation sur Rasberry Pi Wheezy
sudo apt-get remove nodered wget http://node-arm.herokuapp.com/node_archive_armhf.deb sudo dpkg -i node_archive_armhf.deb sudo apt-get install build-essential python-dev python-rpi.gpio sudo npm install -g --unsafe-perm node-red echo nmp->[OK]
 * Lancer node-red sur la rasberry-pi B+ grâce aux commandes suivantes dans un script. Sur l'OS Debian wheezy.
 * 1) !/bin/bash
 * 2) install nodered
 * 1) install Node-red

Tentatives de démarrer le serveur au boot de la carte sur l'OS Wheezy. Malgré plusieurs tentatives (utilisation de update.rc, de PM2) le serveur ne démarre pas au lancement.

Utilisation de la plateforme AWS d'Amazon

 * Création d'un compte gratuit sur Amazon d'une validité d'un an.
 * Création d'une machine virtuelle Ubuntu sur la plateforme.
 * Installation et mise en marche d'un serveur Mosquitto (broker) sur la machine virtuelle. (voir installation)

Sur l'OS Debian Jessie : Une version de node-red est pré-installée.
Pour passer de Wheezy à Jessie (solution adoptée) : installation de NOOBS puis de Debian Jessie via cet utilitaire. Il est nécessaire d'avoir une carte SD vierge ou de la formater.

Mise à jour des logiciels : sudo apt-get update sudo apt-get upgrade

le système pré-installé sur Jessie permet de lancer au démarrage et, en cas de panne, de relancer le serveur node-red grâce à nodered.service.

Pour l'activer, taper la commande : sudo systemctl enable nodered.service

Installation des noeuds Zwave
Noeud Zwave

Ce noeud dépend d'une version d'Openzwave avec nodejs : node-openzave. Il faut donc installer la librairie OpenZwave.

Téléchargement de la version 1.4 OpenZwave 1.4 en zip.

Dans le répertoire décompressé. make sudo make install

La commande make, provoquant la compilation, peut mettre du temps. Il est possible qu'une librairie soit manquante et provoque une erreur.

Pour y remédier : sudo apt-get install libudev libudev-dev

La commande make install copie les librairies openzwave dans /usr/local/lib. Si node-red n'est pas dans /usr/local/lib/node_modules/ il faut déplacer les librairies dans /usr/lib/.

Pour vérifier la bonne installation, lors de lancement de node-red, un noeud Zwave in et Zwave out sont respectivement dans Input et Output.

Téléchargement du noeud RFXcom
Noeud RfxCom

Mise en place d'un VPN
Dans le but de pouvoir avancer plus facilement dans le projet, nous avons dû mettre en place un serveur VPN car les ports utilisés par MQTT sont bloqués sur le réseau de l'université. Il est donc impossible pour une Raspberry Pi de communiquer avec un serveur mosquitto basé sur la plateforme AWS sans passer par un VPN (en utilisant le réseau de l'université). L'avantage d'utiliser un VPN est aussi de sécuriser les communications entre les Raspberry pi et le serveur mosquitto. Les étapes de la mise en place de notre VPN sont les suivantes :


 * Création d'une nouvelle machine virtuelle dans le but d'installer un serveur VPN openVPN dans le cluster d'amazon (voir installation).


 * Installation d'un client VPN sur une Raspberry