PM2M/2014/TP: Difference between revisions

From air
Jump to navigation Jump to search
No edit summary
 
(32 intermediate revisions by the same user not shown)
Line 9: Line 9:
==Etapes==
==Etapes==
* Tutoriel [[OSGi]]
* Tutoriel [[OSGi]]
* [[UE_PEIP_L1|Tutoriel Arduino]]
* Installation d'[[OpenHAB]]
* Installation d'[[OpenHAB]]
** [https://www.dropbox.com/s/9qdsnvtfo3tiaj7/openhab%2Barduino.zip OpenHAB+Arduino]
* Installation de [[Mosquitto]]
* Installation de [[Mosquitto]]
** Tutoriel [[MQTT]] : https://docs.google.com/presentation/d/1N9OiMxiVWPbsVrAcPfT-J0k1o7a-neIp7TVFGa6AkWM/edit?pli=1#slide=id.g1d409a344_09
* Installation de [[Node-RED]]
* Installation de [[Node-RED]]
* Installation de [[MQTT Panel]]
* Installation de [[MQTT Panel]] avec [http://code.shutterstock.com/rickshaw/examples/ rickshaw]
* [https://github.com/SmartDollHouse Dépôt GitHub]
* [https://github.com/SmartDollHouse Dépôt GitHub]


==Mini-Projet==
==Mini-Projet==
[[Image:M2MArchi2014-001.jpg|200px|right|thumb|Architecture Mini-Projet]][[Image:M2MArchi2014-002.jpg|200px|right|thumb|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 [[Intel Galileo]] ou sur un téléphone Android. 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]], [[XMPP]], [[WebRTC]] ...). Les formats des messages peuvent être [[JSON]] ([[GeoJSON]]), [[BSON]], [[CSV]], [[NMEA 0183]], binaire, [[XML]] ([[EEML]], [[KML]], [[Adaptive Machine Messaging Protocol (AMMP)|AMMP]] ...) ... Les données peuvent être stockées dans une base de données (SQL ou [[NoSQL]] comme [[MongoDB]], [[Redis.io]], [[TempoDB]], ...) et visualisées en différé ou en direct ([[MQTT Panel]], [[D3.js]], ...).

===Extra Mini-Projet===
====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]] ou [[Heroku]].

'''Attention, Eduroam bloque le port 1883 du protocole [[MQTT]].'''

====[[PubSub]] des mesures capteur avec [[Apache Kafka]]====
[[Image:GPSKafkaStormAzureDemo.png|200px|right|thumb|GPS > Kafka > Storm on Azure Demo]]
Le broker [[MQTT]] peut être replacé par le broker [[PubSub]] [[Apache Kafka]] qui peut fonctionner en configuration distribuée et répliquée (plusieurs serveurs sur une plateforme cloud).

====Intégration à un ESB [[Apache Camel]]====
Compléter le tutoriel avec un déploiement de composants [[Apache Camel]]
Compléter le tutoriel avec un déploiement de composants [[Apache Camel]]
Vous pourrez utiliser les composants suivants
Vous pourrez utiliser les composants suivants
Line 25: Line 43:
* https://camel.apache.org/mongodb.html
* https://camel.apache.org/mongodb.html
** https://code.google.com/a/apache-extras.org/p/camel-extra/wiki/EsperDemo
** https://code.google.com/a/apache-extras.org/p/camel-extra/wiki/EsperDemo

==Soutenance==
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 contexte M2M et le domaine d'application ciblée,
** le ou les architectures (successivement) implémentées,
** les composants logiciels et matériels utilisés,
** les métriques (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.
Prière de me communiquer l'adresse des dépôts GitHub aussi vite que possible.

==Projets==
* https://github.com/DIAZAU/M2M_FALL-LABED
* https://github.com/DevYourWorld/Master2-M2M
* https://github.com/CocoRid/SendData
* https://github.com/antho38/projetM2M-galileo-MQ-7
* https://github.com/twane/nfc_voting
* https://github.com/malfraip/M2M_-BenTaamallah_Malfrait
* https://github.com/MasterM2MBL/M2M
* https://github.com/bachnej/M2M_BLANC_NEJEM
* https://github.com/AlexisBRENON/m2m-ujf-2014


==Matériel==
==Matériel==
Line 30: Line 78:
* http://intel-software-academic-program.com/courses/#iot
* http://intel-software-academic-program.com/courses/#iot
** http://intel-software-academic-program.com/courses/diy/Intel_Academic_-_DIY_-_InternetOfThings/IntelAcademic_IoT_09_Arduino_Motor_Shield.pdf
** http://intel-software-academic-program.com/courses/diy/Intel_Academic_-_DIY_-_InternetOfThings/IntelAcademic_IoT_09_Arduino_Motor_Shield.pdf
* [[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]]

==Visualisation==
* [https://github.com/PaulLabat/mqtt-panel MQTT Panel]
* MQTT over Websocket
** https://www.npmjs.org/package/mqtt-ws
** http://mqtt.org/wiki/doku.php/mqtt_over_websockets
* [[Leaflet.js]] modern open-source JavaScript library for mobile-friendly interactive maps
* [[Morris.js]] Charts in Javascript


==Liens==
==Liens==
Line 35: Line 99:
* http://wiki.eclipse.org/Eclipse_IoT_Day_Grenoble_2014
* http://wiki.eclipse.org/Eclipse_IoT_Day_Grenoble_2014
* https://github.com/SmartDollHouse
* https://github.com/SmartDollHouse
* https://twitter.com/FablabAIR



==Autres==
==Autres==
Line 41: Line 105:
* [https://github.com/denschu/home.pi Home.pi]
* [https://github.com/denschu/home.pi Home.pi]
* [[OM2M]]
* [[OM2M]]

==Galerie==
[[Image:PM2M214-001.jpg|200px|PM2M 2014]][[Image:PM2M214-002.jpg|200px|PM2M 2014]][[Image:PM2M214-003.jpg|200px|PM2M 2014]][[Image:PM2M214-004.jpg|200px|PM2M 2014]][[Image:PM2M214-005.jpg|200px|PM2M 2014]][[Image:PM2M214-006.jpg|200px|PM2M 2014]][[Image:PM2M214-007.jpg|200px|PM2M 2014]][[Image:PM2M214-008.jpg|200px|PM2M 2014]]

Latest revision as of 11:44, 17 April 2014

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


Support de cours

Etapes

Mini-Projet

Architecture 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 Intel Galileo ou sur un téléphone Android. 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, XMPP, 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, TempoDB, ...) et visualisées en différé ou en direct (MQTT Panel, D3.js, ...).

Extra Mini-Projet

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 ou Heroku.

Attention, Eduroam bloque le port 1883 du protocole MQTT.

PubSub des mesures capteur avec Apache Kafka

GPS > Kafka > Storm on Azure Demo

Le broker MQTT peut être replacé par le broker PubSub Apache Kafka qui peut fonctionner en configuration distribuée et répliquée (plusieurs serveurs sur une plateforme cloud).

Intégration à un ESB Apache Camel

Compléter le tutoriel avec un déploiement de composants Apache Camel Vous pourrez utiliser les composants suivants

Soutenance

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 contexte M2M et le domaine d'application ciblée,
    • le ou les architectures (successivement) implémentées,
    • les composants logiciels et matériels utilisés,
    • les métriques (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. Prière de me communiquer l'adresse des dépôts GitHub aussi vite que possible.

Projets

Matériel

Visualisation

Liens

Autres

Galerie

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