PM2M/2016/TP
Page 2016 des supports de cours et travaux pratiques de l'UE Projets M2PGI Services Machine-to-Machine.
Enseignants 2016 : Didier Donsez, Laurent Lemke
Partie démarrant le 1er Mars 2016 en F112.
Soutenance : 12 Avril 2016 de 13H30 à 17H30.
Rendu fiche de synthèse : 12 Avril 2016 de 13H00
Le mini-projet réalisé en séance a pour objectif la mise en place rapide et agile d'une infrastructure (matérielle et logicielle) de collecte de données capteur. Les mesures de capteurs distribués sont acquises par des dispositifs embarqués et sont remontés vers des serveurs de données hébergés dans un cluster sur un cloud public pour y être analysées (Big Data Analytics) et visualisées (dataviz).
Support de cours
Etapes
- Tutoriel OSGi
- Tutoriel Arduino
- Installation d'OpenHAB
- Installation de Mosquitto
- Installation de Node-RED
- Installation de dashboard de visualisation InfluxDB, Grafana, Chronograf, Telegraf, Kapacitor
- Installation de la suite Logstash, Elastic Search et Kibana
- Création de comptes sur Amazon EC2, PubNub, IFTTT Maker, Streamdata.io, Sparkfun Data ...
- Installation de Spark
Remarque : pour gagner du temps, utilisez Docker pour le déploiement des (micro-)services et Puppet pour la configuration de ceux si c'est nécessaire.
Remarque TRES TRES importante: ne sauvegardez pas les crédentials des services cloud que vous utilisez (AWS, Twitter, ...) dans des dépôts git publiques : placez les dans des documents credentials.json, credentials.properties, credentials.sh, ... et ajoutez les ces documents à .gitignore.
Fiche de synthèse
Synthétiser un des sujets suivants en 1 page maximum. La page doit être une entrée du wiki. Chaque synthèse est individuelle.
- SARAH (BUCHS Thibaud)
- WirelessHART (= BAYLE Stéphane)
- Weightless (= AAM)
- OpenRF (= Jean-Yves Bottraud)
- WMBus
- Thread (Google) (= GUERIN Cedric )
- LoRaWAN (= BERGER Stéphane)
- NB-IoT
- NB-LTE
- HaLow (=SUN Huanan)
- Iridium (= DONIAS Pierre)
- Apple Homekit
- AllJoyn(= MAKHLOUF Mehdi)
- OneM2M
- OPC-UA
- Delay Tolerant Networks (= RUKUNDO Fiston)
- Radio Data System (= ABHAMON Ronan)
- Tetra Radio
- IPSO (= CROZE Erwan)
- GeoJSON (= AZOUZI Marwen)
- Avro (= FAURE Adrien)
- Thrift (= FAURE Maximilien)
- Protobuf (= ZAKARI TOURE Ismael)
- Apache Flume (= MARQUE Bastien)
- Apache Zeppelin (= BIGARD Florian)
- Kaa
- Hypercat (= CHARTIER Aurélien)
- Jupyter (= SAHUC Alexandre)
- AWS IoT (= DIAGNE El Hadji Malick)
- Brillo (= MENGOLI Jean-Luc)
- EVRYTHNG (= OLVERA BADILLO Angélica)
- OGC SensorThings
- Zephyr Project
- OpenEnergyMonitor (= Loïc FAGNO)
- PlatformIO(= BANWARTH Pierre)
- S3P
...
Capteurs et Actionneurs
- STM32 Nucleo + Shield LoRa SX1276 + Shield Météo
- STM32 Nucleo + Shield NFC + Shield BLE (avec client Android MQTT)
- STM32 Nucleo + Récepteur RDS + ESP8266
- Sensors ZWave + Clé ZWave
- Sensors RFXCom 433MHz + Clé RFXCom 433MHz
- STM32 Nucleo + Shield BLE (capture de beacons iBeacon & AltBeacon) (avec client Android MQTT)
- Sensors enOcean (à vérifier auprès de Jérôme Maisonnasse)
- Sensors Zigbee (à vérifier auprès de Jérôme Maisonnasse)
- Sensors XBee (à vérifier auprès de Jérôme Maisonnasse)
- Carte Wifi ESP8266 (IDE Arduino) + Shield OpenEnergyMonitor
- Carte Wifi ESP8266 (Lua) + Shield OpenEnergyMonitor
- Carte de démonstration SigFox
- Carte Intel Curie Genuino 101 (avec client Android MQTT)
- Carte Intel Curie Genuino 101 (avec client Android MQTT) +Ceinture cardio Geonaute
- Carte Xadow GSM+BLE du RePhone (voir ArduinoPhone 2.0)
- Carte LoRa
Mini-Projet
Ce mini-projet consiste a mettre en place une infrastructure de collecte de données capteur. L'acquisition des mesures de capteurs distribués se fait sur une carte STM32 Nucleo, sur une carte Intel Galileo ou sur un téléphone Android. Les technologies de comminucation sont : USB Serial, BLE, LoRa, Ethernet, WiFi. Les données sont remontées dans des messages vers un serveur (Node-RED) via un "broker" PubSub (MQTT (Mosquitto ou RabbitMQ), Apache Kafka, PubNub, PubSubHubbub, Socket.io, WebRTC ...). Les formats des messages peuvent être JSON (GeoJSON), BSON, CSV, NMEA 0183, binaire, XML (EEML, KML, AMMP ...) ... Les données peuvent être stockées dans une base de données (SQL ou NoSQL comme MongoDB, Redis.io, InfluxDB, ...) et visualisées en différé ou en direct (Grafana, D3.js, OpenHAB via le connecteur MQTT, Bootleaf pour les données géolocalisées ...)
Sujets des mini-projets
Sujet | Étudiants | Fiche de suivi | Dépôt git | Documents | Matériel | |
---|---|---|---|---|---|---|
1 | Géolocalisation Outdoor sans GPS | AVRIL Sébastien, BOTTRAUD Jean-Yves, FAGNO Loïc, BERGER Stéphane | Fiche | github | Rapport - Transparents - Flyer | Cartes STM32 Nucleo (x4), Shield MBed LoRa SX1276 (x4), Semtech LoRaMote (x2) |
2 | Monitoring de consommation électrique avec OpenEnergyMonitor | AZOUZI MARWEN, FAURE ADRIEN | Fiche | github | Rapport - Transparents - Flyer | ESP8266 + Current Sensor + FTDI + Breadboard |
3 | Feuille de présence apprenti NFC | FAURE MAXIMILIEN, MARQUE BASTIEN | Fiche | github | Rapport - Transparents - Flyer | BBB + Lecteur NFC ACR 211 + Tags NFC |
4 | LoRaMote Wyres | SAHUC Alexandre, CROZE Erwan | Fiche | github | Rapport - Transparents - Flyer | 2 Motes Wyres + RPI1 + 1 LoRaMote Semtech + 1 carte SX1301 IMST iC880A (FTDI) |
5 | Méteo 433 MHz | CHARTIER Aurelien, MENGOLI JEAN-LUC | Fiche | github | Rapport - Transparents - Flyer | BBB + RFXCom + 2 Sondes (UV, Thermo) + Modules TxRx 433 |
6 | Lecteur NFC Sigfox (Application : Gestion des rondes de surveillance) | AAM, GUERIN CEDRIC | Fiche | github | Rapport - Transparents | Platine Snooplab Areku SigFox + Shield NFC + Tag NFC |
7 | Collecte et analyse de messages RDS par radio FM | ABHAMON Ronan, BIGARD FLORIAN | Fiche | github | Rapport - Transparents | BeagleBone Black + Sparkfun FM Tuner + Ecran Graphic LCD 84x48 - Nokia 5110 |
8 | Serrure intelligente - voir Touchkey & SmartSelfService | BAYLE STEPHANE, BUCHS THIBAUD, MAKHLOUF MEHDI | Fiche | github | Transparents | STM32 Nucleo + Shield Nucleo NFC + Raspberry Pi + Coffre-fort de FabMSTIC |
9 | Compteur de passage de véhicules avec OpenCV (A CONFIRMER) | OLVERA BADILLO ANGELICA, RUKUNDO Fiston, SUN HUANAN | Fiche | github | Rapport - Transparents - Flyer | Intel Galileo + Alim 5V + Module Wifi ESP8266 + WebCam USB |
10 | Culture Hydroponique | BANWARTH PIERRE, DONIAS PIERRE | Fiche | github | Rapport - Transparents - Flyer | Arduino Uno, Pompe Peristalique, LEDs, Enceintes, Capteur Ultrason, 2 raspberry pi 2, AgriSensor |
11 | Capteurs XBee | DIAGNE EI HADJI MALICK, ZAKARI TOURE ISMAEL | Fiche | github | Rapport - Transparents - Flyer | Arduino FIO + FTDI + 2 XBee S1 + Xbee Explorer |
Contenu général des mini-projets
Les équipes ne font qu'une partie des manipulations en fonction du sujet du mini-projet affecté.
CoAP Binding for OpenHAB
Extension de Node-RED
Création ou Amélioration de Nodes
- Node Crypto (avec https://nodejs.org/api/crypto.html)
- Node Apache Kafka
- Node Apache Flume
- Node CoAP
- Node UPnP
- Node DTLS en étendant le node UDP
- Node Radio Data System pour SparkFun FM Tuner Evaluation Board - Si4703
- Node SigFox (uplink et downlink)
- Node Sérialisation/Déserialisation Avro
- Node Sérialisation/Déserialisation Thrift
- Node Sérialisation/Déserialisation Protobuf
- Node Phant.io pour Sparkfun Data
- Node Streamdata.io
- Node SensorTag2015 (sur la base du noeud SensorTag)
- Node Provider SMS Twilio
- Node Provider SMS Free Mobile
- Node Provider SMS Orange Mobile
Le code devra être recontribué en open-source sur GitHub et catalogué dans http://flows.nodered.org/
Déploiement sur plateforme Cloud
Le serveur Node-RED et le "broker" PubSub MQTT (Mosquitto ou RabbitMQ) peuvent être hébergé sur une plateforme cloud comme Windows Azure ou Amazon EC2, Heroku, IBM Bluemix ou sur votre machine.
Attention, Eduroam bloque le port 1883 du protocole MQTT (entre autre).
PubSub des mesures capteur avec Apache Kafka
Remplacer le broker MQTT par le broker PubSub Apache Kafka qui peut fonctionner en configuration distribuée et répliquée (plusieurs serveurs sur une plateforme cloud).
PubSub des mesures capteur avec Apache Flume
Remplacer le broker MQTT par le broker PubSub Apache Flume qui peut fonctionner en configuration distribuée et répliquée (plusieurs serveurs sur une plateforme cloud).
Collecte, Stockage et Visualisation des mesures capteur avec Logstash, Elastic Search, Kibana
Affichage des positions avec Bootleaf
Refactorer et améliorer Bootleaf afin de visualiser en temps réel les données géolocalisées de vos capteurs ou des traces (séries temporelles de positions). Exemple: tester la présence d'un champ latlon, latlonalt, geo, ... dans le JSON des flows Node-RED.
Analyse des mesures capteurs en temps réel avec Apache Spark Streaming
Installer Spark sur un petit cluster EC2 (1 master et 2 slaves en Ubuntu 14.04 t2.micro).
S'inspirer du script Scala MQTTCount pour calculer des valeurs agrégées (avg, min, max) des groupes de capteurs sur des fenêtres de 5 minutes.
Faire de même avec les brokers Apache Kafka et Apache Flume
Intégration à un ESB Apache Camel
Compléter le tutoriel avec un déploiement de composants Apache Camel Vous pourrez utiliser les composants suivants
- https://camel.apache.org/weather.html
- https://camel.apache.org/mqtt.html
- https://camel.apache.org/rss.html
- https://camel.apache.org/esper.html
- https://camel.apache.org/mongodb.html
- InfluxDB
Monitoring de votre infrastructure avec Telegraf, InfluxDB, Grafana et Kapacitor
Monitoring de votre infrastructure avec AWS Cloudwatch et Grafana
Pour monitorer les machines qui hébergent les serveurs (Mosquitto, ...) sur AWS EC2:
- Activer AWS Cloudwatch
- Configurer Grafana pour AWS Cloudwatch (lien).
Soutenances
Planning des soutenances
COMING SOON
Instructions pour les soutenances des mini-projets
- chaque soutenance dure 15 minutes comportant une présentation de 7 minutes ainsi qu'une démonstration de 5 minutes et 3 à 5 minutes de questions/réponses.
- respectez le temps donc repetez la
- remplissez le doodle pour choisir un creneau de passage
- la présentation mettra en avant
- le titre (avec les noms prénoms des binômes)
- les applications IoT cibles/envisagées
- le ou les architectures (successivement) implémentées,
- les composants logiciels et matériels utilisés,
- les métriques (langages de programmation, sloc, performance ...),
- les problèmes rencontrés et les solutions élaborées,
- la conclusion
- des perspectives possibles à votre développement.
Le code, le rapport et le PDF de la presentation doivent être livré dans un dépôt Github la veille de la soutenance. Le rapport qui détaille les éléments de la présentation sera livré dans un README.md ou README.html dans le dépôt GitHub.
Envoyez le lien vers le dépôt Github (code + présentation) avant la soutenance.
La présentation peut-être réalisée avec Reveal.js.
Pensez a répéter vos présentations.
Projets
Matériel à disposition
- Intel Galileo
- http://intel-software-academic-program.com/courses/#iot
- Gas Sensors
- DHT11/DHT21/DHT22 etc. Temperature & Humidity sensors
- SCL3711 NFC Reader --> voir NFCpy
- Capteur de pression BMP085
- High Sensitivity Alarm Vibration Sensor Module
- PIR Motion Sensor
- BMP085 Pressure Sensor
- CC2541 SensorTag Development Kit
- Socket.io
- STM32 Nucleo
- Shield BlueNRG
- 2 Shields LoRa pour Arduino (LoRaFabian) à brancher sur Galileo et STM32 Nucleo.
- Il faut porter les sketchs Arduino https://github.com/Wi6labs/lorafabian/tree/master/ARDUINO_SKETCH via MBed et Galileo.
Visualisation
- MQTT Panel
- MQTT over Websocket
- Leaflet.js modern open-source JavaScript library for mobile-friendly interactive maps
- Morris.js Charts in Javascript
- Grafana
- Graphite
- Ganglia
Stockage
Liens
- Intel Galileo
- http://wiki.eclipse.org/Eclipse_IoT_Day_Grenoble_2014
- https://github.com/SmartDollHouse
- https://twitter.com/FablabAIR
Autres
- IoTSyS
- Home.pi
- OM2M
- Gladys
- DEPRECATED : MQTT Panel avec rickshaw
- Dépôt GitHub
- Rapport 2016 sur le CES de Olivier Ezratty
- Flot Charts
Galerie 2016
Suivez les tweets :
- https://twitter.com/FablabAIR/status/719892515072159744
- https://twitter.com/FablabAIR/status/719948586671325184
- https://twitter.com/FablabAIR/status/719880125806985216
- https://twitter.com/FablabAIR/status/719872755739582464
- https://twitter.com/FablabAIR/status/719865759158165505
- https://twitter.com/FablabAIR/status/719862460715573249
- https://twitter.com/FablabAIR/status/719858492681691136