PM2M/2017/TP: Difference between revisions

From air
Jump to navigation Jump to search
 
(38 intermediate revisions by 4 users not shown)
Line 10: Line 10:


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).
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).

[[Image:SensorsMix.jpg|600px|center|Sensors Mix]]



==Support de cours==
==Support de cours==
Line 17: Line 20:


==Etapes==
==Etapes==
* Coup d’œil aux [[PM2M/2016/TP|projets 2016]].
* Tutoriel [[OSGi]]
* Lire [https://dzone.com/storage/assets/2605430-dzone-internetofthings-2016.pdf The DZone Guide to The Internet of Things 2017]
* Installation de [[Docker]]
* [[UE_PEIP_L1|Tutoriel Arduino]]
* [[UE_PEIP_L1|Tutoriel Arduino]]
* Suivre le tutoriel [[Developing IoT Mashups with Docker, MQTT, Node-RED, InfluxDB, Grafana]].
* Installation d'[[OpenHAB]]
* Installation d'[[OpenHAB]].
** [https://www.dropbox.com/s/9qdsnvtfo3tiaj7/openhab%2Barduino.zip OpenHAB+Arduino]
** [https://www.dropbox.com/s/9qdsnvtfo3tiaj7/openhab%2Barduino.zip OpenHAB+Arduino]
* Installation de [[Mosquitto]]
* Installation de [[Mosquitto]]
Line 30: Line 36:
* Installation de [[Spark]]
* 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'''.
'''Remarque TRES TRES importante: ne sauvegardez pas les crédentials des services cloud que vous utilisez (AWS, Digital Ocean, Heroku, Azure, IBM Bluemix, Twitter, OVH ...) dans des dépôts git publiques : placez les dans des documents credentials.json, credentials.properties, credentials.sh, ... et ajoutez les ces documents à .gitignore''' pour plus de sureté.


==Fiche de synthèse==
==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.
Synthétiser un des sujets suivants en 1 page maximum. La page doit être une entrée du wiki. Chaque synthèse est individuelle.
* [[GSN]]
* [[GSN]] (--> Frank Junior Ngassam)
* [[WMBus]]
* [[WMBus]]
* [[NB-IoT]]
* [[NB-IoT]]
Line 44: Line 49:
* [[OPC-UA]]
* [[OPC-UA]]
* [[Tetra Radio]]
* [[Tetra Radio]]
* [[Kaa]]
* [[Kaa]] (--> Osvaldo MORENO)
* [[OGC SensorThings]]
* [[OGC SensorThings]]
* [[Zephyr Project]]
* [[Zephyr Project]]
* [[S3P]]
* [[S3P]] --> Thomas Lerchundi
* [[Apache Edgent]]
* [[Apache Edgent]] (--> Frédéric Derue)
* [[Apache Nifi]]
* [[Apache Nifi]] (--> Clément SOULIER)
* [[Eclipse Kura]]
* [[Eclipse Kura]] (--> Sébastien OCHIER)
* [[Eclipse Vorto]]
* [[Eclipse Vorto]]
* [[Eclipse Hono]] (--> Clément Brocard)
* [[Eclipse Ditto]] IMPORTANT pour [[Digital Twin]]
* OneM2M [[LwM2M]] (--> Gauchy Anthony)
...
...


==Capteurs et Actionneurs==
==Capteurs et Actionneurs==

[[Image:SensorsMix.jpg|600px|center|Sensors Mix]]


[[Image:Genuino101.jpg|200px|thumb|right|Genuino 101]]
[[Image:Genuino101.jpg|200px|thumb|right|Genuino 101]]
Line 104: Line 112:




!scope="row"| 1
| Profilage et reconnaissance d'appareils électriques d'un capteur d'intensité de courant basé sur une carte ESP8266.
| Frédéric Derue, Frank Junior Ngassam
| [[PM2M-2017-ProfilageElectrique/Suivi| '''Fiche''']]
| [https://github.com/juniorfrankgit/m2m_project.git '''github''']
| [[Media:PM2M-2017-ProfilageElectrique-Rapport.pdf|Rapport]] - [[Media:PM2M-2017-ProfilageElectrique-slides.pdf|Transparents]] - [[Media:PM2M-2017-ProfilageElectrique-flyer.pdf|Flyer]]
| Carte [[ESP8266]] + pince ampérométrique
|-

!scope="row"| 2
| Biathlon Laser.
| Anthony Gauchy
| [[PM2M-2017-CarabineLaser/Suivi| '''Fiche''']]
| [https://github.com/agauchy/m2mIoTLaserGame'''github''']
| [[Media:PM2M-2017-BiathlonLaser-rapport.pdf|Rapport]] - [http://slides.com/anthonygauchy/deck-2/fullscreen'''Transparents'''] - [https://youtu.be/nmw8IzrO6qw'''Youtube''']
| Carte Wemos [[ESP8266]], photo-resistance, servo-moteur,
|-

!scope="row"| 2
| Machine de sport connectée.
| Clément SOULIER, Sébastien OCHIER
| [[PM2M-2017-MachineSport/Suivi| '''Fiche''']]
| [https://github.com/PM2M-2017-MachineSport/pm2m '''github''']
| [[Media:PM2M-2017-MachineSport-rapport.pdf|Rapport]] - [[Media:PM2M-2017-MachineSport-slides.pdf|Transparents]] - [[Media:PM2M-2017-MachineSport-flyer.pdf|Flyer]]
| Une carte NFC ST réf: SHIELD-M24SR-ADV, Une carte wifi ST Nucleo expansion board, Un Nuleo-64 STM32F411
|-

!scope="row"| 4
| Corbeille de fruit musicale
| Thomas Lerchundi
| [[PM2M-2017-FruitMusique/Suivi| '''Fiche''']]
| [https://github.com/PM2M-2017-FruitMusique/pm2m '''github''']
| [[Media:PM2M-2017-FruitMusique-rapport.pdf|Rapport]] - [[Media:PM2M-2017-FruitMusique-slides.pdf|Transparents]] - [[Media:PM2M-2017-FruitMusique-flyer.pdf|Flyer]]
| [https://www.adafruit.com/product/2340 Capacitive Touch HAT for Raspberry Pi - Mini Kit - MPR121] ,Raspberry V2 , Clé Wifi
|-

!scope="row"| 5
| Boite à lettre connectée en [[LoRa]]
| Clément BROCARD, Osvaldo MORENO
| [[PM2M-2017-iBAL/Suivi| '''Fiche''']]
| [https://github.com/secu2/M2M-BAL '''github''']
| [[Media:PM2M-2017-iBAL-rapport.pdf|Rapport]] - [[Media:PM2M-2017-iBAL-slides.pdf|Transparents]] - [[Media:PM2M-2017-iBAL-flyer.pdf|Flyer]]
| STM32 Nucleo LRWAN1, Ultrason US-100, Raspberry PI, Module RN2483
|-






|}
|}

,


==Contenu général des mini-projets==
==Contenu général des mini-projets==
Line 221: Line 275:


==Matériel à disposition==
==Matériel à disposition==
* Cartes de communication [[Low Power Wide Area Networks]]
* [[Intel Galileo]]
* [[Intel Galileo]]
* http://intel-software-academic-program.com/courses/#iot
* http://intel-software-academic-program.com/courses/#iot

Latest revision as of 16:47, 3 May 2017

Page 2017 des supports de cours et travaux pratiques de l'UE Projets M2PGI Services Machine-to-Machine.

Enseignants 2017 : Didier Donsez

Partie démarrant 28/02 au 28/03 .

Soutenance du mi-projet le 28/03 (1H30).

Rendu fiche de synthèse : 27/03 à minuit.

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).

Sensors Mix


Support de cours

Etapes


Remarque TRES TRES importante: ne sauvegardez pas les crédentials des services cloud que vous utilisez (AWS, Digital Ocean, Heroku, Azure, IBM Bluemix, Twitter, OVH ...) dans des dépôts git publiques : placez les dans des documents credentials.json, credentials.properties, credentials.sh, ... et ajoutez les ces documents à .gitignore pour plus de sureté.

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.

...

Capteurs et Actionneurs

Genuino 101
LoPy (LoRa)
SiPy (Sigfox)
File:Fipy.png
FiPy (the full monty)
  1. Pycom LoPy
  2. Pycom SiPy
  3. Pycom FiPy
  4. STM32 Nucleo + Shield LoRa SX1272 + Shield Météo
  5. STM32 Nucleo + Shield LoRa SX1276 + Shield Météo
  6. STM32 Nucleo + Shield NFC + Shield BLE (avec client Android MQTT)
  7. STM32 Nucleo + Récepteur RDS + ESP8266
  8. Sensors ZWave + Clé ZWave
  9. Sensors RFXCom 433MHz + Clé RFXCom 433MHz
  10. STM32 Nucleo + Shield BLE (capture de beacons iBeacon & AltBeacon) (avec client Android MQTT)
  11. Sensors enOcean (à vérifier auprès de Jérôme Maisonnasse)
  12. Sensors Zigbee (à vérifier auprès de Jérôme Maisonnasse)
  13. Sensors XBee (à vérifier auprès de Jérôme Maisonnasse)
  14. Carte Wifi ESP8266 (IDE Arduino) + Shield OpenEnergyMonitor
  15. Carte Wifi ESP8266 (Lua) + Shield OpenEnergyMonitor
  16. Carte de démonstration SigFox
  17. Carte Intel Curie Genuino 101 (avec client Android MQTT)
  18. Carte Intel Curie Genuino 101 (avec client Android MQTT) +Ceinture cardio Geonaute
  19. Carte Xadow GSM+BLE du RePhone (voir ArduinoPhone 2.0)
  20. Carte LoRa

Mini-Projet

Architecture 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

Affectation des projets PM2M 2016-2017
Sujet Étudiants Fiche de suivi Dépôt git Documents Matériel
1 Profilage et reconnaissance d'appareils électriques d'un capteur d'intensité de courant basé sur une carte ESP8266. Frédéric Derue, Frank Junior Ngassam Fiche github Rapport - Transparents - Flyer Carte ESP8266 + pince ampérométrique
2 Biathlon Laser. Anthony Gauchy Fiche github Rapport - Transparents - Youtube Carte Wemos ESP8266, photo-resistance, servo-moteur,
2 Machine de sport connectée. Clément SOULIER, Sébastien OCHIER Fiche github Rapport - Transparents - Flyer Une carte NFC ST réf: SHIELD-M24SR-ADV, Une carte wifi ST Nucleo expansion board, Un Nuleo-64 STM32F411
4 Corbeille de fruit musicale Thomas Lerchundi Fiche github Rapport - Transparents - Flyer Capacitive Touch HAT for Raspberry Pi - Mini Kit - MPR121 ,Raspberry V2 , Clé Wifi
5 Boite à lettre connectée en LoRa Clément BROCARD, Osvaldo MORENO Fiche github Rapport - Transparents - Flyer STM32 Nucleo LRWAN1, Ultrason US-100, Raspberry PI, Module RN2483

,

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

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 'gratuite' ou 'pas chère' comme Windows Azure ou Amazon EC2, Heroku, IBM Bluemix, Digital Ocean, OVH ou sur votre machine via des images Docker.

Attention, Eduroam bloque le port 1883 du protocole MQTT (entre autre).

PubSub des mesures capteur avec Apache Kafka

GPS > Kafka > Storm on Azure Demo

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

voir NodeRED ElasticSearch3

Routage avec Apache Nifi

Décodage avec Eclipse Vorto

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

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:

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

Visualisation

Stockage

Liens

Autres

Galeries

Galerie 2016

Suivez les tweets :

Galerie 2015

Galerie 2014

PM2M 2014PM2M 2014PM2M 2014PM2M 2014PM2M 2014PM2M 2014PM2M 2014PM2M 2014