Projets-2015-2016-OpenSmartCampus

From air
Jump to navigation Jump to search

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é:

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

Sprint 2 (du 1 Février au 7 Février)

Architecture réalisée avec Didier Donsez :

Architecture SmartCampus 2016.png

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

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

  • Lancer node-red sur la rasberry-pi B+ grâce aux commandes suivantes dans un script. Sur l'OS Debian wheezy.
#!/bin/bash
#install nodered
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
# install Node-red
sudo npm install -g --unsafe-perm node-red
echo  nmp--------------------->[OK]

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 RFXcom pour le récepteur 433 Mhz et du noeud pour le récepteur Zwave

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.

L'installation du noeud peut provoquer une erreur si la version de nodejs est inférieure à 10.x

Pour mettre à jour nodejs :

sudo apt-get remove nodered
sudo apt-get remove nodejs nodejs-legacy
sudo apt-get remove npm
Raspberry Pi 2
curl -sL https://deb.nodesource.com/setup_4.x | sudo bash -
sudo apt-get install -y build-essential python-dev python-rpi.gpio nodejs
Raspberry Pi
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

Une fois nodejs mis à jour(nodejs -v > 0.12.x ou 4.2.x)

sudo npm cache clean
sudo npm install -g --unsafe-perm  node-red

Téléchargement du noeud RFXcom

Noeud RfxCom

Sprint 3 (du 8 Février au 14 Février)

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

Mise en place d'une base de donnée InfluxDB

Installation sur le serveur amazone d'une base InfluxDB:

wget https://s3.amazonaws.com/influxdb/influxdb_0.10.1-1_amd64.deb
sudo dpkg -i influxdb_0.10.1-1_amd64.deb

Modification du flow Node-red

Récupération d'informations depuis le récepteur RfxCom et envoie vers le broker mqtt.

Sprint 4 (du 15 Février au 21 Février)

Passage en MQTTS

Changement du port de configuration sur le flow node-red : 1883 -> 8883 Activation du cryptage tls/ssl et désactivation de la vérification du certificat du serveur. En effet, tous les certificats générés sont auto-signés. Afin que la connexion puisse se faire il faut soit un certificat signé par une autorité reconnue, soit désactivé la vérification.

Installation de Telegraf

La dernière release précompilée pour Ubuntu(0.10.2) ne contient pas le plugin "mqtt_consumer". Elle ne sera disponible que dans la release 0.10.3. Il faut donc l'installer depuis les sources si la version n'est pas supérieur à 0.10.3. Afin de faciliter le démarrage automatique de Telegraf, on installe via le package debian :

Dernière version disponible actuellement

Installation de GO

Sur AWS, une version de go est pré-existante mais non fonctionnelle car non à jour.

sudo rm /usr/bin/go

Choisir la dernière version de go : GO

Décompresser l'archive:

tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz

Ajouter dans /etc/profile ou $HOME/.profile si vous avez décompréssé dans /usr/local:

export PATH=$PATH:/usr/local/go/bin

Créer la variable GOPATH:

 export GOPATH=<YOUR_PATH>

Télécharger les sources:

go get github.com/influxdata/telegraf

Aller dans le dossier de téléchargements:

cd $GOPATH/src/github.com/influxdata/telegraf
make