https://air.imag.fr/api.php?action=feedcontributions&user=BIGARD.FLORIAN&feedformat=atomair - User contributions [en]2024-03-28T12:12:28ZUser contributionsMediaWiki 1.35.13https://air.imag.fr/index.php?title=PM2M/2016/TP&diff=29813PM2M/2016/TP2016-04-12T11:22:06Z<p>BIGARD.FLORIAN: /* Sujets des mini-projets */</p>
<hr />
<div>Page 2016 des supports de cours et travaux pratiques de l'UE [[Projets M2PGI Services Machine-to-Machine]].<br />
<br />
Enseignants 2016 : Didier Donsez, Laurent Lemke<br />
<br />
Partie démarrant le 1er Mars 2016 en F112.<br />
<br />
Soutenance : 12 Avril 2016 de 13H30 à 17H30.<br />
<br />
Rendu fiche de synthèse : 12 Avril 2016 de 13H00<br />
<br />
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).<br />
<br />
==Support de cours==<br />
* [http://membres-liglab.imag.fr/donsez/pub/publi/intergiciels-iot.pdf Intergiciels pour l'IoT]<br />
* [http://membres-liglab.imag.fr/donsez/cours/openhab.pdf La plateforme OpenHAB]<br />
* [http://membres-liglab.imag.fr/donsez/cours/osgi.pdf La plateforme de services OSGi]<br />
<br />
==Etapes==<br />
* Tutoriel [[OSGi]]<br />
* [[UE_PEIP_L1|Tutoriel Arduino]]<br />
* Installation d'[[OpenHAB]]<br />
** [https://www.dropbox.com/s/9qdsnvtfo3tiaj7/openhab%2Barduino.zip OpenHAB+Arduino]<br />
* Installation de [[Mosquitto]]<br />
** Tutoriel [[MQTT]] : https://docs.google.com/presentation/d/1N9OiMxiVWPbsVrAcPfT-J0k1o7a-neIp7TVFGa6AkWM/edit?pli=1#slide=id.g1d409a344_09<br />
* Installation de [[Node-RED]]<br />
** et ses extensions [http://flows.nodered.org/node/node-red-contrib-rfxcom Rfxcom], [http://flows.nodered.org/node/node-red-contrib-influxdb Influxdb], [http://flows.nodered.org/node/node-red-contrib-eddystone Eddystone], [http://flows.nodered.org/node/node-red-node-sensortag Sensortag], [http://flows.nodered.org/node/node-red-contrib-openzwave ZWave], [http://flows.nodered.org/node/node-red-contrib-bleacon iBeacon], PubNub, IFTTT, * [http://flows.nodered.org/node/node-red-contrib-amqp AMQP] ... et [http://flows.nodered.org/ autres] (en fonction de votre projet).<br />
* Installation de dashboard de visualisation [[InfluxDB]], [[Grafana]], [[Chronograf]], [[Telegraf]], [[Kapacitor]]<br />
* Installation de la suite [[Logstash]], [[Elastic Search]] et [[Kibana]]<br />
* Création de comptes sur [[Amazon EC2]], [[PubNub]], [[IFTTT]] Maker, [[Streamdata.io]], [https://data.sparkfun.com/streams/make Sparkfun Data] ...<br />
* Installation de [[Spark]]<br />
<br />
'''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'''.<br />
<br />
'''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'''.<br />
<br />
==Fiche de synthèse==<br />
Synthétiser un des sujets suivants en 1 page maximum. La page doit être une entrée du wiki. Chaque synthèse est individuelle.<br />
* [[SARAH]] (BUCHS Thibaud)<br />
* [[WirelessHART]] (= BAYLE Stéphane)<br />
* [[Weightless]] (= AIT-MOULOUD Amine)<br />
* [[OpenRF]] (= Jean-Yves Bottraud)<br />
* [[WMBus]]<br />
* [[Thread]] (Google) (= GUERIN Cedric )<br />
* [[LoRaWAN]] (= BERGER Stéphane)<br />
* [[NB-IoT]]<br />
* [[NB-LTE]]<br />
* [[HaLow]] (=SUN Huanan) <br />
* [[Iridium]] (= DONIAS Pierre)<br />
* [[Apple Homekit]]<br />
* [[AllJoyn]](= MAKHLOUF Mehdi)<br />
* [[OneM2M]]<br />
* [[OPC-UA]]<br />
* [[DTN|Delay Tolerant Networks]] (= RUKUNDO Fiston)<br />
* [[Radio Data System]] (= ABHAMON Ronan)<br />
* [[Tetra Radio]]<br />
* [[IPSO]] (= CROZE Erwan)<br />
* [[GeoJSON]] (= AZOUZI Marwen)<br />
* [[Avro]] (= FAURE Adrien)<br />
* [[Thrift]] (= FAURE Maximilien)<br />
* [[Protobuf]] (= ZAKARI TOURE Ismael)<br />
* [[Apache Flume]] (= MARQUE Bastien)<br />
* [[Apache Zeppelin]] (= BIGARD Florian)<br />
* [[Kaa]]<br />
* [[Hypercat]] (= CHARTIER Aurélien)<br />
* [[Jupyter]] (= SAHUC Alexandre)<br />
* [[AWS IoT]] (= DIAGNE El Hadji Malick)<br />
* [[Brillo]] (= MENGOLI Jean-Luc)<br />
* [[EVRYTHNG]] (= OLVERA BADILLO Angélica)<br />
* [[OGC SensorThings]] <br />
* [[Zephyr Project]]<br />
* [[OpenEnergyMonitor]] (= Loïc FAGNO)<br />
* [[PlatformIO]](= BANWARTH Pierre)<br />
...<br />
<br />
==Capteurs et Actionneurs==<br />
[[Image:Genuino101.jpg|200px|thumb|right|Genuino 101]]<br />
# STM32 Nucleo + Shield LoRa SX1276 + Shield Météo<br />
# STM32 Nucleo + Shield NFC + Shield BLE (avec [http://www.eclipse.org/paho/clients/android/sample/ client Android MQTT])<br />
# STM32 Nucleo + [[SparkFun FM Tuner Evaluation Board - Si4703|Récepteur RDS]] + [[ESP8266]]<br />
# Sensors ZWave + Clé ZWave<br />
# Sensors RFXCom 433MHz + Clé RFXCom 433MHz<br />
# STM32 Nucleo + Shield BLE (capture de beacons [[iBeacon]] & [[AltBeacon]]) (avec [http://www.eclipse.org/paho/clients/android/sample/ client Android MQTT])<br />
# Sensors [[enOcean]] (à vérifier auprès de Jérôme Maisonnasse)<br />
# Sensors [[Zigbee]] (à vérifier auprès de Jérôme Maisonnasse)<br />
# Sensors [[XBee]] (à vérifier auprès de Jérôme Maisonnasse)<br />
# Carte Wifi [[ESP8266]] (IDE Arduino) + Shield [[OpenEnergyMonitor]]<br />
# Carte Wifi [[ESP8266]] ([[Lua]]) + Shield [[OpenEnergyMonitor]]<br />
# Carte de démonstration [[SigFox]]<br />
# Carte [[Intel Curie]] [[Genuino 101]] (avec [http://www.eclipse.org/paho/clients/android/sample/ client Android MQTT])<br />
# Carte [[Intel Curie]] [[Genuino 101]] (avec [http://www.eclipse.org/paho/clients/android/sample/ client Android MQTT]) +Ceinture cardio [http://www.decathlon.fr/cardio-bluetooth-smart-40-id_8288269.html Geonaute]<br />
# Carte Xadow GSM+BLE du [[RePhone]] (voir [http://www.instructables.com/id/ArduinoPhone-20-an-Open-Source-Mobile-Phone-Based-/ ArduinoPhone 2.0])<br />
# Carte LoRa<br />
<br />
<br />
==Mini-Projet==<br />
[[Image:M2MArchi2015-001.jpg|200px|right|thumb|Architecture Mini-Projet]]<br />
<br />
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]], [[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]], [[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 ...) <br />
<br />
<br />
===Sujets des mini-projets===<br />
<br />
{|class="wikitable alternance"<br />
|+ Affectation des projets PM2M 2015-2016<br />
|-<br />
|<br />
!scope="col"| Sujet<br />
!scope="col"| Étudiants<br />
!scope="col"| Fiche de suivi<br />
!scope="col"| Dépôt git<br />
!scope="col"| Documents<br />
!scope="col"| Matériel<br />
|-<br />
<br />
<br />
<br />
<br />
!scope="row"| 1<br />
| Géolocalisation Outdoor sans GPS<br />
| AVRIL Sébastien, BOTTRAUD Jean-Yves, FAGNO Loïc, BERGER Stéphane<br />
| [[PM2M-2016-GeolocOutdoor/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-GeolocOutdoor/pm2m '''github''']<br />
| [[Media:PM2M-2016-GeolocOutdoor.pdf|Rapport]] - [[Media:PM2M-2016-GeolocOutdoor-slides.pdf|Transparents]] - [[Media:PM2M-2016-GeolocOutdoor-flyer.pdf|Flyer]]<br />
| Cartes [[STM32 Nucleo]] (x4), Shield MBed [[LoRa]] SX1276 (x4), Semtech LoRaMote (x2) <br />
|-<br />
<br />
<br />
!scope="row"| 2<br />
| Détecteur de Présence Wifi<br />
| AZOUZI MARWEN, FAURE ADRIEN<br />
<br />
| [[PM2M-2016-Presence/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-Presence/pm2m '''github''']<br />
| [[Media:PM2M-2016-Presence.pdf|Rapport]] - [[Media:PM2M-2016-Presence-slides.pdf|Transparents]] - [[Media:PM2M-2016-Presence-flyer.pdf|Flyer]]<br />
| ESP8266 + FTDI + US100 + PIR Motion + Breadboard<br />
|-<br />
<br />
<br />
!scope="row"| 3<br />
| Feuille de présence apprenti NFC <br />
| FAURE MAXIMILIEN, MARQUE BASTIEN<br />
<br />
| [[PM2M-2016-NFCApprenti/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-NFCApprenti/pm2m '''github''']<br />
| [[Media:PM2M-2016-NFCApprenti.pdf|Rapport]] - [[Media:PM2M-2016-NFCApprenti-slides.pdf|Transparents]] - [[Media:PM2M-2016-NFCApprenti-flyer.pdf|Flyer]]<br />
| BBB + Lecteur NFC ACR 211 + Tags NFC<br />
|-<br />
<br />
<br />
<br />
!scope="row"| 4<br />
| LoRaMote Wyres<br />
| SAHUC Alexandre, CROZE Erwan<br />
<br />
| [[PM2M-2016-LoRaMote/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M2016-MOTES/PM2M2016-MOTES '''github''']<br />
| [[Media:PM2M-2016-LoRaMote.pdf|Rapport]] - [[Media:PM2M-2016-LoRaMote-slides.pdf|Transparents]] - [[Media:PM2M-2016-LoRaMote-flyer.pdf|Flyer]]<br />
| 2 Motes Wyres + RPI1 + 1 LoRaMote Semtech + 1 carte SX1301 [[IMST iC880A]] (FTDI)<br />
|-<br />
<br />
<br />
!scope="row"| 5<br />
| Méteo 433 MHz<br />
| CHARTIER Aurelien, MENGOLI JEAN-LUC<br />
| [[PM2M-2016-Meteo433/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M2016-CHARTIER-MENGOLI/M2M_Projet '''github''']<br />
| [[Media:PM2M-2016-Meteo433.pdf|Rapport]] - [[Media:M2M-Chartier-Mengoli_Presentation.pptx|Transparents]] - [[Media:PM2M-2016-Meteo433-flyer.pdf|Flyer]]<br />
| BBB + RFXCom + 2 Sondes (UV, Thermo) + Modules TxRx 433<br />
|-<br />
<br />
<br />
<br />
!scope="row"| 6<br />
| Lecteur NFC Sigfox (Application : Gestion des rondes de surveillance)<br />
| AIT-MOULOUD Amine, GUERIN CEDRIC<br />
| [[PM2M-2016-NFCSigfox/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-NFCSigfox/pm2m '''github''']<br />
| [[Media:PM2M-2016-NFCSigfox.pdf|Rapport]] - [[Media:PM2M-2016-NFCSigfox-slides.pdf|Transparents]] <br />
| Platine Snooplab Areku [[SigFox]] + Shield [[NFC]] + Tag NFC<br />
|-<br />
<br />
<br />
<br />
<br />
<br />
!scope="row"| 7<br />
| Collecte et analyse de messages RDS par radio FM<br />
| ABHAMON Ronan, BIGARD FLORIAN<br />
| [[PM2M-2016-RDSMining/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M2016-A-B/ '''github''']<br />
| [https://github.com/PM2M2016-A-B/FM-tuner/blob/master/README.md '''Rapport'''] - [[Media:Pres.pdf|Transparents]]<br />
| [[BeagleBone Black]] + [[SparkFun FM Tuner Evaluation Board - Si4703|Sparkfun FM Tuner]] + Ecran [[Graphic LCD 84x48 - Nokia 5110]]<br />
|-<br />
<br />
<br />
<br />
!scope="row"| 8<br />
| Serrure intelligente - voir [[Touchkey]] & [[SmartSelfService/FicheSuivi2014|SmartSelfService]]<br />
| BAYLE STEPHANE, BUCHS THIBAUD, MAKHLOUF MEHDI<br />
| [[PM2M-2016-NfcCoffrefortStm32Nucleo/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M2016-STM32NUCLEO/M2M '''github''']<br />
| [[Media:PM2M-2016-NfcCoffrefort-slides.pdf|Transparents]]<br />
| [[STM32 Nucleo]] + Shield Nucleo [[NFC]] + [[Raspberry Pi]] + Coffre-fort de [[FabMSTIC]]<br />
|-<br />
<br />
<br />
!scope="row"| 9<br />
| Compteur de passage de véhicules avec [[OpenCV]] (A CONFIRMER)<br />
| OLVERA BADILLO ANGELICA, RUKUNDO Fiston, SUN HUANAN<br />
| [[PM2M-2016-CompteurVehicules/Suivi| '''Fiche''']]<br />
| [https://github.com/AngieMoomin/PM2M2016-Galileo '''github''']<br />
| [[Media:PM2M-2016-XXXXX.pdf|Rapport]] - [[Media:PM2M-2016-XXXXX-slides.pdf|Transparents]] - [[Media:PM2M-2016-XXXXX-flyer.pdf|Flyer]]<br />
| [[Intel Galileo]] + Alim 5V + Module Wifi [[ESP8266]] + WebCam USB<br />
|-<br />
<br />
<br />
<br />
<br />
<br />
!scope="row"| 10<br />
| Culture Hydroponique<br />
| BANWARTH PIERRE, DONIAS PIERRE<br />
| [[PM2M-2016-CultureHydroponique/Suivi| '''Fiche''']]<br />
| [https://github.com/PierreBanwarth/M2M_E-Grow '''github''']<br />
| [[Media:PM2M-2016-CultureHydroponique.pdf|Rapport]] - [[Media:PM2M-2016-CultureHydroponique-slides.pdf|Transparents]] - [[Media:PM2M-2016-CultureHydroponique-flyer.pdf|Flyer]]<br />
| Arduino Uno, Pompe Peristalique, LEDs, Enceintes, Capteur Ultrason, 2 raspberry pi 2, [[AgriSensor_:_Arduino-Based_Sensor_for_Agriculture|AgriSensor]]<br />
<br />
|-<br />
<br />
<br />
<br />
<br />
<br />
<br />
!scope="row"| 11<br />
| Capteurs XBee<br />
| DIAGNE EI HADJI MALICK, ZAKARI TOURE ISMAEL<br />
| [[PM2M-2016-XBee/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-XBee/pm2m '''github''']<br />
| [[Media:PM2M-2016-XBee.pdf|Rapport]] - [[Media:PM2M-2016-XBee-slides.pdf|Transparents]] - [[Media:PM2M-2016-XBee-flyer.pdf|Flyer]]<br />
| [[Arduino FIO]] + FTDI + 2 [[XBee S1]] + Xbee Explorer <br />
|-<br />
<br />
<br />
|}<br />
<br />
==Contenu général des mini-projets==<br />
Les équipes ne font qu'une partie des manipulations en fonction du sujet du mini-projet affecté.<br />
<br />
====[[CoAP]] Binding for [[OpenHAB]]====<br />
* avec [[Californium]]<br />
* avec https://github.com/eclipse/californium/pull/25<br />
<br />
====Extension de [[Node-RED]]====<br />
Création ou Amélioration de Nodes<br />
* Node Crypto (avec https://nodejs.org/api/crypto.html)<br />
* Node [[Apache Kafka]]<br />
* Node [[Apache Flume]]<br />
* Node [[CoAP]]<br />
* Node [[UPnP]]<br />
* Node [[DTLS]] en étendant le node UDP<br />
* Node [[Radio Data System]] pour [[SparkFun FM Tuner Evaluation Board - Si4703]]<br />
* Node [[SigFox]] (uplink et downlink)<br />
* Node Sérialisation/Déserialisation [[Avro]]<br />
* Node Sérialisation/Déserialisation [[Thrift]]<br />
* Node Sérialisation/Déserialisation [[Protobuf]]<br />
* Node [[Phant.io]] pour [https://data.sparkfun.com/streams/make Sparkfun Data]<br />
* Node [[Streamdata.io]]<br />
* Node [[SensorTag2015]] (sur la base du noeud [http://flows.nodered.org/node/node-red-node-sensortag SensorTag])<br />
* Node Provider SMS Twilio<br />
* Node [[Provider SMS Free Mobile]]<br />
* Node Provider SMS Orange Mobile<br />
<br />
Le code devra être recontribué en open-source sur GitHub et catalogué dans http://flows.nodered.org/<br />
<br />
====Déploiement sur plateforme Cloud====<br />
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.<br />
<br />
'''Attention, Eduroam bloque le port 1883 du protocole [[MQTT]] (entre autre).'''<br />
<br />
====[[PubSub]] des mesures capteur avec [[Apache Kafka]]====<br />
[[Image:GPSKafkaStormAzureDemo.png|200px|right|thumb|GPS > Kafka > Storm on Azure Demo]]<br />
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).<br />
<br />
====[[PubSub]] des mesures capteur avec [[Apache Flume]]====<br />
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).<br />
<br />
====Collecte, Stockage et Visualisation des mesures capteur avec [[Logstash]], [[Elastic Search]], [[Kibana]]====<br />
<br />
voir [http://flows.nodered.org/node/node-red-contrib-elasticsearch3 NodeRED ElasticSearch3]<br />
<br />
====Affichage des positions avec [[Bootleaf]]====<br />
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]].<br />
<br />
====Analyse des mesures capteurs en temps réel avec [[Spark|Apache Spark Streaming]]====<br />
Installer [[Spark]] sur un petit cluster EC2 (1 master et 2 slaves en Ubuntu 14.04 t2.micro).<br />
<br />
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.<br />
<br />
Faire de même avec les brokers [[Apache Kafka]] et [[Apache Flume]]<br />
<br />
====Intégration à un ESB [[Apache Camel]]====<br />
Compléter le tutoriel avec un déploiement de composants [[Apache Camel]]<br />
Vous pourrez utiliser les composants suivants<br />
* https://camel.apache.org/weather.html<br />
* https://camel.apache.org/mqtt.html<br />
** http://tingenek.wordpress.com/category/mqtt/<br />
* https://camel.apache.org/rss.html<br />
* https://camel.apache.org/esper.html<br />
* https://camel.apache.org/mongodb.html<br />
** https://code.google.com/a/apache-extras.org/p/camel-extra/wiki/EsperDemo<br />
* [[InfluxDB]]<br />
<br />
====Monitoring de votre infrastructure avec [[Telegraf]], [[InfluxDB]], [[Grafana]] et [[Kapacitor]]====<br />
<br />
====Monitoring de votre infrastructure avec [[AWS Cloudwatch]] et [[Grafana]]====<br />
<br />
Pour monitorer les machines qui hébergent les serveurs ([[Mosquitto]], ...) sur AWS EC2:<br />
* Activer [[AWS Cloudwatch]]<br />
* Configurer [[Grafana]] pour AWS Cloudwatch ([http://docs.grafana.org/v2.6/datasources/cloudwatch/ lien]).<br />
<br />
==Soutenances==<br />
<br />
====Planning des soutenances====<br />
COMING SOON<br />
<br />
====Instructions pour les soutenances des mini-projets====<br />
<br />
* 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.<br />
* respectez le temps donc repetez la <br />
* remplissez le doodle pour choisir un creneau de passage<br />
* la présentation mettra en avant<br />
** le titre (avec les noms prénoms des binômes)<br />
** les applications IoT cibles/envisagées<br />
** le ou les architectures (successivement) implémentées,<br />
** les composants logiciels et matériels utilisés,<br />
** les métriques (langages de programmation, sloc, performance ...),<br />
** les problèmes rencontrés et les solutions élaborées,<br />
** la conclusion<br />
** des perspectives possibles à votre développement.<br />
<br />
Le code, le rapport et le PDF de la presentation doivent être livré dans un dépôt Github la veille de la soutenance.<br />
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.<br />
<br />
Envoyez le lien vers le dépôt Github (code + présentation) avant la soutenance.<br />
<br />
La présentation peut-être réalisée avec [[Reveal.js]].<br />
<br />
Pensez a répéter vos présentations.<br />
<br />
==Projets==<br />
<br />
==Matériel à disposition==<br />
* [[Intel Galileo]]<br />
* http://intel-software-academic-program.com/courses/#iot<br />
** http://intel-software-academic-program.com/courses/diy/Intel_Academic_-_DIY_-_InternetOfThings/IntelAcademic_IoT_09_Arduino_Motor_Shield.pdf<br />
* [[Gas Sensors]]<br />
* [[DHT11/DHT21/DHT22 etc. Temperature & Humidity sensors]]<br />
* [[SCL3711]] NFC Reader --> voir [[NFCpy]]<br />
* [[Capteur de pression BMP085]]<br />
* [[High Sensitivity Alarm Vibration Sensor Module]]<br />
* [[PIR Motion Sensor]]<br />
* [[BMP085 Pressure Sensor]]<br />
* [[CC2541 SensorTag Development Kit]]<br />
* [[Socket.io]]<br />
* [[STM32 Nucleo]]<br />
** Shield BlueNRG<br />
* 2 Shields [[LoRa]] pour Arduino ([http://www.labfab.fr/portfolio/lora-fabian/ LoRaFabian]) à brancher sur Galileo et STM32 Nucleo.<br />
** Il faut porter les sketchs Arduino https://github.com/Wi6labs/lorafabian/tree/master/ARDUINO_SKETCH via MBed et Galileo.<br />
<br />
==Visualisation==<br />
* [https://github.com/PaulLabat/mqtt-panel MQTT Panel]<br />
* MQTT over Websocket<br />
** https://www.npmjs.org/package/mqtt-ws<br />
** http://mqtt.org/wiki/doku.php/mqtt_over_websockets<br />
* [[Leaflet.js]] modern open-source JavaScript library for mobile-friendly interactive maps<br />
* [[Morris.js]] Charts in Javascript<br />
* [[Grafana]]<br />
* [[Graphite]]<br />
* [[Ganglia]]<br />
<br />
==Stockage==<br />
* [[InfluxDB]]<br />
* [[MongoDB]]<br />
<br />
==Liens==<br />
* [[Intel Galileo]]<br />
* http://wiki.eclipse.org/Eclipse_IoT_Day_Grenoble_2014<br />
* https://github.com/SmartDollHouse<br />
* https://twitter.com/FablabAIR<br />
<br />
==Autres==<br />
* [[IoTSyS]]<br />
* [https://github.com/denschu/home.pi Home.pi]<br />
* [[OM2M]]<br />
* [[Gladys]]<br />
* DEPRECATED : [[MQTT Panel]] avec [http://code.shutterstock.com/rickshaw/examples/ rickshaw]<br />
* [https://github.com/SmartDollHouse Dépôt GitHub]<br />
* [http://www.oezratty.net/wordpress/2016/rapport-ces-2016/ Rapport 2016 sur le CES de Olivier Ezratty]<br />
* [[Flot Charts]]<br />
<br />
==Galerie 2016==<br />
<br />
==Galerie 2015==<br />
<br />
==Galerie 2014==<br />
[[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]]</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M-2016-RDSMining/Suivi&diff=29809PM2M-2016-RDSMining/Suivi2016-04-12T11:20:26Z<p>BIGARD.FLORIAN: </p>
<hr />
<div>'''Collecte et analyse des messages RDS de traffic routier'''<br />
<br />
Etudiants [[PM2M/2016/TP|M2PGI PM2M]]: Etudiants<br />
<br />
<br />
<br />
Dépôt Git : [https://github.com/PM2M2016-A-B/ '''github''']<br />
<br />
Documents : [https://github.com/PM2M2016-A-B/FM-tuner/blob/master/README.md Rapport] - [[Media:Pres.pdf|Transparents]]<br />
<br />
=Contexte=<br />
Projet par binôme (ABHAMON Ronan - BIGARD Florian) dans le cadre de la matière M2M du Master 2 Génie Informatique de l'université Grenoble Alpes (IMAG).<br />
<br />
=Objectif du projet=<br />
<br />
Récupérer des données RDS via un tuner FM et un BeagleBone Black pour les envoyer via un broker à un [[Elastic Search]] hebergé sur un serveur Amazon. Exploiter les données d'[[Elastic Search]] via Kibana afin de faire des statistiques détaillées sur les données envoyées par les différentes stations de radio (Fréquence d'une musique, termes les plus utilisés etc).<br />
<br />
=Matériel utilisé=<br />
* [https://www.sparkfun.com/products/12938 SparkFun FM Tuner Evaluation Board - Si4703]<br />
<br />
=Technologies utilisées=<br />
* [[Mosquitto]]<br />
* [[Kibana]]<br />
* [[Elastic Search]]<br />
<br />
=Langages utilisés=<br />
<br />
* [[Perl]]<br />
* [[C]]<br />
* [[NodeJS]] (ES7)<br />
<br />
=Plan de développement=<br />
<br />
Mettre en place de façon parallèle les deux points suivants.<br />
<br />
==Client==<br />
* Créer un service en C sous forme de serveur sur un BeagleBone permettant à des clients de s'y connecter afin de recevoir des messages de notifications. Ces messages peuvent être des données RDS, le volume du tuner, la station en cours...<br />
* Créer un client en NodeJS qui enverra les informations RDS transmises par le service sur le broker de message du serveur.<br />
* Mettre en lien les deux programmes afin qu'ils parviennent à communiquer ensemble (envoyer des commandes au tuner FM, envoyer les informations RDS sur le programme Node...).<br />
<br />
==Serveur==<br />
* Installer le broker de message ([[mosquitto]]).<br />
* Paramétrer le pare-feu Amazon afin de pouvoir contacter le broker de message tout en gardant un minimum de sécurité.<br />
* Installer [[Elastic Search]] et paramétrer l'index avec le mapping qui va bien pour pouvoir exploiter correctement les données.<br />
* Installer [[Kibana]] et créer les graphes mettant en valeur les données RDS.<br />
* Créer le script Perl qui insèrera les données du broker de message dans [[Elastic Search]] (tout en profitant de les rendre un petit peu plus propres en nettoyant les blancs...).<br />
<br />
=Expérimentations et Résultats=<br />
<br />
==Fréquence des messages RDS==<br />
[[File:Frequence_abhamon_bigard.png]]<br />
<br />
==Répartition des messages RDS sans la période de nuit==<br />
[[File:Camembert_min_abhamon_bigard.png]]<br />
<br />
==Répartition des messages RDS avec la période de nuit==<br />
[[File:Camembert_all_abhamon_bigard.png]]<br />
<br />
=Photos et Vidéo=</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M-2016-RDSMining/Suivi&diff=29807PM2M-2016-RDSMining/Suivi2016-04-12T11:19:16Z<p>BIGARD.FLORIAN: </p>
<hr />
<div>'''Collecte et analyse des messages RDS de traffic routier'''<br />
<br />
Etudiants [[PM2M/2016/TP|M2PGI PM2M]]: Etudiants<br />
<br />
<br />
<br />
Dépôt Git : [https://github.com/PM2M2016-A-B/ '''github''']<br />
<br />
Documents : [https://github.com/PM2M2016-A-B/FM-tuner Rapport] - [[Media:Pres.pdf|Transparents]]<br />
<br />
=Contexte=<br />
Projet par binôme (ABHAMON Ronan - BIGARD Florian) dans le cadre de la matière M2M du Master 2 Génie Informatique de l'université Grenoble Alpes (IMAG).<br />
<br />
=Objectif du projet=<br />
<br />
Récupérer des données RDS via un tuner FM et un BeagleBone Black pour les envoyer via un broker à un [[Elastic Search]] hebergé sur un serveur Amazon. Exploiter les données d'[[Elastic Search]] via Kibana afin de faire des statistiques détaillées sur les données envoyées par les différentes stations de radio (Fréquence d'une musique, termes les plus utilisés etc).<br />
<br />
=Matériel utilisé=<br />
* [https://www.sparkfun.com/products/12938 SparkFun FM Tuner Evaluation Board - Si4703]<br />
<br />
=Technologies utilisées=<br />
* [[Mosquitto]]<br />
* [[Kibana]]<br />
* [[Elastic Search]]<br />
<br />
=Langages utilisés=<br />
<br />
* [[Perl]]<br />
* [[C]]<br />
* [[NodeJS]] (ES7)<br />
<br />
=Plan de développement=<br />
<br />
Mettre en place de façon parallèle les deux points suivants.<br />
<br />
==Client==<br />
* Créer un service en C sous forme de serveur sur un BeagleBone permettant à des clients de s'y connecter afin de recevoir des messages de notifications. Ces messages peuvent être des données RDS, le volume du tuner, la station en cours...<br />
* Créer un client en NodeJS qui enverra les informations RDS transmises par le service sur le broker de message du serveur.<br />
* Mettre en lien les deux programmes afin qu'ils parviennent à communiquer ensemble (envoyer des commandes au tuner FM, envoyer les informations RDS sur le programme Node...).<br />
<br />
==Serveur==<br />
* Installer le broker de message ([[mosquitto]]).<br />
* Paramétrer le pare-feu Amazon afin de pouvoir contacter le broker de message tout en gardant un minimum de sécurité.<br />
* Installer [[Elastic Search]] et paramétrer l'index avec le mapping qui va bien pour pouvoir exploiter correctement les données.<br />
* Installer [[Kibana]] et créer les graphes mettant en valeur les données RDS.<br />
* Créer le script Perl qui insèrera les données du broker de message dans [[Elastic Search]] (tout en profitant de les rendre un petit peu plus propres en nettoyant les blancs...).<br />
<br />
=Expérimentations et Résultats=<br />
<br />
==Fréquence des messages RDS==<br />
[[File:Frequence_abhamon_bigard.png]]<br />
<br />
==Répartition des messages RDS sans la période de nuit==<br />
[[File:Camembert_min_abhamon_bigard.png]]<br />
<br />
==Répartition des messages RDS avec la période de nuit==<br />
[[File:Camembert_all_abhamon_bigard.png]]<br />
<br />
=Photos et Vidéo=</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=File:Pres.pdf&diff=29805File:Pres.pdf2016-04-12T11:18:10Z<p>BIGARD.FLORIAN: BIGARD.FLORIAN uploaded a new version of &quot;File:Pres.pdf&quot;</p>
<hr />
<div></div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M-2016-RDSMining/Suivi&diff=29287PM2M-2016-RDSMining/Suivi2016-04-08T13:20:43Z<p>BIGARD.FLORIAN: /* Expérimentations et Résultats */</p>
<hr />
<div>'''Collecte et analyse des messages RDS de traffic routier'''<br />
<br />
Etudiants [[PM2M/2016/TP|M2PGI PM2M]]: Etudiants<br />
<br />
<br />
<br />
Dépôt Git : [https://github.com/PM2M2016-A-B/ '''github''']<br />
<br />
Documents : [[Media:PM2M-2016-RDSMining.pdf|Rapport]] - [[Media:Pres_abhamon_bigard.pdf|Transparents]] - [[Media:PM2M-2016-RDSMining-flyer.pdf|Flyer]] - Video<br />
<br />
<br />
=Contexte=<br />
Projet par binôme (ABHAMON Ronan - BIGARD Florianà dans le cadre de la matière M2M du Master 2 Génie Informatique de l'université Grenoble Alpes (IMAG).<br />
<br />
=Objectif du projet=<br />
<br />
Récupérer les données RDS via un tuner FM et un BeagleBone pour les envoyer via un broker de messages dans un [[Elastic Search]] hebergé sur un serveur Amazon. Exploiter les données d'[[Elastic Search]] via Kibana afin de faire des statistiques détaillées sur les données envoyés par les différentes stations de radio (fréquence d'une musique, terme les plus utilisés etc).<br />
<br />
=Matériel utilisé=<br />
* [https://www.sparkfun.com/products/12938 SparkFun FM Tuner Evaluation Board - Si4703]<br />
<br />
=Technologies utilisées=<br />
* [[Mosquitto]]<br />
* [[Kibana]]<br />
* [[Elastic Search]]<br />
<br />
=Langages utilisés=<br />
<br />
* [[Perl]]<br />
* [[C]]<br />
* [[NodeJS]] (ES7)<br />
<br />
=Plan de développement=<br />
<br />
Mettre en place de façon parallèle les deux points suivants.<br />
<br />
==Client==<br />
* Créer le programme en C de récupération des données parvenant du tuner FM<br />
* Créer le script en NodeJS qui enverra les informations RDS sur le broker de message du serveur<br />
* Mettre en lien les deux programmes afin qu'ils parviennent à communiquer ensemble (envoyer des commandes au tuner FM, envoyer les informations RDS sur le programme Node...)<br />
<br />
<br />
==Serveur==<br />
* Installer le broker de message ([[mosquitto]])<br />
* Paramétrer le pare-feu Amazon afin de pouvoir contacter le broker de message tout en gardant un minimum de sécurité<br />
* Installer [[Elastic Search]] et paramétrer l'index avec le mapping qui va bien pour pouvoir exploiter correctement les données<br />
* Installer [[Kibana]] et créer les graphes mettant en valeur les données RDS<br />
* Créer le script Perl qui insèrera les données du broker de message dans [[Elastic Search]] (tout en profitant de les rendre un petit peu plus propres en nettoyant les espaces blancs...)<br />
<br />
=Expérimentations et Résultats=<br />
<br />
==Fréquence des messages RDS==<br />
[[File:Frequence_abhamon_bigard.png]]<br />
<br />
==Répartition des messages RDS sans la période de nuit==<br />
[[File:Camembert_min_abhamon_bigard.png]]<br />
<br />
==Répartition des messages RDS avec la période de nuit==<br />
[[File:Camembert_all_abhamon_bigard.png]]<br />
<br />
=Photos et Vidéo=</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=File:Frequence_abhamon_bigard.png&diff=29286File:Frequence abhamon bigard.png2016-04-08T13:17:40Z<p>BIGARD.FLORIAN: </p>
<hr />
<div></div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=File:Camembert_min_abhamon_bigard.png&diff=29285File:Camembert min abhamon bigard.png2016-04-08T13:17:30Z<p>BIGARD.FLORIAN: </p>
<hr />
<div></div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=File:Camembert_all_abhamon_bigard.png&diff=29284File:Camembert all abhamon bigard.png2016-04-08T13:17:14Z<p>BIGARD.FLORIAN: </p>
<hr />
<div></div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M-2016-RDSMining/Suivi&diff=29283PM2M-2016-RDSMining/Suivi2016-04-08T13:14:10Z<p>BIGARD.FLORIAN: /* Serveur */</p>
<hr />
<div>'''Collecte et analyse des messages RDS de traffic routier'''<br />
<br />
Etudiants [[PM2M/2016/TP|M2PGI PM2M]]: Etudiants<br />
<br />
<br />
<br />
Dépôt Git : [https://github.com/PM2M2016-A-B/ '''github''']<br />
<br />
Documents : [[Media:PM2M-2016-RDSMining.pdf|Rapport]] - [[Media:Pres_abhamon_bigard.pdf|Transparents]] - [[Media:PM2M-2016-RDSMining-flyer.pdf|Flyer]] - Video<br />
<br />
<br />
=Contexte=<br />
Projet par binôme (ABHAMON Ronan - BIGARD Florianà dans le cadre de la matière M2M du Master 2 Génie Informatique de l'université Grenoble Alpes (IMAG).<br />
<br />
=Objectif du projet=<br />
<br />
Récupérer les données RDS via un tuner FM et un BeagleBone pour les envoyer via un broker de messages dans un [[Elastic Search]] hebergé sur un serveur Amazon. Exploiter les données d'[[Elastic Search]] via Kibana afin de faire des statistiques détaillées sur les données envoyés par les différentes stations de radio (fréquence d'une musique, terme les plus utilisés etc).<br />
<br />
=Matériel utilisé=<br />
* [https://www.sparkfun.com/products/12938 SparkFun FM Tuner Evaluation Board - Si4703]<br />
<br />
=Technologies utilisées=<br />
* [[Mosquitto]]<br />
* [[Kibana]]<br />
* [[Elastic Search]]<br />
<br />
=Langages utilisés=<br />
<br />
* [[Perl]]<br />
* [[C]]<br />
* [[NodeJS]] (ES7)<br />
<br />
=Plan de développement=<br />
<br />
Mettre en place de façon parallèle les deux points suivants.<br />
<br />
==Client==<br />
* Créer le programme en C de récupération des données parvenant du tuner FM<br />
* Créer le script en NodeJS qui enverra les informations RDS sur le broker de message du serveur<br />
* Mettre en lien les deux programmes afin qu'ils parviennent à communiquer ensemble (envoyer des commandes au tuner FM, envoyer les informations RDS sur le programme Node...)<br />
<br />
<br />
==Serveur==<br />
* Installer le broker de message ([[mosquitto]])<br />
* Paramétrer le pare-feu Amazon afin de pouvoir contacter le broker de message tout en gardant un minimum de sécurité<br />
* Installer [[Elastic Search]] et paramétrer l'index avec le mapping qui va bien pour pouvoir exploiter correctement les données<br />
* Installer [[Kibana]] et créer les graphes mettant en valeur les données RDS<br />
* Créer le script Perl qui insèrera les données du broker de message dans [[Elastic Search]] (tout en profitant de les rendre un petit peu plus propres en nettoyant les espaces blancs...)<br />
<br />
=Expérimentations et Résultats=<br />
<br />
=Photos et Vidéo=</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M-2016-RDSMining/Suivi&diff=29282PM2M-2016-RDSMining/Suivi2016-04-08T13:13:37Z<p>BIGARD.FLORIAN: /* Plan de développement */</p>
<hr />
<div>'''Collecte et analyse des messages RDS de traffic routier'''<br />
<br />
Etudiants [[PM2M/2016/TP|M2PGI PM2M]]: Etudiants<br />
<br />
<br />
<br />
Dépôt Git : [https://github.com/PM2M2016-A-B/ '''github''']<br />
<br />
Documents : [[Media:PM2M-2016-RDSMining.pdf|Rapport]] - [[Media:Pres_abhamon_bigard.pdf|Transparents]] - [[Media:PM2M-2016-RDSMining-flyer.pdf|Flyer]] - Video<br />
<br />
<br />
=Contexte=<br />
Projet par binôme (ABHAMON Ronan - BIGARD Florianà dans le cadre de la matière M2M du Master 2 Génie Informatique de l'université Grenoble Alpes (IMAG).<br />
<br />
=Objectif du projet=<br />
<br />
Récupérer les données RDS via un tuner FM et un BeagleBone pour les envoyer via un broker de messages dans un [[Elastic Search]] hebergé sur un serveur Amazon. Exploiter les données d'[[Elastic Search]] via Kibana afin de faire des statistiques détaillées sur les données envoyés par les différentes stations de radio (fréquence d'une musique, terme les plus utilisés etc).<br />
<br />
=Matériel utilisé=<br />
* [https://www.sparkfun.com/products/12938 SparkFun FM Tuner Evaluation Board - Si4703]<br />
<br />
=Technologies utilisées=<br />
* [[Mosquitto]]<br />
* [[Kibana]]<br />
* [[Elastic Search]]<br />
<br />
=Langages utilisés=<br />
<br />
* [[Perl]]<br />
* [[C]]<br />
* [[NodeJS]] (ES7)<br />
<br />
=Plan de développement=<br />
<br />
Mettre en place de façon parallèle les deux points suivants.<br />
<br />
==Client==<br />
* Créer le programme en C de récupération des données parvenant du tuner FM<br />
* Créer le script en NodeJS qui enverra les informations RDS sur le broker de message du serveur<br />
* Mettre en lien les deux programmes afin qu'ils parviennent à communiquer ensemble (envoyer des commandes au tuner FM, envoyer les informations RDS sur le programme Node...)<br />
<br />
<br />
==Serveur==<br />
* Installer le broker de message (mosquitto)<br />
* Paramétrer le pare-feu Amazon afin de pouvoir contacter le broker de message tout en gardant un minimum de sécurité<br />
* Installer [[ElasticSearch]] et paramétrer l'index avec le mapping qui va bien pour pouvoir exploiter correctement les données<br />
* Installer [[Kibana]] et créer les graphes mettant en valeur les données RDS<br />
* Créer le script Perl qui insèrera les données du broker de message dans ElasticSearch (tout en profitant de les rendre un petit peu plus propres en nettoyant les espaces blancs...)<br />
<br />
=Expérimentations et Résultats=<br />
<br />
=Photos et Vidéo=</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M-2016-RDSMining/Suivi&diff=29281PM2M-2016-RDSMining/Suivi2016-04-08T13:07:14Z<p>BIGARD.FLORIAN: /* Objectif du projet */</p>
<hr />
<div>'''Collecte et analyse des messages RDS de traffic routier'''<br />
<br />
Etudiants [[PM2M/2016/TP|M2PGI PM2M]]: Etudiants<br />
<br />
<br />
<br />
Dépôt Git : [https://github.com/PM2M2016-A-B/ '''github''']<br />
<br />
Documents : [[Media:PM2M-2016-RDSMining.pdf|Rapport]] - [[Media:Pres_abhamon_bigard.pdf|Transparents]] - [[Media:PM2M-2016-RDSMining-flyer.pdf|Flyer]] - Video<br />
<br />
<br />
=Contexte=<br />
Projet par binôme (ABHAMON Ronan - BIGARD Florianà dans le cadre de la matière M2M du Master 2 Génie Informatique de l'université Grenoble Alpes (IMAG).<br />
<br />
=Objectif du projet=<br />
<br />
Récupérer les données RDS via un tuner FM et un BeagleBone pour les envoyer via un broker de messages dans un [[Elastic Search]] hebergé sur un serveur Amazon. Exploiter les données d'[[Elastic Search]] via Kibana afin de faire des statistiques détaillées sur les données envoyés par les différentes stations de radio (fréquence d'une musique, terme les plus utilisés etc).<br />
<br />
=Matériel utilisé=<br />
* [https://www.sparkfun.com/products/12938 SparkFun FM Tuner Evaluation Board - Si4703]<br />
<br />
=Technologies utilisées=<br />
* [[Mosquitto]]<br />
* [[Kibana]]<br />
* [[Elastic Search]]<br />
<br />
=Langages utilisés=<br />
<br />
* [[Perl]]<br />
* [[C]]<br />
* [[NodeJS]] (ES7)<br />
<br />
=Plan de développement=<br />
<br />
==Mise en place de l'infrastructure==<br />
<br />
=Expérimentations et Résultats=<br />
<br />
=Photos et Vidéo=</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M-2016-RDSMining/Suivi&diff=29280PM2M-2016-RDSMining/Suivi2016-04-08T13:06:34Z<p>BIGARD.FLORIAN: /* Contexte */</p>
<hr />
<div>'''Collecte et analyse des messages RDS de traffic routier'''<br />
<br />
Etudiants [[PM2M/2016/TP|M2PGI PM2M]]: Etudiants<br />
<br />
<br />
<br />
Dépôt Git : [https://github.com/PM2M2016-A-B/ '''github''']<br />
<br />
Documents : [[Media:PM2M-2016-RDSMining.pdf|Rapport]] - [[Media:Pres_abhamon_bigard.pdf|Transparents]] - [[Media:PM2M-2016-RDSMining-flyer.pdf|Flyer]] - Video<br />
<br />
<br />
=Contexte=<br />
Projet par binôme (ABHAMON Ronan - BIGARD Florianà dans le cadre de la matière M2M du Master 2 Génie Informatique de l'université Grenoble Alpes (IMAG).<br />
<br />
=Objectif du projet=<br />
<br />
Récupérer les données RDS via un tuner FM et un BeagleBone pour les envoyer via un broker de messages dans un Elastic Search hebergé sur un serveur Amazon. Exploiter les données d'ElasticSearch via Kibana afin de faire des statistiques détaillées sur les données envoyés par les différentes stations de radio (fréquence d'une musique, terme les plus utilisés etc).<br />
<br />
=Matériel utilisé=<br />
* [https://www.sparkfun.com/products/12938 SparkFun FM Tuner Evaluation Board - Si4703]<br />
<br />
=Technologies utilisées=<br />
* [[Mosquitto]]<br />
* [[Kibana]]<br />
* [[Elastic Search]]<br />
<br />
=Langages utilisés=<br />
<br />
* [[Perl]]<br />
* [[C]]<br />
* [[NodeJS]] (ES7)<br />
<br />
=Plan de développement=<br />
<br />
==Mise en place de l'infrastructure==<br />
<br />
=Expérimentations et Résultats=<br />
<br />
=Photos et Vidéo=</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M-2016-RDSMining/Suivi&diff=29279PM2M-2016-RDSMining/Suivi2016-04-08T13:05:34Z<p>BIGARD.FLORIAN: /* Objectif du projet */</p>
<hr />
<div>'''Collecte et analyse des messages RDS de traffic routier'''<br />
<br />
Etudiants [[PM2M/2016/TP|M2PGI PM2M]]: Etudiants<br />
<br />
<br />
<br />
Dépôt Git : [https://github.com/PM2M2016-A-B/ '''github''']<br />
<br />
Documents : [[Media:PM2M-2016-RDSMining.pdf|Rapport]] - [[Media:Pres_abhamon_bigard.pdf|Transparents]] - [[Media:PM2M-2016-RDSMining-flyer.pdf|Flyer]] - Video<br />
<br />
<br />
=Contexte=<br />
<br />
Projet par binôme pour la matière M2M du M2P de l'université Grenoble Alpes.<br />
<br />
=Objectif du projet=<br />
<br />
Récupérer les données RDS via un tuner FM et un BeagleBone pour les envoyer via un broker de messages dans un Elastic Search hebergé sur un serveur Amazon. Exploiter les données d'ElasticSearch via Kibana afin de faire des statistiques détaillées sur les données envoyés par les différentes stations de radio (fréquence d'une musique, terme les plus utilisés etc).<br />
<br />
=Matériel utilisé=<br />
* [https://www.sparkfun.com/products/12938 SparkFun FM Tuner Evaluation Board - Si4703]<br />
<br />
=Technologies utilisées=<br />
* [[Mosquitto]]<br />
* [[Kibana]]<br />
* [[Elastic Search]]<br />
<br />
=Langages utilisés=<br />
<br />
* [[Perl]]<br />
* [[C]]<br />
* [[NodeJS]] (ES7)<br />
<br />
=Plan de développement=<br />
<br />
==Mise en place de l'infrastructure==<br />
<br />
=Expérimentations et Résultats=<br />
<br />
=Photos et Vidéo=</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M-2016-RDSMining/Suivi&diff=29278PM2M-2016-RDSMining/Suivi2016-04-08T13:02:56Z<p>BIGARD.FLORIAN: /* Contexte */</p>
<hr />
<div>'''Collecte et analyse des messages RDS de traffic routier'''<br />
<br />
Etudiants [[PM2M/2016/TP|M2PGI PM2M]]: Etudiants<br />
<br />
<br />
<br />
Dépôt Git : [https://github.com/PM2M2016-A-B/ '''github''']<br />
<br />
Documents : [[Media:PM2M-2016-RDSMining.pdf|Rapport]] - [[Media:Pres_abhamon_bigard.pdf|Transparents]] - [[Media:PM2M-2016-RDSMining-flyer.pdf|Flyer]] - Video<br />
<br />
<br />
=Contexte=<br />
<br />
Projet par binôme pour la matière M2M du M2P de l'université Grenoble Alpes.<br />
<br />
=Objectif du projet=<br />
<br />
<br />
=Matériel utilisé=<br />
* [https://www.sparkfun.com/products/12938 SparkFun FM Tuner Evaluation Board - Si4703]<br />
<br />
=Technologies utilisées=<br />
* [[Mosquitto]]<br />
* [[Kibana]]<br />
* [[Elastic Search]]<br />
<br />
=Langages utilisés=<br />
<br />
* [[Perl]]<br />
* [[C]]<br />
* [[NodeJS]] (ES7)<br />
<br />
=Plan de développement=<br />
<br />
==Mise en place de l'infrastructure==<br />
<br />
=Expérimentations et Résultats=<br />
<br />
=Photos et Vidéo=</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M-2016-RDSMining/Suivi&diff=29277PM2M-2016-RDSMining/Suivi2016-04-08T12:59:44Z<p>BIGARD.FLORIAN: </p>
<hr />
<div>'''Collecte et analyse des messages RDS de traffic routier'''<br />
<br />
Etudiants [[PM2M/2016/TP|M2PGI PM2M]]: Etudiants<br />
<br />
<br />
<br />
Dépôt Git : [https://github.com/PM2M2016-A-B/ '''github''']<br />
<br />
Documents : [[Media:PM2M-2016-RDSMining.pdf|Rapport]] - [[Media:Pres_abhamon_bigard.pdf|Transparents]] - [[Media:PM2M-2016-RDSMining-flyer.pdf|Flyer]] - Video<br />
<br />
<br />
=Contexte=<br />
<br />
=Objectif du projet=<br />
<br />
<br />
=Matériel utilisé=<br />
* [https://www.sparkfun.com/products/12938 SparkFun FM Tuner Evaluation Board - Si4703]<br />
<br />
=Technologies utilisées=<br />
* [[Mosquitto]]<br />
* [[Kibana]]<br />
* [[Elastic Search]]<br />
<br />
=Langages utilisés=<br />
<br />
* [[Perl]]<br />
* [[C]]<br />
* [[NodeJS]] (ES7)<br />
<br />
=Plan de développement=<br />
<br />
==Mise en place de l'infrastructure==<br />
<br />
=Expérimentations et Résultats=<br />
<br />
=Photos et Vidéo=</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=File:Pres_abhamon_bigard.pdf&diff=29276File:Pres abhamon bigard.pdf2016-04-08T12:59:06Z<p>BIGARD.FLORIAN: </p>
<hr />
<div></div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=Apache_Zeppelin&diff=28503Apache Zeppelin2016-04-02T12:11:21Z<p>BIGARD.FLORIAN: /* Utilisation */</p>
<hr />
<div>== Apache Zeppelin (incubating) ==<br />
<br />
=== Synthèse ===<br />
<br />
Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation.<br />
Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache.<br />
<br />
Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.<br />
<br />
[[File:Multiple_language_backend.png]]<br />
<br />
=== Utilisation ===<br />
<br />
Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.<br />
<br />
Une fois que l'on a choisi son interpréteu et à partir du moment où il affiche des données pouvant être formatées dans un tableau, il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :<br />
<br />
[[File:Display table.png]]<br />
<br />
Ou bien de différents interpréteurs :<br />
<br />
%psql.sql<br />
select * from mytable;<br />
<br />
<br />
%elasticsearch<br />
get /index/type/id<br />
<br />
<br />
Les données peuvent ensuite être affichées de manière interactives :<br />
<br />
[[File:Elasticsearch-search-pie.png]]<br />
<br />
Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.<br />
<br />
Il est du coup possible de faire jouer des scripts :<br />
<br />
<pre><br />
val bankText = sc.textFile("yourPath/bank/bank-full.csv")<br />
<br />
case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)<br />
<br />
// split each line, filter out header (starts with "age"), and map it into Bank case class<br />
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(<br />
s=>Bank(s(0).toInt,<br />
s(1).replaceAll("\"", ""),<br />
s(2).replaceAll("\"", ""),<br />
s(3).replaceAll("\"", ""),<br />
s(5).replaceAll("\"", "").toInt<br />
)<br />
)<br />
<br />
// convert to DataFrame and create temporal table<br />
bank.toDF().registerTempTable("bank")<br />
</pre><br />
<br />
Dans cet exemple on parse le CSV pour créer des objets de type Bank.<br />
<br />
Puis on peut y appliquer des requêtes. Par exemple, si on veut avoir la distribution d'âge d'une banque :<br />
<br />
%sql select age, count(1) from bank where age < 30 group by age order by age<br />
<br />
=== Installation ===<br />
<br />
Télécharger le dernier binaire: https://zeppelin.incubator.apache.org/download.html<br />
<br />
Décompresser le tgz puis se déplacer dans le dossier.<br />
<br />
Pour démarrer Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh start<br />
<br />
Si tout s'est bien passé, il suffit d'ensuite visiter http://localhost:8080 dans le navigateur.<br />
<br />
<br />
Pour stopper Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh stop</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=Apache_Zeppelin&diff=28502Apache Zeppelin2016-04-02T12:04:59Z<p>BIGARD.FLORIAN: /* Utilisation */</p>
<hr />
<div>== Apache Zeppelin (incubating) ==<br />
<br />
=== Synthèse ===<br />
<br />
Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation.<br />
Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache.<br />
<br />
Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.<br />
<br />
[[File:Multiple_language_backend.png]]<br />
<br />
=== Utilisation ===<br />
<br />
Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.<br />
<br />
Une fois que l'on a choisi son interpréteu et à partir du moment où il affiche des données pouvant être formatées dans un tableau, il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :<br />
<br />
[[File:Display table.png]]<br />
<br />
Ou bien de différents interpréteurs :<br />
<br />
%psql.sql<br />
select * from mytable;<br />
<br />
<br />
%elasticsearch<br />
get /index/type/id<br />
<br />
<br />
Les données peuvent ensuite être affichées de manière interactives :<br />
<br />
[[File:Elasticsearch-search-pie.png]]<br />
<br />
Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.<br />
<br />
Il est du coup possible de faire jouer des scripts :<br />
<br />
val bankText = sc.textFile("yourPath/bank/bank-full.csv")<br />
<br />
case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)<br />
<br />
// split each line, filter out header (starts with "age"), and map it into Bank case class<br />
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(<br />
s=>Bank(s(0).toInt,<br />
s(1).replaceAll("\"", ""),<br />
s(2).replaceAll("\"", ""),<br />
s(3).replaceAll("\"", ""),<br />
s(5).replaceAll("\"", "").toInt<br />
)<br />
)<br />
<br />
// convert to DataFrame and create temporal table<br />
bank.toDF().registerTempTable("bank")<br />
<br />
Dans ce exemple on parse le CSV pour créer des objets de type Bank.<br />
<br />
Puis d'appliquer des requêtes dessus comme par exemple, si on veut avoir la distribution d'age d'une banque :<br />
<br />
%sql select age, count(1) from bank where age < 30 group by age order by age<br />
<br />
=== Installation ===<br />
<br />
Télécharger le dernier binaire: https://zeppelin.incubator.apache.org/download.html<br />
<br />
Décompresser le tgz puis se déplacer dans le dossier.<br />
<br />
Pour démarrer Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh start<br />
<br />
Si tout s'est bien passé, il suffit d'ensuite visiter http://localhost:8080 dans le navigateur.<br />
<br />
<br />
Pour stopper Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh stop</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=Apache_Zeppelin&diff=28501Apache Zeppelin2016-04-02T12:03:17Z<p>BIGARD.FLORIAN: /* Synthèse */</p>
<hr />
<div>== Apache Zeppelin (incubating) ==<br />
<br />
=== Synthèse ===<br />
<br />
Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation.<br />
Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache.<br />
<br />
Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.<br />
<br />
[[File:Multiple_language_backend.png]]<br />
<br />
=== Utilisation ===<br />
<br />
Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.<br />
<br />
Une fois que l'on choisit son interpréteur, à partir du moment où il affiche des données pouvant être formatées dans un tableau il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :<br />
<br />
[[File:Display table.png]]<br />
<br />
Ou bien de différents interpréteurs :<br />
<br />
%psql.sql<br />
select * from mytable;<br />
<br />
<br />
%elasticsearch<br />
get /index/type/id<br />
<br />
<br />
Les données peuvent ensuite être affichées de manière interactives :<br />
<br />
[[File:Elasticsearch-search-pie.png]]<br />
<br />
Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.<br />
<br />
Il est du coup possible de faire jouer des scripts :<br />
<br />
val bankText = sc.textFile("yourPath/bank/bank-full.csv")<br />
<br />
case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)<br />
<br />
// split each line, filter out header (starts with "age"), and map it into Bank case class<br />
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(<br />
s=>Bank(s(0).toInt,<br />
s(1).replaceAll("\"", ""),<br />
s(2).replaceAll("\"", ""),<br />
s(3).replaceAll("\"", ""),<br />
s(5).replaceAll("\"", "").toInt<br />
)<br />
)<br />
<br />
// convert to DataFrame and create temporal table<br />
bank.toDF().registerTempTable("bank")<br />
<br />
Dans ce exemple on parse le CSV pour créer des objets de type Bank.<br />
<br />
Puis d'appliquer des requêtes dessus comme par exemple, si on veut avoir la distribution d'age d'une banque :<br />
<br />
%sql select age, count(1) from bank where age < 30 group by age order by age<br />
<br />
=== Installation ===<br />
<br />
Télécharger le dernier binaire: https://zeppelin.incubator.apache.org/download.html<br />
<br />
Décompresser le tgz puis se déplacer dans le dossier.<br />
<br />
Pour démarrer Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh start<br />
<br />
Si tout s'est bien passé, il suffit d'ensuite visiter http://localhost:8080 dans le navigateur.<br />
<br />
<br />
Pour stopper Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh stop</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=Apache_Zeppelin&diff=28500Apache Zeppelin2016-04-02T12:02:58Z<p>BIGARD.FLORIAN: /* Utilisation */</p>
<hr />
<div>== Apache Zeppelin (incubating) ==<br />
<br />
=== Synthèse ===<br />
<br />
Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation.<br />
Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache<br />
<br />
Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.<br />
<br />
[[File:Multiple_language_backend.png]]<br />
<br />
=== Utilisation ===<br />
<br />
Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.<br />
<br />
Une fois que l'on choisit son interpréteur, à partir du moment où il affiche des données pouvant être formatées dans un tableau il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :<br />
<br />
[[File:Display table.png]]<br />
<br />
Ou bien de différents interpréteurs :<br />
<br />
%psql.sql<br />
select * from mytable;<br />
<br />
<br />
%elasticsearch<br />
get /index/type/id<br />
<br />
<br />
Les données peuvent ensuite être affichées de manière interactives :<br />
<br />
[[File:Elasticsearch-search-pie.png]]<br />
<br />
Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.<br />
<br />
Il est du coup possible de faire jouer des scripts :<br />
<br />
val bankText = sc.textFile("yourPath/bank/bank-full.csv")<br />
<br />
case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)<br />
<br />
// split each line, filter out header (starts with "age"), and map it into Bank case class<br />
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(<br />
s=>Bank(s(0).toInt,<br />
s(1).replaceAll("\"", ""),<br />
s(2).replaceAll("\"", ""),<br />
s(3).replaceAll("\"", ""),<br />
s(5).replaceAll("\"", "").toInt<br />
)<br />
)<br />
<br />
// convert to DataFrame and create temporal table<br />
bank.toDF().registerTempTable("bank")<br />
<br />
Dans ce exemple on parse le CSV pour créer des objets de type Bank.<br />
<br />
Puis d'appliquer des requêtes dessus comme par exemple, si on veut avoir la distribution d'age d'une banque :<br />
<br />
%sql select age, count(1) from bank where age < 30 group by age order by age<br />
<br />
=== Installation ===<br />
<br />
Télécharger le dernier binaire: https://zeppelin.incubator.apache.org/download.html<br />
<br />
Décompresser le tgz puis se déplacer dans le dossier.<br />
<br />
Pour démarrer Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh start<br />
<br />
Si tout s'est bien passé, il suffit d'ensuite visiter http://localhost:8080 dans le navigateur.<br />
<br />
<br />
Pour stopper Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh stop</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=Apache_Zeppelin&diff=28499Apache Zeppelin2016-04-02T12:02:16Z<p>BIGARD.FLORIAN: /* Utilisation */</p>
<hr />
<div>== Apache Zeppelin (incubating) ==<br />
<br />
=== Synthèse ===<br />
<br />
Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation.<br />
Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache<br />
<br />
Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.<br />
<br />
[[File:Multiple_language_backend.png]]<br />
<br />
=== Utilisation ===<br />
<br />
Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.<br />
<br />
Une fois que l'on choisit son interpréteur, à partir du moment où il affiche des données pouvant être formatées dans un tableau il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :<br />
https://zeppelin.incubator.apache.org/assets/themes/zeppelin/img/screenshots/display_table.png<br />
<br />
Ou bien de différents interpréteurs :<br />
<br />
%psql.sql<br />
select * from mytable;<br />
<br />
<br />
%elasticsearch<br />
get /index/type/id<br />
<br />
<br />
Les données peuvent ensuite être affichées de manière interactives :<br />
<br />
[[File:Elasticsearch-search-pie.png]]<br />
<br />
Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.<br />
<br />
Il est du coup possible de faire jouer des scripts :<br />
<br />
val bankText = sc.textFile("yourPath/bank/bank-full.csv")<br />
<br />
case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)<br />
<br />
// split each line, filter out header (starts with "age"), and map it into Bank case class<br />
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(<br />
s=>Bank(s(0).toInt,<br />
s(1).replaceAll("\"", ""),<br />
s(2).replaceAll("\"", ""),<br />
s(3).replaceAll("\"", ""),<br />
s(5).replaceAll("\"", "").toInt<br />
)<br />
)<br />
<br />
// convert to DataFrame and create temporal table<br />
bank.toDF().registerTempTable("bank")<br />
<br />
Dans ce exemple on parse le CSV pour créer des objets de type Bank.<br />
<br />
Puis d'appliquer des requêtes dessus comme par exemple, si on veut avoir la distribution d'age d'une banque :<br />
<br />
%sql select age, count(1) from bank where age < 30 group by age order by age<br />
<br />
=== Installation ===<br />
<br />
Télécharger le dernier binaire: https://zeppelin.incubator.apache.org/download.html<br />
<br />
Décompresser le tgz puis se déplacer dans le dossier.<br />
<br />
Pour démarrer Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh start<br />
<br />
Si tout s'est bien passé, il suffit d'ensuite visiter http://localhost:8080 dans le navigateur.<br />
<br />
<br />
Pour stopper Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh stop</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=Apache_Zeppelin&diff=28498Apache Zeppelin2016-04-02T12:01:44Z<p>BIGARD.FLORIAN: /* Synthèse */</p>
<hr />
<div>== Apache Zeppelin (incubating) ==<br />
<br />
=== Synthèse ===<br />
<br />
Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation.<br />
Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache<br />
<br />
Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.<br />
<br />
[[File:Multiple_language_backend.png]]<br />
<br />
=== Utilisation ===<br />
<br />
Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.<br />
<br />
Une fois que l'on choisit son interpréteur, à partir du moment où il affiche des données pouvant être formatées dans un tableau il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :<br />
https://zeppelin.incubator.apache.org/assets/themes/zeppelin/img/screenshots/display_table.png<br />
<br />
Ou bien de différents interpréteurs :<br />
<br />
%psql.sql<br />
select * from mytable;<br />
<br />
<br />
%elasticsearch<br />
get /index/type/id<br />
<br />
<br />
Les données peuvent ensuite être affichées de manière interactives :<br />
<br />
https://zeppelin.incubator.apache.org/docs/0.5.6-incubating/assets/themes/zeppelin/img/docs-img/elasticsearch-search-pie.png<br />
<br />
Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.<br />
<br />
Il est du coup possible de faire jouer des scripts :<br />
<br />
val bankText = sc.textFile("yourPath/bank/bank-full.csv")<br />
<br />
case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)<br />
<br />
// split each line, filter out header (starts with "age"), and map it into Bank case class<br />
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(<br />
s=>Bank(s(0).toInt,<br />
s(1).replaceAll("\"", ""),<br />
s(2).replaceAll("\"", ""),<br />
s(3).replaceAll("\"", ""),<br />
s(5).replaceAll("\"", "").toInt<br />
)<br />
)<br />
<br />
// convert to DataFrame and create temporal table<br />
bank.toDF().registerTempTable("bank")<br />
<br />
Dans ce exemple on parse le CSV pour créer des objets de type Bank.<br />
<br />
Puis d'appliquer des requêtes dessus comme par exemple, si on veut avoir la distribution d'age d'une banque :<br />
<br />
%sql select age, count(1) from bank where age < 30 group by age order by age<br />
<br />
<br />
<br />
=== Installation ===<br />
<br />
Télécharger le dernier binaire: https://zeppelin.incubator.apache.org/download.html<br />
<br />
Décompresser le tgz puis se déplacer dans le dossier.<br />
<br />
Pour démarrer Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh start<br />
<br />
Si tout s'est bien passé, il suffit d'ensuite visiter http://localhost:8080 dans le navigateur.<br />
<br />
<br />
Pour stopper Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh stop</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=File:Multiple_language_backend.png&diff=28497File:Multiple language backend.png2016-04-02T12:01:08Z<p>BIGARD.FLORIAN: Apache Zeppelin multiple language backend</p>
<hr />
<div>Apache Zeppelin multiple language backend</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=File:Elasticsearch-search-pie.png&diff=28496File:Elasticsearch-search-pie.png2016-04-02T12:00:55Z<p>BIGARD.FLORIAN: Apache Zeppelin elasticsearch search pie</p>
<hr />
<div>Apache Zeppelin elasticsearch search pie</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=File:Display_table.png&diff=28495File:Display table.png2016-04-02T12:00:34Z<p>BIGARD.FLORIAN: Apache Zeppelin display table</p>
<hr />
<div>Apache Zeppelin display table</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=Apache_Zeppelin&diff=28494Apache Zeppelin2016-04-02T11:58:09Z<p>BIGARD.FLORIAN: /* Installation */</p>
<hr />
<div>== Apache Zeppelin (incubating) ==<br />
<br />
=== Synthèse ===<br />
<br />
Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation.<br />
Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache<br />
<br />
Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.<br />
<br />
https://zeppelin.incubator.apache.org/assets/themes/zeppelin/img/screenshots/multiple_language_backend.png<br />
<br />
<br />
<br />
=== Utilisation ===<br />
<br />
Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.<br />
<br />
Une fois que l'on choisit son interpréteur, à partir du moment où il affiche des données pouvant être formatées dans un tableau il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :<br />
https://zeppelin.incubator.apache.org/assets/themes/zeppelin/img/screenshots/display_table.png<br />
<br />
Ou bien de différents interpréteurs :<br />
<br />
%psql.sql<br />
select * from mytable;<br />
<br />
<br />
%elasticsearch<br />
get /index/type/id<br />
<br />
<br />
Les données peuvent ensuite être affichées de manière interactives :<br />
<br />
https://zeppelin.incubator.apache.org/docs/0.5.6-incubating/assets/themes/zeppelin/img/docs-img/elasticsearch-search-pie.png<br />
<br />
Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.<br />
<br />
Il est du coup possible de faire jouer des scripts :<br />
<br />
val bankText = sc.textFile("yourPath/bank/bank-full.csv")<br />
<br />
case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)<br />
<br />
// split each line, filter out header (starts with "age"), and map it into Bank case class<br />
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(<br />
s=>Bank(s(0).toInt,<br />
s(1).replaceAll("\"", ""),<br />
s(2).replaceAll("\"", ""),<br />
s(3).replaceAll("\"", ""),<br />
s(5).replaceAll("\"", "").toInt<br />
)<br />
)<br />
<br />
// convert to DataFrame and create temporal table<br />
bank.toDF().registerTempTable("bank")<br />
<br />
Dans ce exemple on parse le CSV pour créer des objets de type Bank.<br />
<br />
Puis d'appliquer des requêtes dessus comme par exemple, si on veut avoir la distribution d'age d'une banque :<br />
<br />
%sql select age, count(1) from bank where age < 30 group by age order by age<br />
<br />
<br />
<br />
=== Installation ===<br />
<br />
Télécharger le dernier binaire: https://zeppelin.incubator.apache.org/download.html<br />
<br />
Décompresser le tgz puis se déplacer dans le dossier.<br />
<br />
Pour démarrer Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh start<br />
<br />
Si tout s'est bien passé, il suffit d'ensuite visiter http://localhost:8080 dans le navigateur.<br />
<br />
<br />
Pour stopper Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh stop</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=Apache_Zeppelin&diff=28493Apache Zeppelin2016-04-02T11:56:34Z<p>BIGARD.FLORIAN: /* Installation */</p>
<hr />
<div>== Apache Zeppelin (incubating) ==<br />
<br />
=== Synthèse ===<br />
<br />
Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation.<br />
Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache<br />
<br />
Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.<br />
<br />
https://zeppelin.incubator.apache.org/assets/themes/zeppelin/img/screenshots/multiple_language_backend.png<br />
<br />
<br />
<br />
=== Utilisation ===<br />
<br />
Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.<br />
<br />
Une fois que l'on choisit son interpréteur, à partir du moment où il affiche des données pouvant être formatées dans un tableau il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :<br />
https://zeppelin.incubator.apache.org/assets/themes/zeppelin/img/screenshots/display_table.png<br />
<br />
Ou bien de différents interpréteurs :<br />
<br />
%psql.sql<br />
select * from mytable;<br />
<br />
<br />
%elasticsearch<br />
get /index/type/id<br />
<br />
<br />
Les données peuvent ensuite être affichées de manière interactives :<br />
<br />
https://zeppelin.incubator.apache.org/docs/0.5.6-incubating/assets/themes/zeppelin/img/docs-img/elasticsearch-search-pie.png<br />
<br />
Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.<br />
<br />
Il est du coup possible de faire jouer des scripts :<br />
<br />
val bankText = sc.textFile("yourPath/bank/bank-full.csv")<br />
<br />
case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)<br />
<br />
// split each line, filter out header (starts with "age"), and map it into Bank case class<br />
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(<br />
s=>Bank(s(0).toInt,<br />
s(1).replaceAll("\"", ""),<br />
s(2).replaceAll("\"", ""),<br />
s(3).replaceAll("\"", ""),<br />
s(5).replaceAll("\"", "").toInt<br />
)<br />
)<br />
<br />
// convert to DataFrame and create temporal table<br />
bank.toDF().registerTempTable("bank")<br />
<br />
Dans ce exemple on parse le CSV pour créer des objets de type Bank.<br />
<br />
Puis d'appliquer des requêtes dessus comme par exemple, si on veut avoir la distribution d'age d'une banque :<br />
<br />
%sql select age, count(1) from bank where age < 30 group by age order by age<br />
<br />
<br />
<br />
=== Installation ===<br />
<br />
Télécharger le dernier binaire: [https://zeppelin.incubator.apache.org/download.html]<br />
<br />
Décompresser le tgz puis se déplacer dans le dossier.<br />
<br />
Pour démarrer Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh start<br />
<br />
Si tout s'est bien passé, il suffit d'ensuite visiter [http://localhost:8080] dans le navigateur.<br />
<br />
<br />
Pour stopper Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh stop</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=Apache_Zeppelin&diff=28492Apache Zeppelin2016-04-02T11:55:58Z<p>BIGARD.FLORIAN: /* Utilisation */</p>
<hr />
<div>== Apache Zeppelin (incubating) ==<br />
<br />
=== Synthèse ===<br />
<br />
Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation.<br />
Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache<br />
<br />
Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.<br />
<br />
https://zeppelin.incubator.apache.org/assets/themes/zeppelin/img/screenshots/multiple_language_backend.png<br />
<br />
<br />
<br />
=== Utilisation ===<br />
<br />
Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.<br />
<br />
Une fois que l'on choisit son interpréteur, à partir du moment où il affiche des données pouvant être formatées dans un tableau il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :<br />
https://zeppelin.incubator.apache.org/assets/themes/zeppelin/img/screenshots/display_table.png<br />
<br />
Ou bien de différents interpréteurs :<br />
<br />
%psql.sql<br />
select * from mytable;<br />
<br />
<br />
%elasticsearch<br />
get /index/type/id<br />
<br />
<br />
Les données peuvent ensuite être affichées de manière interactives :<br />
<br />
https://zeppelin.incubator.apache.org/docs/0.5.6-incubating/assets/themes/zeppelin/img/docs-img/elasticsearch-search-pie.png<br />
<br />
Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.<br />
<br />
Il est du coup possible de faire jouer des scripts :<br />
<br />
val bankText = sc.textFile("yourPath/bank/bank-full.csv")<br />
<br />
case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)<br />
<br />
// split each line, filter out header (starts with "age"), and map it into Bank case class<br />
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(<br />
s=>Bank(s(0).toInt,<br />
s(1).replaceAll("\"", ""),<br />
s(2).replaceAll("\"", ""),<br />
s(3).replaceAll("\"", ""),<br />
s(5).replaceAll("\"", "").toInt<br />
)<br />
)<br />
<br />
// convert to DataFrame and create temporal table<br />
bank.toDF().registerTempTable("bank")<br />
<br />
Dans ce exemple on parse le CSV pour créer des objets de type Bank.<br />
<br />
Puis d'appliquer des requêtes dessus comme par exemple, si on veut avoir la distribution d'age d'une banque :<br />
<br />
%sql select age, count(1) from bank where age < 30 group by age order by age<br />
<br />
<br />
<br />
=== Installation ===<br />
<br />
Télécharger le dernier binaire: https://zeppelin.incubator.apache.org/download.html<br />
<br />
Décompresser le tgz puis se déplacer dans le dossier.<br />
<br />
Pour démarrer Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh start<br />
<br />
Si tout s'est bien passé, il suffit d'ensuite visiter http://localhost:8080 dans le navigateur.<br />
<br />
<br />
Pour stopper Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh stop</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=Apache_Zeppelin&diff=28491Apache Zeppelin2016-04-02T11:55:39Z<p>BIGARD.FLORIAN: </p>
<hr />
<div>== Apache Zeppelin (incubating) ==<br />
<br />
=== Synthèse ===<br />
<br />
Apache Zeppelin est projet Apache sous licence open-source Apache2. Il est actuellement en incubation.<br />
Pour rappel, l'incubateur Apache est une passerelle de validation pour tout logiciel libre susceptible de devenir un projet à part entière de la fondation Apache<br />
<br />
Le projet fournit une interface web (notebook) qui permet d'analyser et mettre en forme visuellement les données (tableaux, graphes...) selon différents backend appelés interpreteurs.<br />
<br />
https://zeppelin.incubator.apache.org/assets/themes/zeppelin/img/screenshots/multiple_language_backend.png<br />
<br />
<br />
<br />
=== Utilisation ===<br />
<br />
Les interpréteurs sont sous forme de plugins. Il est donc possible d'en ajouter une infinité. On peut par exemple exploiter les données venant de PostgreSQL ou d'ElasticSearch. On spécifie l'interpréteur que l'on choisit en début de ligne.<br />
<br />
Une fois que l'on choisit son interpréteur, à partir du moment où il affiche des données pouvant être formatées dans un tableau il est possible de les mettre en forme dans un graphique. On peut aussi directement afficher des données mises en forme manuellement :<br />
https://zeppelin.incubator.apache.org/assets/themes/zeppelin/img/screenshots/display_table.png<br />
<br />
Ou bien de différents interpréteurs :<br />
<br />
%psql.sql<br />
select * from mytable;<br />
<br />
<br />
%elasticsearch<br />
get /index/type/id<br />
<br />
<br />
Les données peuvent ensuite être affichées de manière interactives :<br />
<br />
https://zeppelin.incubator.apache.org/docs/0.5.6-incubating/assets/themes/zeppelin/img/docs-img/elasticsearch-search-pie.png<br />
<br />
Zeppelin intègre directement Spark qui est un framework open source de calcul distribué directement en mémoire vive.<br />
<br />
Il est du coup possible de faire jouer des scripts :<br />
<br />
val bankText = sc.textFile("yourPath/bank/bank-full.csv")<br />
<br />
case class Bank(age:Integer, job:String, marital : String, education : String, balance : Integer)<br />
<br />
// split each line, filter out header (starts with "age"), and map it into Bank case class<br />
val bank = bankText.map(s=>s.split(";")).filter(s=>s(0)!="\"age\"").map(<br />
s=>Bank(s(0).toInt,<br />
s(1).replaceAll("\"", ""),<br />
s(2).replaceAll("\"", ""),<br />
s(3).replaceAll("\"", ""),<br />
s(5).replaceAll("\"", "").toInt<br />
)<br />
)<br />
<br />
// convert to DataFrame and create temporal table<br />
bank.toDF().registerTempTable("bank")<br />
<br />
Dans ce exemple on parse le CSV pour créer des objets de type Bank.<br />
<br />
Puis d'appliquer des requêtes dessus comme par exemple, si on veut avoir la distribution d'age d'une banque :<br />
<br />
%sql select age, count(1) from bank where age < 30 group by age order by age<br />
<br />
<br />
<br />
# Installation<br />
<br />
Télécharger le dernier binaire: https://zeppelin.incubator.apache.org/download.html<br />
<br />
Décompresser le tgz puis se déplacer dans le dossier.<br />
<br />
Pour démarrer Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh start<br />
<br />
Si tout s'est bien passé, il suffit d'ensuite visiter http://localhost:8080 dans le navigateur.<br />
<br />
<br />
Pour stopper Zeppelin :<br />
<br />
bin/zeppelin-daemon.sh stop</div>BIGARD.FLORIANhttps://air.imag.fr/index.php?title=PM2M/2016/TP&diff=28490PM2M/2016/TP2016-04-02T11:51:09Z<p>BIGARD.FLORIAN: /* Sujets des mini-projets */</p>
<hr />
<div>Page 2016 des supports de cours et travaux pratiques de l'UE [[Projets M2PGI Services Machine-to-Machine]].<br />
<br />
Enseignants 2016 : Didier Donsez, Laurent Lemke<br />
<br />
Partie démarrant le 1er Mars 2016 en F112.<br />
<br />
Soutenance : 12 Avril 2016 de 13H30 à 17H30.<br />
<br />
<br />
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).<br />
<br />
==Support de cours==<br />
* [http://membres-liglab.imag.fr/donsez/pub/publi/intergiciels-iot.pdf Intergiciels pour l'IoT]<br />
* [http://membres-liglab.imag.fr/donsez/cours/openhab.pdf La plateforme OpenHAB]<br />
* [http://membres-liglab.imag.fr/donsez/cours/osgi.pdf La plateforme de services OSGi]<br />
<br />
==Etapes==<br />
* Tutoriel [[OSGi]]<br />
* [[UE_PEIP_L1|Tutoriel Arduino]]<br />
* Installation d'[[OpenHAB]]<br />
** [https://www.dropbox.com/s/9qdsnvtfo3tiaj7/openhab%2Barduino.zip OpenHAB+Arduino]<br />
* Installation de [[Mosquitto]]<br />
** Tutoriel [[MQTT]] : https://docs.google.com/presentation/d/1N9OiMxiVWPbsVrAcPfT-J0k1o7a-neIp7TVFGa6AkWM/edit?pli=1#slide=id.g1d409a344_09<br />
* Installation de [[Node-RED]]<br />
** et ses extensions [http://flows.nodered.org/node/node-red-contrib-rfxcom Rfxcom], [http://flows.nodered.org/node/node-red-contrib-influxdb Influxdb], [http://flows.nodered.org/node/node-red-contrib-eddystone Eddystone], [http://flows.nodered.org/node/node-red-node-sensortag Sensortag], [http://flows.nodered.org/node/node-red-contrib-openzwave ZWave], [http://flows.nodered.org/node/node-red-contrib-bleacon iBeacon], PubNub, IFTTT, * [http://flows.nodered.org/node/node-red-contrib-amqp AMQP] ... et [http://flows.nodered.org/ autres] (en fonction de votre projet).<br />
* Installation de dashboard de visualisation [[InfluxDB]], [[Grafana]], [[Chronograf]], [[Telegraf]], [[Kapacitor]]<br />
* Installation de la suite [[Logstash]], [[Elastic Search]] et [[Kibana]]<br />
* Création de comptes sur [[Amazon EC2]], [[PubNub]], [[IFTTT]] Maker, [[Streamdata.io]], [https://data.sparkfun.com/streams/make Sparkfun Data] ...<br />
* Installation de [[Spark]]<br />
<br />
'''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'''.<br />
<br />
'''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'''.<br />
<br />
==Fiche de synthèse==<br />
Synthétiser un des sujets suivants en 1 page maximum. La page doit être une entrée du wiki. Chaque synthèse est individuelle.<br />
* [[SARAH]] <br />
* [[WirelessHART]]<br />
* [[Weightless]] (= AIT-MOULOUD Amine)<br />
* [[OpenRF]]<br />
* [[WMBus]]<br />
* [[Thread]] (Google) (= GUERIN Cedric )<br />
* [[LoRaWAN]] (= BERGER Stéphane)<br />
* [[NB-IoT]]<br />
* [[NB-LTE]]<br />
* [[HaLow]]<br />
* [[Irridium]] (= DONIAS Pierre)<br />
* [[Apple Homekit]]<br />
* [[AllJoyn]]<br />
* [[OneM2M]]<br />
* [[OPC-UA]]<br />
* [[DTN|Delay Tolerant Networks]] (= RUKUNDO Fiston)<br />
* [[Radio Data System]] (= ABHAMON Ronan)<br />
* [[Tetra Radio]]<br />
* [[IPSO]] (= CROZE Erwan)<br />
* [[GeoJSON]] (= AZOUZI Marwen)<br />
* [[Avro]] (= FAURE Adrien)<br />
* [[Thrift]] (= FAURE Maximilien)<br />
* [[Protobuf]] (= ZAKARI TOURE Ismael)<br />
* [[Apache Flume]] (= MARQUE Bastien)<br />
* [[Apache Zeppelin]] (= BIGARD Florian)<br />
* [[Kaa]]<br />
* [[Hypercat]] (= CHARTIER Aurélien)<br />
* [[Jupyter]] (= SAHUC Alexandre)<br />
* [[AWS IoT]] (= DIAGNE El Hadji Malick)<br />
* [[Brillo]] (= MENGOLI Jean-Luc)<br />
* [[EVRYTHNG]]<br />
* [[OGC SensorThings]] (= BANWARTH Pierre)<br />
* [[Zephyr Project]]<br />
* [[OpenEnergyMonitor]]<br />
* [[PlatformIO]]<br />
...<br />
<br />
==Capteurs et Actionneurs==<br />
[[Image:Genuino101.jpg|200px|thumb|right|Genuino 101]]<br />
# STM32 Nucleo + Shield LoRa SX1276 + Shield Météo<br />
# STM32 Nucleo + Shield NFC + Shield BLE (avec [http://www.eclipse.org/paho/clients/android/sample/ client Android MQTT])<br />
# STM32 Nucleo + [[SparkFun FM Tuner Evaluation Board - Si4703|Récepteur RDS]] + [[ESP8266]]<br />
# Sensors ZWave + Clé ZWave<br />
# Sensors RFXCom 433MHz + Clé RFXCom 433MHz<br />
# STM32 Nucleo + Shield BLE (capture de beacons [[iBeacon]] & [[AltBeacon]]) (avec [http://www.eclipse.org/paho/clients/android/sample/ client Android MQTT])<br />
# Sensors [[enOcean]] (à vérifier auprès de Jérôme Maisonnasse)<br />
# Sensors [[Zigbee]] (à vérifier auprès de Jérôme Maisonnasse)<br />
# Sensors [[XBee]] (à vérifier auprès de Jérôme Maisonnasse)<br />
# Carte Wifi [[ESP8266]] (IDE Arduino) + Shield [[OpenEnergyMonitor]]<br />
# Carte Wifi [[ESP8266]] ([[Lua]]) + Shield [[OpenEnergyMonitor]]<br />
# Carte de démonstration [[SigFox]]<br />
# Carte [[Intel Curie]] [[Genuino 101]] (avec [http://www.eclipse.org/paho/clients/android/sample/ client Android MQTT])<br />
# Carte [[Intel Curie]] [[Genuino 101]] (avec [http://www.eclipse.org/paho/clients/android/sample/ client Android MQTT]) +Ceinture cardio [http://www.decathlon.fr/cardio-bluetooth-smart-40-id_8288269.html Geonaute]<br />
# Carte Xadow GSM+BLE du [[RePhone]] (voir [http://www.instructables.com/id/ArduinoPhone-20-an-Open-Source-Mobile-Phone-Based-/ ArduinoPhone 2.0])<br />
# Carte LoRa<br />
<br />
<br />
==Mini-Projet==<br />
[[Image:M2MArchi2015-001.jpg|200px|right|thumb|Architecture Mini-Projet]]<br />
<br />
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]], [[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]], [[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 ...) <br />
<br />
<br />
===Sujets des mini-projets===<br />
<br />
{|class="wikitable alternance"<br />
|+ Affectation des projets PM2M 2015-2016<br />
|-<br />
|<br />
!scope="col"| Sujet<br />
!scope="col"| Étudiants<br />
!scope="col"| Fiche de suivi<br />
!scope="col"| Dépôt git<br />
!scope="col"| Documents<br />
!scope="col"| Matériel<br />
|-<br />
<br />
<br />
<br />
<br />
!scope="row"| 1<br />
| Géolocalisation Outdoor sans GPS<br />
| AVRIL Sébastien, BOTTRAUD Jean-Yves, FAGNO Loïc, BERGER Stéphane<br />
| [[PM2M-2016-GeolocOutdoor/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-GeolocOutdoor/pm2m '''github''']<br />
| [[Media:PM2M-2016-GeolocOutdoor.pdf|Rapport]] - [[Media:PM2M-2016-GeolocOutdoor-slides.pdf|Transparents]] - [[Media:PM2M-2016-GeolocOutdoor-flyer.pdf|Flyer]]<br />
| Cartes [[STM32 Nucleo]] (x4), Shield MBed [[LoRa]] SX1276 (x4), Semtech LoRaMote (x2) <br />
|-<br />
<br />
<br />
!scope="row"| 2<br />
| Détecteur de Présence Wifi<br />
| AZOUZI MARWEN, FAURE ADRIEN<br />
<br />
| [[PM2M-2016-Presence/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-Presence/pm2m '''github''']<br />
| [[Media:PM2M-2016-Presence.pdf|Rapport]] - [[Media:PM2M-2016-Presence-slides.pdf|Transparents]] - [[Media:PM2M-2016-Presence-flyer.pdf|Flyer]]<br />
| ESP8266 + FTDI + US100 + PIR Motion + Breadboard<br />
|-<br />
<br />
<br />
!scope="row"| 3<br />
| Feuille de présence apprenti NFC <br />
| FAURE MAXIMILIEN, MARQUE BASTIEN<br />
<br />
| [[PM2M-2016-NFCApprenti/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-NFCApprenti/pm2m '''github''']<br />
| [[Media:PM2M-2016-NFCApprenti.pdf|Rapport]] - [[Media:PM2M-2016-NFCApprenti-slides.pdf|Transparents]] - [[Media:PM2M-2016-NFCApprenti-flyer.pdf|Flyer]]<br />
| BBB + Lecteur NFC ACR 211 + Tags NFC<br />
|-<br />
<br />
<br />
<br />
!scope="row"| 4<br />
| LoRaMote Wyres<br />
| SAHUC Alexandre, CROZE Erwan<br />
<br />
| [[PM2M-2016-LoRaMote/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-LoRaMote/pm2m '''github''']<br />
| [[Media:PM2M-2016-LoRaMote.pdf|Rapport]] - [[Media:PM2M-2016-LoRaMote-slides.pdf|Transparents]] - [[Media:PM2M-2016-LoRaMote-flyer.pdf|Flyer]]<br />
| 2 Motes Wyres + RPI1 + 1 LoRaMote Semtech + 1 carte SX1301 [[IMST iC880A]] (FTDI)<br />
|-<br />
<br />
<br />
!scope="row"| 5<br />
| Méteo 433 MHz<br />
| CHARTIER Aurelien, MENGOLI JEAN-LUC<br />
| [[PM2M-2016-Meteo433/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-Meteo433/pm2m '''github''']<br />
| [[Media:PM2M-2016-Meteo433.pdf|Rapport]] - [[Media:PM2M-2016-Meteo433-slides.pdf|Transparents]] - [[Media:PM2M-2016-Meteo433-flyer.pdf|Flyer]]<br />
| BBB + RFXCom + 2 Sondes (UV, Thermo) + Modules TxRx 433<br />
|-<br />
<br />
<br />
<br />
!scope="row"| 6<br />
| Lecteur NFC Sigfox (Application : Gestion des rondes de surveillance)<br />
| AIT-MOULOUD Amine, GUERIN CEDRIC<br />
| [[PM2M-2016-NFCSigfox/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-NFCSigfox/pm2m '''github''']<br />
| [[Media:PM2M-2016-NFCSigfox.pdf|Rapport]] - [[Media:PM2M-2016-NFCSigfox-slides.pdf|Transparents]] - [[Media:PM2M-2016-NFCSigfox-flyer.pdf|Flyer]]<br />
| Platine Snooplab Areku [[SigFox]] + Shield [[NFC]] + Tag NFC<br />
|-<br />
<br />
<br />
<br />
<br />
<br />
!scope="row"| 7<br />
| Collecte et analyse de messages RDS par radio FM<br />
| ABHAMON Ronan, BIGARD FLORIAN<br />
| [[PM2M-2016-RDSMining/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M2016-A-B/ '''github''']<br />
| [[Media:PM2M-2016-RDSMining.pdf|Rapport]] - [[Media:PM2M-2016-RDSMining-slides.pdf|Transparents]] - [[Media:PM2M-2016-RDSMining-flyer.pdf|Flyer]]<br />
| [[BeagleBone Black]] + [[SparkFun FM Tuner Evaluation Board - Si4703|Sparkfun FM Tuner]] + Ecran [[Graphic LCD 84x48 - Nokia 5110]]<br />
|-<br />
<br />
<br />
<br />
!scope="row"| 8<br />
| Serrure intelligente (A CONFIRMER) - voir [[Touchkey]] & [[SmartSelfService/FicheSuivi2014|SmartSelfService]]<br />
| BAYLE STEPHANE, BUCHS THIBAUD, MAKHLOUF MEHDI<br />
| [[PM2M-2016-XXXXX/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-XXXXX/pm2m '''github''']<br />
| [[Media:PM2M-2016-XXXXX.pdf|Rapport]] - [[Media:PM2M-2016-XXXXX-slides.pdf|Transparents]] - [[Media:PM2M-2016-XXXXX-flyer.pdf|Flyer]]<br />
| [[STM32 Nucleo]] + Shield Nucleo [[NFC]] + Servo-Moteur + [[ESP8266]] + Coffre-fort de [[FabMSTIC]]<br />
|-<br />
<br />
<br />
!scope="row"| 9<br />
| Compteur de passage de véhicules avec [[OpenCV]] (A CONFIRMER)<br />
| OLVERA BADILLO ANGELICA, RUKUNDO Fiston, SUN HUANAN<br />
| [[PM2M-2016-XXXXX/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-XXXXX/pm2m '''github''']<br />
| [[Media:PM2M-2016-XXXXX.pdf|Rapport]] - [[Media:PM2M-2016-XXXXX-slides.pdf|Transparents]] - [[Media:PM2M-2016-XXXXX-flyer.pdf|Flyer]]<br />
| [[Intel Galileo]] + Alim 5V + Module Wifi [[ESP8266]] + WebCam USB<br />
|-<br />
<br />
<br />
<br />
<br />
<br />
!scope="row"| 10<br />
| Culture Hydroponique<br />
| BANWARTH PIERRE, DONIAS PIERRE<br />
| [[PM2M-2016-CultureHydroponique/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-XXXXX/pm2m '''github''']<br />
| [[Media:PM2M-2016-CultureHydroponique.pdf|Rapport]] - [[Media:PM2M-2016-CultureHydroponique-slides.pdf|Transparents]] - [[Media:PM2M-2016-CultureHydroponique-flyer.pdf|Flyer]]<br />
| [[STM32 Nucleo]] F401 + [[ESP8266]] + FTDI + [[AgriSensor_:_Arduino-Based_Sensor_for_Agriculture|AgriSensor]]<br />
<br />
|-<br />
<br />
<br />
<br />
<br />
<br />
<br />
!scope="row"| 11<br />
| Capteurs XBee<br />
| DIAGNE EI HADJI MALICK, ZAKARI TOURE ISMAEL<br />
| [[PM2M-2016-XBee/Suivi| '''Fiche''']]<br />
| [https://github.com/PM2M-2016-XBee/pm2m '''github''']<br />
| [[Media:PM2M-2016-XBee.pdf|Rapport]] - [[Media:PM2M-2016-XBee-slides.pdf|Transparents]] - [[Media:PM2M-2016-XBee-flyer.pdf|Flyer]]<br />
| [[Arduino FIO]] + FTDI + 2 [[XBee S1]] + Xbee Explorer <br />
|-<br />
<br />
<br />
|}<br />
<br />
==Contenu général des mini-projets==<br />
Les équipes ne font qu'une partie des manipulations en fonction du sujet du mini-projet affecté.<br />
<br />
====[[CoAP]] Binding for [[OpenHAB]]====<br />
* avec [[Californium]]<br />
* avec https://github.com/eclipse/californium/pull/25<br />
<br />
====Extension de [[Node-RED]]====<br />
Création ou Amélioration de Nodes<br />
* Node Crypto (avec https://nodejs.org/api/crypto.html)<br />
* Node [[Apache Kafka]]<br />
* Node [[Apache Flume]]<br />
* Node [[CoAP]]<br />
* Node [[UPnP]]<br />
* Node [[DTLS]] en étendant le node UDP<br />
* Node [[Radio Data System]] pour [[SparkFun FM Tuner Evaluation Board - Si4703]]<br />
* Node [[SigFox]] (uplink et downlink)<br />
* Node Sérialisation/Déserialisation [[Avro]]<br />
* Node Sérialisation/Déserialisation [[Thrift]]<br />
* Node Sérialisation/Déserialisation [[Protobuf]]<br />
* Node [[Phant.io]] pour [https://data.sparkfun.com/streams/make Sparkfun Data]<br />
* Node [[Streamdata.io]]<br />
* Node [[SensorTag2015]] (sur la base du noeud [http://flows.nodered.org/node/node-red-node-sensortag SensorTag])<br />
* Node Provider SMS Twilio<br />
* Node [[Provider SMS Free Mobile]]<br />
* Node Provider SMS Orange Mobile<br />
<br />
Le code devra être recontribué en open-source sur GitHub et catalogué dans http://flows.nodered.org/<br />
<br />
====Déploiement sur plateforme Cloud====<br />
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.<br />
<br />
'''Attention, Eduroam bloque le port 1883 du protocole [[MQTT]] (entre autre).'''<br />
<br />
====[[PubSub]] des mesures capteur avec [[Apache Kafka]]====<br />
[[Image:GPSKafkaStormAzureDemo.png|200px|right|thumb|GPS > Kafka > Storm on Azure Demo]]<br />
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).<br />
<br />
====[[PubSub]] des mesures capteur avec [[Apache Flume]]====<br />
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).<br />
<br />
====Collecte, Stockage et Visualisation des mesures capteur avec [[Logstash]], [[Elastic Search]], [[Kibana]]====<br />
<br />
voir [http://flows.nodered.org/node/node-red-contrib-elasticsearch3 NodeRED ElasticSearch3]<br />
<br />
====Affichage des positions avec [[Bootleaf]]====<br />
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]].<br />
<br />
====Analyse des mesures capteurs en temps réel avec [[Spark|Apache Spark Streaming]]====<br />
Installer [[Spark]] sur un petit cluster EC2 (1 master et 2 slaves en Ubuntu 14.04 t2.micro).<br />
<br />
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.<br />
<br />
Faire de même avec les brokers [[Apache Kafka]] et [[Apache Flume]]<br />
<br />
====Intégration à un ESB [[Apache Camel]]====<br />
Compléter le tutoriel avec un déploiement de composants [[Apache Camel]]<br />
Vous pourrez utiliser les composants suivants<br />
* https://camel.apache.org/weather.html<br />
* https://camel.apache.org/mqtt.html<br />
** http://tingenek.wordpress.com/category/mqtt/<br />
* https://camel.apache.org/rss.html<br />
* https://camel.apache.org/esper.html<br />
* https://camel.apache.org/mongodb.html<br />
** https://code.google.com/a/apache-extras.org/p/camel-extra/wiki/EsperDemo<br />
* [[InfluxDB]]<br />
<br />
====Monitoring de votre infrastructure avec [[Telegraf]], [[InfluxDB]], [[Grafana]] et [[Kapacitor]]====<br />
<br />
====Monitoring de votre infrastructure avec [[AWS Cloudwatch]] et [[Grafana]]====<br />
<br />
Pour monitorer les machines qui hébergent les serveurs ([[Mosquitto]], ...) sur AWS EC2:<br />
* Activer [[AWS Cloudwatch]]<br />
* Configurer [[Grafana]] pour AWS Cloudwatch ([http://docs.grafana.org/v2.6/datasources/cloudwatch/ lien]).<br />
<br />
==Soutenances==<br />
<br />
====Planning des soutenances====<br />
COMING SOON<br />
<br />
====Instructions pour les soutenances des mini-projets====<br />
<br />
* 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.<br />
* respectez le temps donc repetez la <br />
* remplissez le doodle pour choisir un creneau de passage<br />
* la présentation mettra en avant<br />
** le titre (avec les noms prénoms des binômes)<br />
** les applications IoT cibles/envisagées<br />
** le ou les architectures (successivement) implémentées,<br />
** les composants logiciels et matériels utilisés,<br />
** les métriques (langages de programmation, sloc, performance ...),<br />
** les problèmes rencontrés et les solutions élaborées,<br />
** la conclusion<br />
** des perspectives possibles à votre développement.<br />
<br />
Le code, le rapport et le PDF de la presentation doivent être livré dans un dépôt Github la veille de la soutenance.<br />
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.<br />
<br />
Envoyez le lien vers le dépôt Github (code + présentation) avant la soutenance.<br />
<br />
La présentation peut-être réalisée avec [[Reveal.js]].<br />
<br />
Pensez a répéter vos présentations.<br />
<br />
==Projets==<br />
<br />
==Matériel à disposition==<br />
* [[Intel Galileo]]<br />
* http://intel-software-academic-program.com/courses/#iot<br />
** http://intel-software-academic-program.com/courses/diy/Intel_Academic_-_DIY_-_InternetOfThings/IntelAcademic_IoT_09_Arduino_Motor_Shield.pdf<br />
* [[Gas Sensors]]<br />
* [[DHT11/DHT21/DHT22 etc. Temperature & Humidity sensors]]<br />
* [[SCL3711]] NFC Reader --> voir [[NFCpy]]<br />
* [[Capteur de pression BMP085]]<br />
* [[High Sensitivity Alarm Vibration Sensor Module]]<br />
* [[PIR Motion Sensor]]<br />
* [[BMP085 Pressure Sensor]]<br />
* [[CC2541 SensorTag Development Kit]]<br />
* [[Socket.io]]<br />
* [[STM32 Nucleo]]<br />
** Shield BlueNRG<br />
* 2 Shields [[LoRa]] pour Arduino ([http://www.labfab.fr/portfolio/lora-fabian/ LoRaFabian]) à brancher sur Galileo et STM32 Nucleo.<br />
** Il faut porter les sketchs Arduino https://github.com/Wi6labs/lorafabian/tree/master/ARDUINO_SKETCH via MBed et Galileo.<br />
<br />
==Visualisation==<br />
* [https://github.com/PaulLabat/mqtt-panel MQTT Panel]<br />
* MQTT over Websocket<br />
** https://www.npmjs.org/package/mqtt-ws<br />
** http://mqtt.org/wiki/doku.php/mqtt_over_websockets<br />
* [[Leaflet.js]] modern open-source JavaScript library for mobile-friendly interactive maps<br />
* [[Morris.js]] Charts in Javascript<br />
* [[Grafana]]<br />
* [[Graphite]]<br />
* [[Ganglia]]<br />
<br />
==Stockage==<br />
* [[InfluxDB]]<br />
* [[MongoDB]]<br />
<br />
==Liens==<br />
* [[Intel Galileo]]<br />
* http://wiki.eclipse.org/Eclipse_IoT_Day_Grenoble_2014<br />
* https://github.com/SmartDollHouse<br />
* https://twitter.com/FablabAIR<br />
<br />
==Autres==<br />
* [[IoTSyS]]<br />
* [https://github.com/denschu/home.pi Home.pi]<br />
* [[OM2M]]<br />
* [[Gladys]]<br />
* DEPRECATED : [[MQTT Panel]] avec [http://code.shutterstock.com/rickshaw/examples/ rickshaw]<br />
* [https://github.com/SmartDollHouse Dépôt GitHub]<br />
* [http://www.oezratty.net/wordpress/2016/rapport-ces-2016/ Rapport 2016 sur le CES de Olivier Ezratty]<br />
* [[Flot Charts]]<br />
<br />
==Galerie 2016==<br />
<br />
==Galerie 2015==<br />
<br />
==Galerie 2014==<br />
[[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]]</div>BIGARD.FLORIAN