<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Agosse</id>
		<title>Wiki de Projets IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Agosse"/>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Agosse"/>
		<updated>2026-05-13T19:11:26Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57958</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57958"/>
				<updated>2018-05-19T22:02:29Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 32 - 07/05/18 - 8H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_utiltxtest.png|Emissions de la passerelle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_osmbed.png|Compilateur en ligne os.mbed&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_loraserver.png|Interface LoRaserver&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
Il reste la partie web, en HTML/CSS,PHP,JS à faire afin d'avoir une application utile. Ceci sera fait pendant les vacances car aucun matériel de polytech (mis à part les serveurs) n'est nécessaire.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
La page web, avec récupération des données sur le broker MQTT à été réalisé comme convenu pendant les vacances.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_trappespace.png|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
Rapport de projet : [[:File:Rapport_P6_LoRaWAN_-_Gosse_Antoine.pdf]]&lt;br /&gt;
&lt;br /&gt;
Code : [[:File:Code_P6_LoRaWAN_-_Gosse_Antoine.zip]]&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57957</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57957"/>
				<updated>2018-05-19T22:01:04Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 31 - 18/04/18 - 4H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_utiltxtest.png|Emissions de la passerelle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_osmbed.png|Compilateur en ligne os.mbed&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_loraserver.png|Interface LoRaserver&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
Il reste la partie web, en HTML/CSS,PHP,JS à faire afin d'avoir une application utile. Ceci sera fait pendant les vacances car aucun matériel de polytech (mis à part les serveurs) n'est nécessaire.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_trappespace.png|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
Rapport de projet : [[:File:Rapport_P6_LoRaWAN_-_Gosse_Antoine.pdf]]&lt;br /&gt;
&lt;br /&gt;
Code : [[:File:Code_P6_LoRaWAN_-_Gosse_Antoine.zip]]&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57956</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57956"/>
				<updated>2018-05-19T21:56:51Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 32 - 07/05/18 - 8H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_utiltxtest.png|Emissions de la passerelle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_osmbed.png|Compilateur en ligne os.mbed&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_loraserver.png|Interface LoRaserver&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_trappespace.png|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
Rapport de projet : [[:File:Rapport_P6_LoRaWAN_-_Gosse_Antoine.pdf]]&lt;br /&gt;
&lt;br /&gt;
Code : [[:File:Code_P6_LoRaWAN_-_Gosse_Antoine.zip]]&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57955</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57955"/>
				<updated>2018-05-19T21:55:33Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 11 - 07/02/18 - 5H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_utiltxtest.png|Emissions de la passerelle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_osmbed.png|Compilateur en ligne os.mbed&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_loraserver.png|Interface LoRaserver&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
Rapport de projet : [[:File:Rapport_P6_LoRaWAN_-_Gosse_Antoine.pdf]]&lt;br /&gt;
&lt;br /&gt;
Code : [[:File:Code_P6_LoRaWAN_-_Gosse_Antoine.zip]]&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57954</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57954"/>
				<updated>2018-05-19T21:54:02Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 4 - 22/01/18 - 2H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_utiltxtest.png|Emissions de la passerelle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_osmbed.png|Compilateur en ligne os.mbed&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
Rapport de projet : [[:File:Rapport_P6_LoRaWAN_-_Gosse_Antoine.pdf]]&lt;br /&gt;
&lt;br /&gt;
Code : [[:File:Code_P6_LoRaWAN_-_Gosse_Antoine.zip]]&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57953</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57953"/>
				<updated>2018-05-19T21:53:01Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 3BIS - 19/01/18 - 2H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_utiltxtest.png|Emissions de la passerelle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
Rapport de projet : [[:File:Rapport_P6_LoRaWAN_-_Gosse_Antoine.pdf]]&lt;br /&gt;
&lt;br /&gt;
Code : [[:File:Code_P6_LoRaWAN_-_Gosse_Antoine.zip]]&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57456</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57456"/>
				<updated>2018-05-15T22:09:22Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
Rapport de projet : [[:File:Rapport_P6_LoRaWAN_-_Gosse_Antoine.pdf]]&lt;br /&gt;
&lt;br /&gt;
Code : [[:File:Code_P6_LoRaWAN_-_Gosse_Antoine.zip]]&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Code_P6_LoRaWAN_-_Gosse_Antoine.zip&amp;diff=57453</id>
		<title>Fichier:Code P6 LoRaWAN - Gosse Antoine.zip</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Code_P6_LoRaWAN_-_Gosse_Antoine.zip&amp;diff=57453"/>
				<updated>2018-05-15T22:08:16Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : Code du projet P6 LoRaWAN utilisé développé lors du projet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Code du projet P6 LoRaWAN utilisé développé lors du projet&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Code_P6_LoRaWAN_-_Gosse.zip&amp;diff=57451</id>
		<title>Fichier:Code P6 LoRaWAN - Gosse.zip</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Code_P6_LoRaWAN_-_Gosse.zip&amp;diff=57451"/>
				<updated>2018-05-15T22:06:51Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : Archive contenant le code développé lors du projet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Archive contenant le code développé lors du projet&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57435</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57435"/>
				<updated>2018-05-15T21:51:04Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Documents Rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;br /&gt;
Rapport de projet : [[:File:Rapport_P6_LoRaWAN_-_Gosse_Antoine.pdf]]&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapport_P6_LoRaWAN_-_Gosse_Antoine.pdf&amp;diff=57434</id>
		<title>Fichier:Rapport P6 LoRaWAN - Gosse Antoine.pdf</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapport_P6_LoRaWAN_-_Gosse_Antoine.pdf&amp;diff=57434"/>
				<updated>2018-05-15T21:49:29Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : Rapport du projet P6 LoRaWAN
Réalisé par Antoine Gosse&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rapport du projet P6 LoRaWAN&lt;br /&gt;
Réalisé par Antoine Gosse&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57433</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57433"/>
				<updated>2018-05-15T21:47:28Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Prologue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57432</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=57432"/>
				<updated>2018-05-15T21:47:08Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Calendrier prévisionnel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=57086</id>
		<title>Discussion:Projets IMA4 SC &amp; SA 2017/2018</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=57086"/>
				<updated>2018-05-15T09:28:22Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Analyse du projet || Retour sur l'analyse || Matériel || Mi-parcours || Fin de parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation sans supports, bonne analyse de la concurrence. Par contre le scénario d'usage est à revoir en précisant l'usage pour le particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le scénario est précisé mais aucune réponse aux questions difficiles &amp;quot;gestion des températures et procédure d'entretien&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Si le contenu du Wiki reflète la quantité de travail fourni, c'est inquiétant.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Peu de matière, pas de justification des choix, aucune réalisation concréte présentée. Sauf effort très important de dernière minute, un projet qui n'aboutira pas.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Inutile en l'état actuel du projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation focalisée sur les réseaux de neurones. Exercice mal compris (pas d'introduction du contexte, pas de scénario d'usage).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours pas d'analyse de la concurrence, ni de scénario d'usage. Pas de réponse aux questions difficiles &amp;quot;quel est le matériel ? quel est le protocole ? quelles sont les entrées du réseau de neurones ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste mais il manque des références vers les fournisseurs agréés (voir page de l'an dernier).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Illustrez votre Wiki avec des schémas ou des photos de votre montage. Décrivez mieux votre plateforme de test et les résultats obtenus. Essayez de corriger les problèmes de français.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki trop peu alimenté pour cette phase du projet, aucune illustration, impossible de se faire une idée de l'avancée du projet avec le Wiki. Coquilles non prises en compte.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une démonstration avec le dispositif décrit en fin de Wiki peut être envisagée.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Architecture de la source d'énergie (nombre de chemins d'énergie ?)&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Vous devriez avoir quelques éléments sur la réalisation. Complétez votre Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Un Wiki illustré mais avec du copier/coller des manuels de référence sans grand intérêt. Toujours pas de circuit testé en fin de projet. Un très important effort final est toujours possible.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;A priori inutile sauf si une version fonctionnelle de la carte était obtenue.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Présentation focalisée sur la création du site Web. Effort fait pour rédiger un scénario d'usage.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Réponses aux questions mais l'analyse de la consommation est imprécise. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé dans la page Wiki mais à reporter en bas de la page des projets de cette année avec des références valides.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un effort de documentation mais illustrez par des schémas, des pages de l'application et des tests.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un Wiki correct mais sans plus, des problèmes de format, des illustrations mal incluses, des vidéos youtube. Cela dit le Wiki peut devenir tout à fait correct avec un peu de temps et de soin.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de doute sur le travail effectué, une vidéo de démonstration est possible et requise.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé. Scénario d'usage à préciser sur la partie réseau de capteurs.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Scénario d'usage non précisé. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence, êtes-vous sur que le matériel n'a pas besoin d'être acheté ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description de l'avancé du projet. N'hésitez pas à solliciter votre encadrant direct en cas de blocage !&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Très bonne description de l'avancé du projet. Prenez un peu de temps pour corriger les coquilles assez fréquentes. Wiki légérement décalé par rapport au travail effectué.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Aucun doute sur le travail effectué mais il n'est pas sur que le sujet se prête à une vidéo. A discuter avec les encadrants.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Pas de support. Exercice très bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de réponse aux questions difficiles &amp;quot;quelle alimentation ? comment faire pour différencier les briques ? comment les briques vont-elles communiquer ? quelle sécurité vis-à-vis des enfants ?&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description de l'avancé du projet. Faites un effort de formatage du texte (par exemple en utilisant des sous-titres plutôt que de souligner des lignes).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Le travail progresse mais le Wiki est décalé.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une démonstration est requise, faites en sorte que les prototypes soient au rendez-vous.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Rien à signaler (juste une confusion entre le MSP430 et le CC430).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Questions difficiles évacuées. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une bonne description de l'avancé du projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Un Wiki correct permettant de suivre l'avancé du projet. Le rapport devra être plus précis.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Aucun doute sur la qualité du travail, le sujet ne se prête pas à une démonstration sauf si des processus visuels peuvent être chargés sur RIOT pour CC430.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un peu rapide, exercice réalisé. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas d'analyse de la concurrence. Peu d'effort de rédaction. Des coquilles. Une réponse rapide à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais pas forcément exhaustif et sans référence valide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description de l'avancé du projet. Wiki agréable à lire.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Merci de corriger les coquilles trop nombreuses en fin de Wiki. Les derniers travaux sont décrits trop succinctement.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une démonstration est requise. Un grand effort va devoir être fourni pour obtenir un prototype fonctionnel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Page Wiki vide, pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une bonne description de l'avancé du projet. Essayez de mieux formater votre texte pour une meilleure facilité de lecture.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Travail correctement décrit mais une tendance à s'arrêter à chaque obstacle, qu'en est-il de l'utilisation de &amp;lt;code&amp;gt;v4l2loopback&amp;lt;/code&amp;gt; ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une démonstration est requise. Faites en sorte d'obtenir un prototype fonctionnel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Pas d'analyse de la concurrence, pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;L'analyse de la concurrence et le scénario d'usage ont été ajoutés. Par contre pas de réponse aux questions difficiles &amp;quot;quelle sera l'autonomie de la balle et quel sera le système de rechargement ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet au 18/02/2018&amp;lt;/font&amp;gt;. &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Wiki mis à jour en catastrophe le 19/02/2018. Peu d'informations, seul le routage d'une carte semble avoir été entrepris.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune mise à jour du Wiki depuis la dernière remarque ci-dessus. L'avancée du travail ne peut pas être évaluée.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une démonstration est requise. Un prototype sera-t-il disponible ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Trouver des concurrents indirects. Une histoire mais pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page Wiki modifiée après la présentation. Une réponse incomplète à la question difficile. Trop de coquilles pour ce niveau d'études.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Bonne description du travail. Cinq séances pour faire chauffer une résistance, n'est-ce pas trop ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Rien à dire sur la forme, le Wiki est toujours bien tenu et permet de se faire une bonne idée de l'avancée du projet. Par contre le travail effectué sur les dernières semaine est très léger.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;De gros doute sur la possibilité d'avoir un dispositif convaincant à montrer en fin de projet. Je ne demande qu'à être démenti.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune modification de la page Wiki depuis début octobre.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une bonne description de l'avancé du projet. Projet encore dans la phase de prototypage. Comment vous comptez recevoir une carte SIM ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki non mis à jour. Le code (IDE Arduino) est inclus in extenso dans le Wiki. Toujours pas d'intégration des composants.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;De gros doute sur la possibilité d'avoir un dispositif convaincant à montrer en fin de projet. Je ne demande qu'à être démenti.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Supports très textuels, pas de scénario d'usage mais une rédaction sur l'intérêt psychologique, pas vraiment de partie &amp;quot;concurrents&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un effort pour trouver des &amp;quot;concurrents&amp;quot;, pas de réponses aux questions difficiles &amp;quot;combien de LEDs ? quelle alimentation pour quelle autonomie&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Le travail est a peu près décrit mais la page Wiki ressemble a un brouillon.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Beaucoup d'aide pour améliorer le Wiki mais pas d'effort pour le maintenir par la suite : pas de description du mandala décoré. Rien non plus sur la programmation des animations.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une démonstration est requise, il faut finaliser le projet, concernant le matériel c'est correctement engagé mais il faut un gros effort sur la programmation.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Bonne présentation orale. Utilisation du bluetooth peu convainquant. Pas de scénario d'usage. Un &amp;quot;concurrent&amp;quot; trouvé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Concept de scénario d'usage non compris. Une réponse à la question difficile très rapide et non convaincante.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste de matériel dans la page Wiki mais à insérer dans le tableau en bas de la page principale. Pas de référence (voir sur la page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Le travail avec le prototype pilote de LEDs est très bien décrit et de façon agréable à lire. Par contre le schéma du futur circuit est très mal engagé. Il faut commencer par faire un schéma plus précis du collier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;La discussion sur la conception du circuit est difficile à comprendre, d'où sortent les intensités de 0,6A et de 1,2A ? Mettre une photo d'écran pour le PCB est une hérésie sachant qu'il est possible d'exporter une image directement de Fritzing. Sans un très important travail final, il sera impossible de mener le projet à bien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Une démonstration est requise, il faut finaliser le projet un très gros effort est nécessaire malgré l'aide déjà apporté.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Support assez corrects, sujet non entièrement compris, scénario d'usage minimal.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un problème dans le scénario d'usage : les conteneurs doivent être lancés sur un serveur. Une réponse acceptable à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet. Aucun travail ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le Wiki a été utilisé mais montre un manque de travail flagrant. Un élève ne participe pas au projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Sauf miracle aucune démonstration ne sera possible.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Compte-rendu du travail très lapidaire et parfois illisible à cause des coquilles. Le Wiki ne donne pas l'impression que le projet avance.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Il est clair que le Wiki est alimenté mais un manque de rigueur dans la syntaxe mediawiki et de trop nombreuses coquilles ne permettent pas une lecture facile. Avec un peu de soin vous pourriez avoir un excellent Wiki. Le travail décrit est foisonnant, essayez de synthétiser, en particulier il serait intéressant de savoir dans quel état sont les différents travaux entrepris.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une démonstration est requise.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation trop impécise, pas vraiment de scénario d'usage. Par contre des concurrents ont été présentés.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un scénario d'usage éloigné de la future utilisation. Trop de coquilles dans ce scénario. Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste du matériel mais pas dans la page principale. Pas de référence (voir page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Compte-rendu non à jour au 18/02/2018 alors que la feuille d'heures est à jour. Le Wiki manque d'illustration, par exemple donnez le schéma du circuit.&amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Des informations sur la carte en gestation&amp;lt;/font&amp;gt;.&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Wiki non mis à jour. Toujours entrain de travailler sur la clef XBee.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Une démonstration est requise. Un très grand effort semble nécessaire pour avoir quelque chose à présenter sur la table.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte. Un concurrent assez peu en rapport avec les essaims de robots mais dans la ligne des dispositifs de déminage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Liste du matériel. Préciser pour le chassis.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Impossible de connaître l'avancé du projet à la lecture du Wiki. N'êtes-vous pas entrain de vous perdre dans vos problèmes avec FreeRTOS ?&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;De quelle résistance devant le récepteur IR parlez-vous ? Il n'y en a pas sur le PCB. Votre Wiki se concentre ces dernières semaines sur la modélisation du chassis alors que le travail sur la programmation de l'ATMega328p n'y figure pas. C'est dommage sachant qu'il s'agit du travail le plus valorisant.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une démonstation est requise. Arriverez-vous à souder et programmer une carte à temps ? Votre chassis complexe sera-t-il aussi fonctionnel qu'un chassis très simple à base de 2 plaques et d'entretoises ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Objectif mal expliqué. Exercice réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Mieux définir l'objectif suite à la visite en entreprise. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Bonne description du travail. Votre Wiki manque d'illustrations sur un sujet qui le permet.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki non à jour. Ce qui est disponible donne l'impression d'un papillonnage de tutorial en tutorial. Vous abandonnez la banana PI D1 en début de projet pour vous concentrer sur de la reconnaissance d'image que vous ne semblez pas avoir conduit à bien puisque vous parlez de l'abandonner. Vous passez de C++ à python sans raison convaincante. Vous développez un serveur Web sous &amp;lt;code&amp;gt;flask&amp;lt;/code&amp;gt; que vous cachez derrière un proxy inverse &amp;lt;code&amp;gt;ngnix&amp;lt;/code&amp;gt;. Vous parlez de stratégie en semaine 9 ce qui bien tardif. Votre projet semble embourbé.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Malheureusement il ne semble pas qu'il y aura quoi que ce soit à montrer. Je ne demande qu'à être démenti.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Excellente présentation et excellent travail préparatoire, Scénario d'usage à préciser, trouver des concurrents.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Tout simplement parfait !&amp;lt;/b&amp;gt; Bien illustré, bien rédigé, le travail est très bien décrit. Attention quand vous dites qu'un ATMega328p n'a pas assez de sorties pour commander 8 oscillateurs, il dispose tout de même de plus de 20 E/S.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Wiki toujours excellent. Votre exploration du monde de l'électronique analogique est passionnant à lire du moins pour un profane en la matière. Juste des notes pour les deux dernières semaines mais c'est mieux que rien et vous avez raison de vous concentrer sur la réalisation.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Démonstration requise. En espérant que la sculpture soit totalement opérationnelle.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice réussi. Cependant précisez les acteurs dans le scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de modification du scénario. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Rien à redire sur la liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Description du travail correct, des illustrations. Essayez de formater avec la syntaxe Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Wiki très correct sur la forme. Pas tout à fait à jour.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Démonstration requise. Du travail nécessaire pour avoir un prototype pour la démonstration.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponses aux questions difficiles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Le travail effectué est décrit. Un nombre de coquilles non acceptable, la lecture en devient difficile. Utilisez la syntaxe de formatage du Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Corrigez vos erreurs de grammaire et d'orthographe ! Utilisez correctement la syntaxe mediawiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Démonstration requise. Même un résultat négatif, du style la plante est muette, est intéressant.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Sujet se prêtant peu à l'exercice mais très bonne présentation. Sujet travaillé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas vraiment de question, la suggestion est noté dans la page Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Description du travail un peu rapide (DNS leak quesako ?). Rédaction en cours au moment de la lecture du Wiki.&amp;lt;/font&amp;gt;&amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Effort de rédaction entre le 18/02/2018 et le 19/02/2018. Il manque des sections mais le travail effectué devient lisible.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bon Wiki. Des améliorations possibles comme la correction des coquilles et compléter la partie état de l'art.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Aucun doute sur la qualité et la quantité de travail comme le montre l'&amp;quot;état de l'art&amp;quot; du Wiki. Ce sujet se prête peu à une vidéo. Il est cependant possible d'envisager une courte vidéo avec la confrontation de deux navigations Web, une classique, l'autre en passant par Tor. Le coté délicat est de trouver des démonstrations visuelles de la confidentialité apportée par Tor.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Comment démarrer l'imprimante à distance ? Comment sera calibrée la plaque d’impression ?&lt;br /&gt;
Comment la plaque va se fixer sur le sol ? &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Tout simplement parfait !&amp;lt;/b&amp;gt; Bien illustré, bien rédigé, le travail est très bien décrit. Il est possible de mettre une copie d'écran de l'application de plus. Pas la peine de vous tirer dans les pattes.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Respectez la syntaxe mediawiki. Voir les corrections. Ajoutez une photo de l'imprimante dans l'état actuel. Très bon Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Démonstration requise. Aucun doute sur le fait que le dispositif fonctionnera parfaitement de bout en bout.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le projet ne semble pas encore avoir été sérieusement étudié.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Net effort de documentation de la page Wiki. Pas de réponse directe à la question difficile sur la Kinect mais une discussion sur le problème posé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description du travail. Des illustrations mais il pourrait y avoir des photos du système robotino / kinect.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Depuis février le projet piétine. Votre feuille d'heure de février en témoigne : les banques d'images des MPS n'ont pas pu être constituées (pas de raison donnée pour cet échec), de plus 13h pour acquérir des images d'une caméra même stéréoscopique est exagéré. Il vous a fallu tout le mois de mars pour résoudre ces problèmes et encore votre discussion sur la reconnaissance des MPS est peu pertinente comme expliqué en séance. Toujours rien sur l'implantation du dispositif de reconnaissance sur le système embarqué.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Il semble peu probable qu'une démonstration puisse avoir lieu. Je ne demande qu'à être démenti.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Contexte mal présenté, sujet flou. Scénario d'usage à préciser. Pas de contact avec les encadrants avant la présentation.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page de Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Compte-rendu rapide du travail. Ce compte-rendu est inquiétant. Il ne semble y avoir aucun résultat depuis le début du projet. Un module a été abandonné sans que le module en question n'ait été décrit ou que la raison de l'abandon ait été précisé. Attention votre projet est en voie d'échec.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki court. Le seul travail décrit est l'écriture d'un script shell. Une seule ligne sur la création d'un conteneur.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune démonstration envisageable.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page de Wiki assez vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Le robot centaure est en plus mauvais état maintenant qu'au début du projet. Vous semblez avoir une nouvelle fois abandonné votre projet.&amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Des ajouts mineurs au Wiki le 19/02/2018.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Du travail réalisé avec un certain succès durant le mois de mars. A nouveau abandon du projet en avril.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Il ne semble pas raisonnable d'espérer une démonstration.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Présentation très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse à la question difficile. Page Wiki un peu vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un Wiki incomplet alors que la feuille d'heures est actualisée. Vous semblez toujours bloqués sur les problèmes d'étalonnage !&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Wiki très peu alimenté. Présentation du contrôle avec simulink.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une démonstration requise. Pour l'instant seul le contrôle par simulink est disponible. Ce n'est pas suffisant.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Wiki avec quelques informations sur le travail accompli depuis fin novembre : étude sur modbus et labview. Quelques coquilles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Très peu d'illustrations. Texte mal formaté et avec des coquilles intolérable à ce niveau d'étude. Le compte-rendu donne l'impression d'une méthode de travail très brouillonne.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki insuffisant.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Projet terminé, pas de vidéo.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation sans support. Trouver des concurrents indirects. Pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet. Projet en échec ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet. Projet en échec.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune avancée, il est désormais impossible d'avoir un prototype en fin de projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki bien tenue. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Quelques éléments sur le matériel dans la page Wiki mais aucune liste avec références.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Tout simplement parfait !&amp;lt;/b&amp;gt; Bien illustré, bien rédigé, le travail est très bien décrit. Presque à jour. Vous n'aviez pas des cartes à faire fabriquer à l'extérieur ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Rédaction rapide sur les dernières semaine. Une expérimentation est nécessaire à ce stage du projet. Elle est attendue avec impatience.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Démonstration requise. Débrouillez-vous pour avoir quelque chose de percutant à montrer !&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki très complète. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une liste probablement pas exhaustive.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Exceptionnel !&amp;lt;/b&amp;gt; Très illustré, bien rédigé, le travail de recherche est très bien décrit. Je ne suis pas un fan de la mise en gras d'un quart du texte et la syntaxe Wiki n'est pas vraiment utilisée mais c'est du détail?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Il faudra encore relire le Wiki pour corriger les coquilles des nouveaux paragraphes. Les images et les vidéos sont aussi à ajouter. Il n'en reste pas moins que le Wiki et impressionnant et sera exceptionnel une fois totalement rédigé et corrigé.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Démonstration absolument requise. Il y aura forcément quelque chose à montrer !&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet. Projet en échec ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours rien sur l'avancé du projet. Projet en échec.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Vidéo non adaptée au sujet.&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 Pré-projet 1|Robot hexapode pour escalier]]&lt;br /&gt;
| Erasmus &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Projet en échec constaté.&amp;lt;/font&amp;gt;&lt;br /&gt;
| A voir avec l'encadrant direct.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| A voir avec l'encadrant direct.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fiche de présence ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! Séance 1 (17/01) !! Séance 2 (24/01) !! Séance 3 (31/01) !! Séance 4 (7/02) !! Séance 5 (14/02) !! Séance 6 (21/02) !! Séance 7 (7/03) !! Séance 8 (14/03) !! Séance 9 (21/03) !! Séance 10 (28/03) !! Séance 11 (4/04) !! Séance 12 (11/04) !! Séance 13 (18/04)&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
|Quentin Boëns / Henri Carlier&lt;br /&gt;
|E304 &lt;br /&gt;
|E304/305&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201/E304&lt;br /&gt;
|E304/Fab&lt;br /&gt;
|Fab/A313&lt;br /&gt;
|C205  Départ 17h (entretien stage)&lt;br /&gt;
|C205&lt;br /&gt;
|C205&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
|Ji Yang&lt;br /&gt;
|E306&lt;br /&gt;
|E303&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|E306&lt;br /&gt;
|E306&lt;br /&gt;
|E306&lt;br /&gt;
|C201&lt;br /&gt;
|E304&lt;br /&gt;
|E306&lt;br /&gt;
|E306&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| Alexis Viscogliosi / Abass Ayoub &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|E304 &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Alexis Viscogliosi Absent excusé pour entretien stage&amp;lt;/font&amp;gt;&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| Paul Ribeiro / Mehanna Naïf&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|E301 puis B309 puis B207&lt;br /&gt;
|E301&lt;br /&gt;
|E301&lt;br /&gt;
|C201 puis E304&lt;br /&gt;
|C201 et E304&lt;br /&gt;
|C201&lt;br /&gt;
|C201/E303&lt;br /&gt;
|C201&lt;br /&gt;
|E303 puis E304&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| Antoine Gosse&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| Maëva Delaporte / Simon Blas&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| C201/E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| Baptiste Cartier&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E306&lt;br /&gt;
| E304&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| Amine El Messaoudi / Simon Feutrier&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| B207&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| E305 - C202&lt;br /&gt;
| E306 - C201&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Jade Dupont&lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|Absence Maladie&lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|Absente entretien stage&lt;br /&gt;
|E304 &lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| Thomas Cunin / Thibault Cattelain&lt;br /&gt;
| E304&lt;br /&gt;
| B306/E304&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E304 - A305)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E304&lt;br /&gt;
| E304/C200&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| Rémi Mairesse / Gustave Roux&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304 / C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|E302&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| Lirui Zhang / Lihe Zhang&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E302&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E302&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| Lijie Yao / Keren Qiang&lt;br /&gt;
| E303&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| Maxime Creteur / Gao Fan&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E303&lt;br /&gt;
|B309 puis B207&lt;br /&gt;
|E301&lt;br /&gt;
|E301&lt;br /&gt;
|E304&lt;br /&gt;
|E301&lt;br /&gt;
|E301&lt;br /&gt;
|E303 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Gao Fan absent &amp;lt;/font&amp;gt;&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| Amaury Knockaert / Fabrice Taingland&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304/E302&lt;br /&gt;
| C203/E306&lt;br /&gt;
| E306/E304&lt;br /&gt;
| Forum stages euratech/E304&lt;br /&gt;
| E304&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E304&lt;br /&gt;
| E304 / C205&lt;br /&gt;
| E304 / C205&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| Matthieu Delobelle&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E303 - C201&lt;br /&gt;
| E306 - C201&lt;br /&gt;
| E304&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201-E302&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| Benjamin Canu / Ganix Etcheguibel&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| Forum Euratech jusqu'à 17h &amp;lt;br/&amp;gt; E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306 / Fab&lt;br /&gt;
| E306 / Fab&lt;br /&gt;
| E306 / C202&lt;br /&gt;
| E306 / C202&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| Taky Djeraba / Thomas Hubert&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| Jean-Baptiste Watine / Antoine Untereiner&lt;br /&gt;
| E306/C201&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (C201) &amp;lt;/font&amp;gt;&lt;br /&gt;
| C205&lt;br /&gt;
| C205/E301&lt;br /&gt;
| C205/E301&lt;br /&gt;
| E301&lt;br /&gt;
| C205&lt;br /&gt;
| C205/C201&lt;br /&gt;
| C205&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| Transley Gracias / Camille Saad&lt;br /&gt;
| E306 &lt;br /&gt;
| E306 &lt;br /&gt;
| E305&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306/C202&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306/C202&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| Xavier Chenot / Rodolphe Toin&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306 puis C201&lt;br /&gt;
| C205&lt;br /&gt;
| C205&lt;br /&gt;
| C205&lt;br /&gt;
| C205&lt;br /&gt;
| C205&lt;br /&gt;
| C205&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| Antoine Duquenoy / Anthony Durot&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E305&lt;br /&gt;
| E306&lt;br /&gt;
| E305&lt;br /&gt;
| E305&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| Eloi Zalczer / Justine Senellart&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E306/E302&lt;br /&gt;
|Hors Polytech/E302&lt;br /&gt;
|E302/E304&lt;br /&gt;
|E302/E304&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E306/E302&lt;br /&gt;
|E306/E302&lt;br /&gt;
|Entretien/E302&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| Damien Narbais / Zoé Briois&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E301)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E304 + 17h réunion C00X&lt;br /&gt;
| C205&lt;br /&gt;
| E304 + 17h réunion C00X&lt;br /&gt;
| A317&lt;br /&gt;
| E304&lt;br /&gt;
| E30X&lt;br /&gt;
| C205 + Damien -&amp;gt; entretien stage&lt;br /&gt;
| C205&lt;br /&gt;
| C205&lt;br /&gt;
| C205&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| Hugo Delbroucq / Nicolas Havard &lt;br /&gt;
| E301&lt;br /&gt;
| INRIA&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt; (INRIA)&lt;br /&gt;
| E301&lt;br /&gt;
| E301 puis E304&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E304&lt;br /&gt;
| INRIA&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| Claire Vandamme / Alexandra Villa &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|Hors Polytech/B106&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|Bureau de Mr Pekpe/E306&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|C008(Claire : jusque 16h, RDV médical)&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|- &lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| Florian Le Foll&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; (Pas de salle) &amp;lt;/font&amp;gt;E303&lt;br /&gt;
|E303&lt;br /&gt;
|E303&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| Carval Amaury/ Prud'Homme Geoffrey&lt;br /&gt;
| fabricarium &lt;br /&gt;
| fabricarium puis Hors Polytech&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
| Carval E306 - Preud'homme E301&lt;br /&gt;
| E301&lt;br /&gt;
| Carval C20X - Preud'homme Fabricarium&lt;br /&gt;
| Quelque part&lt;br /&gt;
| Fabricarium&lt;br /&gt;
| E306&lt;br /&gt;
| Fabricarium (au fond)&lt;br /&gt;
| C201/Fabricarium&lt;br /&gt;
| C201/Fabricarium/C205&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| Erwan Dufresne&lt;br /&gt;
| E302/E306&lt;br /&gt;
| E301&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
| E302&lt;br /&gt;
| E306&lt;br /&gt;
| E302&lt;br /&gt;
| E302/Fabricarium&lt;br /&gt;
| E302/Fabricarium&lt;br /&gt;
| Fabricarium/E304&lt;br /&gt;
| E304/Fab&lt;br /&gt;
| E306/Fab&lt;br /&gt;
| E305/ Fab&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 PP1|Robot hexapode pour escalier]]&lt;br /&gt;
| Eduardo Gomez &lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| Fabricarium&lt;br /&gt;
| Fabricarium&lt;br /&gt;
| C201&lt;br /&gt;
| C201/Fabricarium&lt;br /&gt;
| C201/Fabricarium&lt;br /&gt;
| C201/Fabricarium&lt;br /&gt;
| &lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:P62017_trappespace.png&amp;diff=56774</id>
		<title>Fichier:P62017 trappespace.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:P62017_trappespace.png&amp;diff=56774"/>
				<updated>2018-05-14T10:53:30Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:P62017_loraserver.png&amp;diff=56773</id>
		<title>Fichier:P62017 loraserver.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:P62017_loraserver.png&amp;diff=56773"/>
				<updated>2018-05-14T10:53:14Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:P62017_osmbed.png&amp;diff=56772</id>
		<title>Fichier:P62017 osmbed.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:P62017_osmbed.png&amp;diff=56772"/>
				<updated>2018-05-14T10:53:02Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:P62017_utiltxtest.png&amp;diff=56771</id>
		<title>Fichier:P62017 utiltxtest.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:P62017_utiltxtest.png&amp;diff=56771"/>
				<updated>2018-05-14T10:52:35Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Utiltxtest.png&amp;diff=56770</id>
		<title>Fichier:Utiltxtest.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Utiltxtest.png&amp;diff=56770"/>
				<updated>2018-05-14T10:46:53Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56768</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56768"/>
				<updated>2018-05-14T10:41:51Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 20 - 07/03/18 - 5H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point avec les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56757</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56757"/>
				<updated>2018-05-14T09:47:08Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 12 - 08/02/18 - 2H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai donc testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56755</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56755"/>
				<updated>2018-05-14T09:45:52Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 12 - 08/02/18 - 2H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenter et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56753</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56753"/>
				<updated>2018-05-14T09:36:43Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 9 - 01/02/18 - 2H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé de recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployé sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56401</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56401"/>
				<updated>2018-05-13T09:38:47Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Cahier des charges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
* Déployer une passerelle LoRaWAN&lt;br /&gt;
* Déployer des noeuds LoRa équipés de capteurs&lt;br /&gt;
* Déployer un serveur LoRaWAN&lt;br /&gt;
* Afficher les données des capteurs sur une page web&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56400</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=56400"/>
				<updated>2018-05-13T09:35:31Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures S11 !! Heures S12 !! Heures S13 !! Heures S14 !!   Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| Découverte matériel &lt;br /&gt;
| &lt;br /&gt;
| 3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| Passerelle (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| 10&lt;br /&gt;
|&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 18&lt;br /&gt;
|-&lt;br /&gt;
| Noeud (NucleoF4)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 8&lt;br /&gt;
| 37&lt;br /&gt;
|-&lt;br /&gt;
| Serveur LoRaWAN (RaspberryPi)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| &lt;br /&gt;
| 2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| 8&lt;br /&gt;
| 4&lt;br /&gt;
|&lt;br /&gt;
| 27&lt;br /&gt;
|-&lt;br /&gt;
| Récupération des données&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 9&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 19&lt;br /&gt;
|-&lt;br /&gt;
| TOTAL&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 114&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=55462</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=55462"/>
				<updated>2018-05-07T16:26:18Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 32 - 07/05/18 - 7H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 8H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=55461</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=55461"/>
				<updated>2018-05-07T16:26:04Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Semaine 13 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
&lt;br /&gt;
==Semaine 14==&lt;br /&gt;
===Séance 32 - 07/05/18 - 7H===&lt;br /&gt;
Cette séance à permis de réaliser de nombreuses avancées sur le projet.&lt;br /&gt;
&lt;br /&gt;
Un capteur de type DHT11 à été ajouté sur les objets connectés, ils renvoient maintenant la température et le taux d'humidité du milieu.&lt;br /&gt;
&lt;br /&gt;
Ce capteur va récupérer les valeurs et les envoyer dans le message LoRa sur 3 octets : le premier correspond à l'identifiant du capteur, le second à la température et le dernier à l'humidité.&lt;br /&gt;
&lt;br /&gt;
Ces données envoyées en LoRa sont récupérés par le broker MQTT et la page HTML permet de visualiser les données.&lt;br /&gt;
&lt;br /&gt;
Un service systemd à été créé sur la raspberryPi (impossible d'utiliser rc.local) permettant de n'avoir qu'a la brancher (connectée au réseau de l'école) pour que la passerelle soit prête.&lt;br /&gt;
&lt;br /&gt;
Enfin le broker MQTT à été sécurisé en interdisant les accès anonymes pour forcer l'authentification. Ainsi en définissant une liste des utilisateurs avec les mots de passe (chiffrés) sur le serveur du broker, et en indiquant les opérations (lectures/écritures) autorisées pour chaque utilisateur on restreint l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Les fichiers de configuration du loraserver, lora-app-server, lora-gateway bridge ont également été modifiés en conséquence.&lt;br /&gt;
&lt;br /&gt;
Le script PHP à lui aussi été modifié en faisant se connecter le client avant l'accès au broker.&lt;br /&gt;
&lt;br /&gt;
Le projet est maintenant fonctionnel. Les graphiques des valeurs des capteurs sont disponibles sur http://trappe.space (protégé par un mot de passe)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=55069</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=55069"/>
				<updated>2018-04-26T10:31:24Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Semaine 5 [EN COURS DE RÉDACTION] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=55068</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=55068"/>
				<updated>2018-04-26T10:31:11Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série intégrée au câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Seulement, en essayant de sauvegarder le firmware de la shield avec OpenOCD un message est apparu indiquant que la shield était protégée et que par conséquent toutes modifications entraînerait une remise à zéro du firmware.&lt;br /&gt;
Ne voulant pas risquer d'endommager la shield (ce qui entraînerait une perte de l'EUI, un identifiant unique au produit, défini à sa sortie de l'usine) et après discussion avec les professeurs encadrants, nous avons choisi de piloter la shield par le biais des commandes AT, sans toucher au firmware de base permettant déjà la communication en LoRaWAN.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Ayant décidé d'utiliser les commandes AT de la shield, il me fallait un moyen pour pouvoir automatiser l'envoie de ces commandes.&lt;br /&gt;
J'ai donc décidé de brancher l'UART du microcontrolleur sur celle de la shield, en croisant Tx-Rx.&lt;br /&gt;
De cette manière, en utilisant les serial printf de la librairie d'os mbed je serait en mesure d'envoyer les commandes AT depuis le Nucléo vers la shield.&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Durant cette séance j'ai rencontré un problème, l'envoie de mes commandes AT semblait bien s'effectuer, mais en revanche, la shield ne semblait pas les prendre en compte. j'avais pourtant bien défini le baudrate du Nucleo sur 115200 pour correspondre à celui de la shield.&lt;br /&gt;
&lt;br /&gt;
Je m'en suis aperçu en envoyant la commande pour changer la clé d'application (AK), en me reconnectant directement à la liaison série de la shield, la modification n'avait pas été prise en compte.&lt;br /&gt;
&lt;br /&gt;
Il y avait en fait plusieurs causes à cela : d'abord je finissait mes requêtes par &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;. En me documentant à ce sujet j'ai vu que bien souvent il faut terminer les requêtes par &amp;lt;code&amp;gt;\r\n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant, même une fois cela réglé le problème n'était pas résolu. J'ai alors ajouté des délais par le biais de &amp;lt;code&amp;gt;wait()&amp;lt;/code&amp;gt; après l'envoie de chaque commandes pour donner le temps à la shield de traiter les commandes, mais toujours sans succès. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Après de nombreuses recherches, j'ai finalement décidé de tenter une mise à jour du firmware des Nucléo vers leur dernière version, par le biais de l'utilisateur disponible sur le site de ST (https://os.mbed.com/teams/ST/wiki/Nucleo-Firmware)&lt;br /&gt;
&lt;br /&gt;
Après cette mise à jour, le programme que j'avais réalisé précédemment fonctionnait parfaitement.&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur l'implémentation de serveur LoRaWAN loraserver.io&lt;br /&gt;
&lt;br /&gt;
J'ai notamment testé l'envoie des messages uplink provenant des objets connectés vers un &amp;quot;testeur&amp;quot; de requêtes requestb.in&lt;br /&gt;
&lt;br /&gt;
Je voyais bien apparaître le contenu du message LoRaWAN, en clair (mais toujours codé en base64) à la fin de la chaîne de transmission.&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Pendant cette séance j'ai déployé un serveur web maison en C, permettant de traiter les requêtes GET.&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie, le serveur web maison ne convenait pas au traitement des requêtes post, et ne pourrait pas accueillir PHP.&lt;br /&gt;
J'ai alors installé Apache2 et PHP sur la RaspberryPi. N'ayant encore jamais utilisé PHP j'ai réalisé quelques tests afin de me familiariser avec l'outil. J'ai notamment réalisé un script réalisant la même fonction que requestb.in à savoir afficher sur une page web les requêtes POST reçues par une autre page de mon site. Le message est sous forme JSON, j'ai donc récupéré le champ 'data' correspondant aux véritable message (codé en base64), puis j'ai affiché le message en hexadécimal afin de retrouver le message original sur la page de mon site.&lt;br /&gt;
&lt;br /&gt;
Cette séance à permis de faire un point les professeurs encadrants :&lt;br /&gt;
- Site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa, afin de donner une utilité à l'application.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
Après la discussion de la séance précédente, j'ai décidé d'installer un certificat SSL sur mon site avec letsencrypt.&lt;br /&gt;
&lt;br /&gt;
Le problème est qu'un certificat est lié à un nom de domaine, sans cela, mon certificat sera auto signé et n'aura donc aucune valeur.&lt;br /&gt;
J'ai donc fais part à ce problème aux professeurs encadrants et il à été décidé d'attribuer à mon site un nom de domaine, on utilisera le domaine &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Cette séance m'a permis d'explorer les différents moyens d'intégration des données que propose loraserver. Il est possible de récupérer les données par le biais de requêtes POST comme testé précédemment, mais cela pose de grave problèmes au niveau de l'authenticité des requêtes.&lt;br /&gt;
&lt;br /&gt;
Il existe également une autre solution. Les serveurs loraserver et lora-app-server communiquent par le biais du protocole de communication MQTT. &lt;br /&gt;
Le protocole MQTT est un protocole basé sur TCP/IP. Les clients vont décider de s'abonner à des &amp;quot;sujets&amp;quot; sur un serveur. Lorsque d'autres clients enverrons des messages vers ces sujets, ils seront retransmis vers les clients abonnés. Ce protocole est très utilisé pour les objets connecté, la possibilité de l'utiliser en mode authentifié représente un réel atout pour garantir la sécurité des données.&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec les professeurs encadrants il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat letsencrypt en utilisant l'utilitaire certbot sur la machine virtuelle.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
J'ai finalement supprimé les fichiers de configuration d'Apache2 dans la machine virtuelle (relatifs au chiffrement), car toutes les redirection et les hôtes virtuels sont gérés sur par serveurs de Polytech.&lt;br /&gt;
&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer PHP sur la machine virtuelle afin de tester la récupération des requêtes POST (d'abord envoyés par le biais de l'utilitaire Curl pour les test).&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatif LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, mais j'ignore encore de quoi il s'agit.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le démarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la RaspberriPi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus acceptés car apparemment l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de me brancher directement sur une prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles réseaux.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Après avoir passé beaucoup de temps à tenter de résoudre ce problème j'ai décidé de vérifier que je n'avais pas fait d'erreur dans la configuration du serveur LoRaWAN. &lt;br /&gt;
&lt;br /&gt;
Je me suis alors rendu compte qu'une partie des fichiers de configuration était manquante... Ceci peut être du à une mise à jour incomplète du serveur ou à une autre fausse manipulation de ma part.&lt;br /&gt;
&lt;br /&gt;
J'ai donc remis le serveur LoRaWAN à jour, ceci à d'abord provoqué un conflit de version avec la base de données Postgresql. J'ai donc supprimé totalement la base de données et suivie à nouveau les opérations indiqués dans le guide de démarrage de loraserver (qui avait évolué depuis ma première visite).&lt;br /&gt;
&lt;br /&gt;
Le serveur refonctionne correctement, j'ai donc testé de rediriger les messages MQTT du loraserver vers un broker (serveur) situé sur la machine virtuelle&lt;br /&gt;
&lt;br /&gt;
Echec, le problème serait-il lié à l'utilisation du port 1883 ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
Après discussion avec le professeur encadrant, le port 1883 était bel et bien fermé.&lt;br /&gt;
&lt;br /&gt;
Après son ouverture le problème été résolu, et à l'aide d'un script PHP agissant comme un client MQTT se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes POST envoyés par le serveur LoRaWAN, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai rencontré plusieurs problèmes. D'abord, le serveur applicatif LoRaWAN semblait indiquer que mes messages dataient d'une semaine... Ceci provoquait même un rejet de certains messages. &lt;br /&gt;
&lt;br /&gt;
L'autre problème était le fait que lorsque mes 2 objets connectés envoient des messages sur le réseau, l'un d'entre eux semble &amp;quot;bloqué&amp;quot; c'est à dire que certains de ses messages sont refusés, pour cause d'un &amp;quot;dev-nonce&amp;quot; déjà utilisé, ou encore d'un mauvais &amp;quot;MIC or FCnt&amp;quot; (Code d'integrité du message, comme un checksum, et Conteurs de trames, pour éviter les replay-attacks)&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
Le problème de l'heure provenait du fait que ma RaspberryPi n'était relié à aucun serveur ntp, il est même étrange que ce problème ne survienne que maintenant. Avec l'aide du professeur encadrant la RaspberryPi est maintenant connectée au serveur ntp de Polytech, et les messages apparaissent bien à l'heure.&lt;br /&gt;
&lt;br /&gt;
En revanche le problème de &amp;quot;dev-nonce&amp;quot; déjà utilisé est plus délicat, il apparaît que l'utilisation de la même clé d'application sur les 2 objets connectés puisse être la cause du problème, mais il n'est pas clairement indiqué dans la spécification LoRaWAN qu'il est obligatoire d'avoir une clé d'application différente sur chaque objet connecté au réseau... &lt;br /&gt;
&lt;br /&gt;
Même en changeant la clé d'application sur l'un des 2 objets, le problème survient, de manière totalement aléatoire rendant cela particulièrement difficile à débugger.&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=55067</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=55067"/>
				<updated>2018-04-26T09:16:58Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Semaine 12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série du câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école dans une VM et administré en se connectant en SSH sur ladite VM&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Exploration des différents moyens d'intégration des données reçues depuis le serveur applicatif LoRaWAN&lt;br /&gt;
- HTTP&lt;br /&gt;
- MQTT&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec mon encadrant il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat Letsencrypt en utilisant certbot sur la VM.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
Suppression des fichiers de configuration d'Apache2 dans la VM (relatifs au chiffrement), toutes les redirection et hôtes virtuels sont gérés sur les serveurs de Polytech directement.&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/P6 (le problème de /P6 sera à régler ultérieurement)&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer php sur la VM afin de tester la récuperation des reqêtes POST (d'abord envoyés par le biais de Curl pour les test)&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatiçf LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, je ne sais pas encore quoi   &lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le dmarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc d'ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la Raspberripi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus accepté car apparement l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de ma brancher directement sur un prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Exploration de différentes pistes. Résolution en mettant à jour le serveur lorawan, des fichiers de configs avaient été supprimés par mégarde.&lt;br /&gt;
La nouvelle version a provoqué un conflit avec la BDD, supression et recréation de celle-ci.&lt;br /&gt;
Le serveur refonctionne correctement, test de redirection du mqtt vers un broker situé sur la machine virtuelle. Echec, ouverture de ports ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
L'ouverture du port 1883 à résolu le problème, à l'aide d'un script php agissant comme un client mqtt se chargeant de réécrire ce qu'il reçoit dans un fichier, on reproduit la même fonctionnalité qu'avec les requêtes post envoyés par le serveur lorawan, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
===Séance 30 - 11/04/18 - 4H===&lt;br /&gt;
&lt;br /&gt;
==Semaine 13==&lt;br /&gt;
===Séance 31 - 18/04/18 - 4H===&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=54679</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=54679"/>
				<updated>2018-04-09T17:26:48Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Semaine 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série du câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école dans une VM et administré en se connectant en SSH sur ladite VM&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Exploration des différents moyens d'intégration des données reçues depuis le serveur applicatif LoRaWAN&lt;br /&gt;
- HTTP&lt;br /&gt;
- MQTT&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec mon encadrant il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat Letsencrypt en utilisant certbot sur la VM.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
Suppression des fichiers de configuration d'Apache2 dans la VM (relatifs au chiffrement), toutes les redirection et hôtes virtuels sont gérés sur les serveurs de Polytech directement.&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/P6 (le problème de /P6 sera à régler ultérieurement)&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer php sur la VM afin de tester la récuperation des reqêtes POST (d'abord envoyés par le biais de Curl pour les test)&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatiçf LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, je ne sais pas encore quoi   &lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le dmarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc d'ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la Raspberripi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus accepté car apparement l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de ma brancher directement sur un prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Exploration de différentes pistes. Résolution en mettant à jour le serveur lorawan, des fichiers de configs avaient été supprimés par mégarde.&lt;br /&gt;
La nouvelle version a provoqué un conflit avec la BDD, supression et recréation de celle-ci.&lt;br /&gt;
Le serveur refonctionne correctement, test de redirection du mqtt vers un broker situé sur la machine virtuelle. Echec, ouverture de ports ?&lt;br /&gt;
&lt;br /&gt;
==Semaine 12==&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
L'ouverture du port 1883 à résolu le problème, à l'aide d'un script php agissant comme un client mqtt se chargeant de réécrire ce qu'il recoit dans un fichier, on reproduit la même fonctionnzalité qu'avec les requetes post envoyés par le serveur lorawan, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=54678</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=54678"/>
				<updated>2018-04-09T17:26:25Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Semaine 10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série du câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école dans une VM et administré en se connectant en SSH sur ladite VM&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Exploration des différents moyens d'intégration des données reçues depuis le serveur applicatif LoRaWAN&lt;br /&gt;
- HTTP&lt;br /&gt;
- MQTT&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec mon encadrant il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat Letsencrypt en utilisant certbot sur la VM.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
Suppression des fichiers de configuration d'Apache2 dans la VM (relatifs au chiffrement), toutes les redirection et hôtes virtuels sont gérés sur les serveurs de Polytech directement.&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/P6 (le problème de /P6 sera à régler ultérieurement)&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer php sur la VM afin de tester la récuperation des reqêtes POST (d'abord envoyés par le biais de Curl pour les test)&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatiçf LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, je ne sais pas encore quoi   &lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le dmarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc d'ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la Raspberripi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus accepté car apparement l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de ma brancher directement sur un prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles.&lt;br /&gt;
&lt;br /&gt;
==Semaine 11==&lt;br /&gt;
===Séance 28 - 03/04/18 - 4H===&lt;br /&gt;
Exploration de différentes pistes. Résolution en mettant à jour le serveur lorawan, des fichiers de configs avaient été supprimés par mégarde.&lt;br /&gt;
La nouvelle version a provoqué un conflit avec la BDD, supression et recréation de celle-ci.&lt;br /&gt;
Le serveur refonctionne correctement, test de redirection du mqtt vers un broker situé sur la machine virtuelle. Echec, ouverture de ports ?&lt;br /&gt;
&lt;br /&gt;
===Séance 29 - 09/04/18 - 4H===&lt;br /&gt;
L'ouverture du port 1883 à résolu le problème, à l'aide d'un script php agissant comme un client mqtt se chargeant de réécrire ce qu'il recoit dans un fichier, on reproduit la même fonctionnzalité qu'avec les requetes post envoyés par le serveur lorawan, mais cette fois ci, il y aura possibilité de le sécuriser par une authentification.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=54107</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=54107"/>
				<updated>2018-03-28T16:46:08Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 26 - 26/03/18 - 2H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série du câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école dans une VM et administré en se connectant en SSH sur ladite VM&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Exploration des différents moyens d'intégration des données reçues depuis le serveur applicatif LoRaWAN&lt;br /&gt;
- HTTP&lt;br /&gt;
- MQTT&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec mon encadrant il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat Letsencrypt en utilisant certbot sur la VM.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
Suppression des fichiers de configuration d'Apache2 dans la VM (relatifs au chiffrement), toutes les redirection et hôtes virtuels sont gérés sur les serveurs de Polytech directement.&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/P6 (le problème de /P6 sera à régler ultérieurement)&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer php sur la VM afin de tester la récuperation des reqêtes POST (d'abord envoyés par le biais de Curl pour les test)&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatiçf LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, je ne sais pas encore quoi   &lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance à ajouter de petites améliorations à ma RaspberryPi, l'objectif était d'automatiser le démarrage du packet forwarder lors du branchement de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Le packet forwarder démarre également le concentrateur LoRa, assujetti au problème de liaison SPI depuis la nouvelle version du noyau (version 4) de la RaspberryPi d'après le guide démarrage d'IMST.&lt;br /&gt;
Ceci requiert l’arrêt et le redémarrage du GPIO17 de la RaspberryPi relié au reset du concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
Cependant, même après cette manipulation, le dmarrage du packet forwarder peut échouer jusqu'a 5 fois avant de démarrer avec succès.&lt;br /&gt;
&lt;br /&gt;
J'ai donc conçu un script qui effectue le reset du concentrateur puis tente de lancer le packet forwarder jusqu'a ce qu'il réussisse.&lt;br /&gt;
&lt;br /&gt;
J'ai ensuite voulu automatiser le démarrage de ce script avec la RaspberryPi, j'ai donc ajouté le script dans le &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; mais j'ai par la suite compris que ce fichier n'était exécuté que lors d'une connexion par un utilisateur.&lt;br /&gt;
&lt;br /&gt;
J'ai donc d'ajouté la ligne de script dans le fichier &amp;lt;code&amp;gt;rc.local&amp;lt;/code&amp;gt; mais le script ne s'est pas lancé avec la Raspberripi, et tente maintenant de se lancer avec le passage en mode SU...&lt;br /&gt;
&lt;br /&gt;
Ceci sera réalisé lors d'une séance ultérieure.&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus accepté car apparement l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de ma brancher directement sur un prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=54106</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=54106"/>
				<updated>2018-03-28T16:34:04Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 27 - 28/03/18 - 4H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série du câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école dans une VM et administré en se connectant en SSH sur ladite VM&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Exploration des différents moyens d'intégration des données reçues depuis le serveur applicatif LoRaWAN&lt;br /&gt;
- HTTP&lt;br /&gt;
- MQTT&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec mon encadrant il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat Letsencrypt en utilisant certbot sur la VM.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
Suppression des fichiers de configuration d'Apache2 dans la VM (relatifs au chiffrement), toutes les redirection et hôtes virtuels sont gérés sur les serveurs de Polytech directement.&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/P6 (le problème de /P6 sera à régler ultérieurement)&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer php sur la VM afin de tester la récuperation des reqêtes POST (d'abord envoyés par le biais de Curl pour les test)&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatiçf LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, je ne sais pas encore quoi   &lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
Suite à mon problème de la semaine précédente j'ai décidé d'investiguer davantage. &lt;br /&gt;
Après avoir examiné les logs du serveur LoRa j'ai remarqué que les join request de l'end device n'étaient plus accepté car apparement l'appareil avait déjà utilisé le même numéro de requête pour un ancien join request.&lt;br /&gt;
J'ai recherché les causes possibles de cette erreur. Celle ci se déclenche visiblement lorsqu'un end-device renouvelle sa join request avant d'avoir obtenu une réponse.&lt;br /&gt;
&lt;br /&gt;
Pour lever toute ambiguïté, j'ai repris l'envoie manuelle de commandes AT par le port série de la radio LoRa.&lt;br /&gt;
&lt;br /&gt;
Sur mon réseau personnel, pas de problèmes, la console indiquait bien &amp;quot;+JoinAccepted&amp;quot;, idem lorsque la RaspberryPi n'était connecté à aucun réseau.&lt;br /&gt;
&lt;br /&gt;
Mais dès lors qu'elle se trouvait sur le réseau de l'école, plus moyen d'obtenir le join accepted.&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le professeur encadrant, j'ai testé de ma brancher directement sur un prise du mur (pour ne pas passer par le bridge de la Zabeth) mais sans succès, idem en testant avec d'autres câbles.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=54101</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=54101"/>
				<updated>2018-03-28T16:27:49Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Semaine 9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série du câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école dans une VM et administré en se connectant en SSH sur ladite VM&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Exploration des différents moyens d'intégration des données reçues depuis le serveur applicatif LoRaWAN&lt;br /&gt;
- HTTP&lt;br /&gt;
- MQTT&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec mon encadrant il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat Letsencrypt en utilisant certbot sur la VM.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
Suppression des fichiers de configuration d'Apache2 dans la VM (relatifs au chiffrement), toutes les redirection et hôtes virtuels sont gérés sur les serveurs de Polytech directement.&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/P6 (le problème de /P6 sera à régler ultérieurement)&lt;br /&gt;
&lt;br /&gt;
===Séance 25 - 21/03/18 - 4H===&lt;br /&gt;
Cette séance m'a permis d'installer php sur la VM afin de tester la récuperation des reqêtes POST (d'abord envoyés par le biais de Curl pour les test)&lt;br /&gt;
J'ai ensuite essayé de faire en sorte à ce que le serveur applicatiçf LoRaWAN renvoie les données sur https://trappe.space&lt;br /&gt;
Pour cela j'ai d'abord connecté la RaspberryPi sur le réseau de l'école (sur la 2ème carte réseau d'une Zabeth), celle ci avait donc une IP du réseau, et après avoir correctement paramétré les proxys http/https, je suis parvenu à accéder à internet.&lt;br /&gt;
J'ai donc testé mon réseau sur le serveur de l'école, mais ce fut un echec.&lt;br /&gt;
&lt;br /&gt;
J'ai donc retenté sur mon propre réseau (mon PC), cette fois ci pas de problèmes... Il y a donc quelque chose de bloquant sur le réseau de l'école, je ne sais pas encore quoi   &lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
===Séance 26 - 26/03/18 - 2H===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 27 - 28/03/18 - 4H===&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53723</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53723"/>
				<updated>2018-03-21T08:27:55Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Semaine 8 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série du câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école dans une VM et administré en se connectant en SSH sur ladite VM&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Exploration des différents moyens d'intégration des données reçues depuis le serveur applicatif LoRaWAN&lt;br /&gt;
- HTTP&lt;br /&gt;
- MQTT&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec mon encadrant il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat Letsencrypt en utilisant certbot sur la VM.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
===Séance 24 - 19/03/18 - 2H===&lt;br /&gt;
Suppression des fichiers de configuration d'Apache2 dans la VM (relatifs au chiffrement), toutes les redirection et hôtes virtuels sont gérés sur les serveurs de Polytech directement.&lt;br /&gt;
Le site web trappe.space est maintenant consultable en https, si l'utilisateur tente d’accéder à http://trappe.space il est redirigé sur https://trappe.space/P6 (le problème de /P6 sera à régler ultérieurement)&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53319</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53319"/>
				<updated>2018-03-14T15:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série du câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école dans une VM et administré en se connectant en SSH sur ladite VM&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
===Séance 22 - 12/03/18 - 2H===&lt;br /&gt;
Exploration des différents moyens d'intégration des données reçues depuis le serveur applicatif LoRaWAN&lt;br /&gt;
- HTTP&lt;br /&gt;
- MQTT&lt;br /&gt;
&lt;br /&gt;
===Séance 23 - 14/03/18 - 2H===&lt;br /&gt;
Après discussion avec mon encadrant il a été décidé qu'il serait judicieux d’héberger le site web sur les serveurs de l'école. Il faut donc mettre en place une connexion sécurisée par SSL/TLS.&lt;br /&gt;
&lt;br /&gt;
J'ai donc entrepris la procédure de génération de certificat Letsencrypt en utilisant certbot sur la VM.&lt;br /&gt;
&lt;br /&gt;
Ceci à permis de créer les différents fichiers nécessaires au chiffrement (clé privée &amp;amp; certificats). La procédure d'installation à également ajouté un hôte virtuel dans la configuration d'Apache2 sur le port 443.&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53253</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53253"/>
				<updated>2018-03-14T13:31:24Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 14 - 14/02/18 - 4H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série du câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Durant cette séance j'ai récupéré un programmeur JTAG. J'ai donc testé la procédure indiquée dans ce document : https://github.com/USIWP1Module/USI_I-NUCLEO-LRWAN1/blob/master/preloaded_firmware/WM-SG-SM-42%20Update%20Preloaded%20AT%20Command%20FW%20Application%20Note%20rev.%201.2.pdf pour tout d'abord sauvegarder le microcontrôleur afin de pouvoir le remettre en état en cas de problèmes. &lt;br /&gt;
&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école et administré en se connectant en SSH sur une VM&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53252</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53252"/>
				<updated>2018-03-14T13:26:48Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 13 - 12/02/18 - 2H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Afin de ne pas perdre une séance, et dans l'éventualité que le flashage du microcontrôleur de la shield se révèle infructueux, j'ai consacré cette séance à l'étude du fonctionnement des entrées/sorties du Nucleo F4 sur https://os.mbed.com/platforms/ST-Nucleo-F401RE/ &lt;br /&gt;
&lt;br /&gt;
J'ai d'abord appris à utiliser la liaison série du câble USB puis j'ai essayé d'utiliser celle des autres UARTS.&lt;br /&gt;
&lt;br /&gt;
Le Nucleo F401RE dispose de 6 UARTS. J'ai utilisé l'UART6 reliés aux pins PA11 et PA12 pour effectuer un simple &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école et administré en se connectant en SSH sur une VM&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53026</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53026"/>
				<updated>2018-03-09T00:11:13Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Semaine 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5 [EN COURS DE RÉDACTION]== &lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Documentation sur le Nucleo F4 et l'utilisation des pins in/out avec os.mbed&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école et administré en se connectant en SSH sur une VM&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53025</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53025"/>
				<updated>2018-03-09T00:10:23Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 13 - 12/02/18 - 2H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
Documentation sur le Nucleo F4 et l'utilisation des pins in/out avec os.mbed&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école et administré en se connectant en SSH sur une VM&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53024</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=53024"/>
				<updated>2018-03-09T00:08:58Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Semaine 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
Approfondissement du NucleoF4, nottament de la liaison série&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
===Séance 18 - 22/02/18 - 2H===&lt;br /&gt;
Lecture de documentation du loraserver, test de transmission des données uplink en HTTP (POST) vers un requestb.in &lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
===Séance 19 - 05/03/18 - 2H===&lt;br /&gt;
Déploiement d'un web serveur maison en c, traitement des requêtes GET: ok&lt;br /&gt;
&lt;br /&gt;
===Séance 20 - 07/03/18 - 5H===&lt;br /&gt;
Changement de stratégie car le serveur maison ne convient pas au traitement des requêtes post, installation de Apache2 sur la Rpi3, et de PHP, test des premiers script PHP permettant de recevoir les requêtes POST et d'afficher le champ 'data' sur une page web&lt;br /&gt;
&lt;br /&gt;
Point avec le professeur encadrant :&lt;br /&gt;
- site non sécurisé : il faudra passer en HTTPS&lt;br /&gt;
- Problème d'authentification des requêtes POST, comment s'assurer qu'elles proviennent bien du loraserver ?&lt;br /&gt;
- Régler le problème qui empêche les end devices de rejoindre un serveur lorsqu'elles sont rebootées. &lt;br /&gt;
- Trouver un moyen d'utiliser les capteurs présents sur la shield LoRa.&lt;br /&gt;
&lt;br /&gt;
===Séance 21 - 08/03/18 - 2H===&lt;br /&gt;
tentative d'installation d'un certificat SSL avec letsencrypt&lt;br /&gt;
Changement de stratégie : pour un certificat ssl valide, le site doit avoir un nom de domaine, on utilisera &amp;lt;code&amp;gt;trappe.space&amp;lt;/code&amp;gt;&lt;br /&gt;
Il sera donc finalement hébergé sur un des serveurs de l'école et administré en se connectant en SSH sur une VM&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=52979</id>
		<title>Discussion:Projets IMA4 SC &amp; SA 2017/2018</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=52979"/>
				<updated>2018-03-07T19:43:57Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Analyse du projet || Retour sur l'analyse || Matériel || Mi-parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation sans supports, bonne analyse de la concurrence. Par contre le scénario d'usage est à revoir en précisant l'usage pour le particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le scénario est précisé mais aucune réponse aux questions difficiles &amp;quot;gestion des températures et procédure d'entretien&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Si le contenu du Wiki reflète la quantité de travail fourni, c'est inquiétant.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation focalisée sur les réseaux de neurones. Exercice mal compris (pas d'introduction du contexte, pas de scénario d'usage).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours pas d'analyse de la concurrence, ni de scénario d'usage. Pas de réponse aux questions difficiles &amp;quot;quel est le matériel ? quel est le protocole ? quelles sont les entrées du réseau de neurones ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste mais il manque des références vers les fournisseurs agréés (voir page de l'an dernier).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Illustrez votre Wiki avec des schémas ou des photos de votre montage. Décrivez mieux votre plateforme de test et les résultats obtenus. Essayez de corriger les problèmes de français.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Architecture de la source d'énergie (nombre de chemins d'énergie ?)&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Vous devriez avoir quelques éléments sur la réalisation. Complétez votre Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Présentation focalisée sur la création du site Web. Effort fait pour rédiger un scénario d'usage.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Réponses aux questions mais l'analyse de la consommation est imprécise. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé dans la page Wiki mais à reporter en bas de la page des projets de cette année avec des références valides.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un effort de documentation mais illustrez par des schémas, des pages de l'application et des tests.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé. Scénario d'usage à préciser sur la partie réseau de capteurs.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Scénario d'usage non précisé. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence, êtes-vous sur que le matériel n'a pas besoin d'être acheté ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description de l'avancé du projet. N'hésitez pas à solliciter votre encadrant direct en cas de blocage !&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Pas de support. Exercice très bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de réponse aux questions difficiles &amp;quot;quelle alimentation ? comment faire pour différencier les briques ? comment les briques vont-elles communiquer ? quelle sécurité vis-à-vis des enfants ?&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description de l'avancé du projet. Faites un effort de formatage du texte (par exemple en utilisant des sous-titres plutôt que de souligner des lignes).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Rien à signaler (juste une confusion entre le MSP430 et le CC430).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Questions difficiles évacuées. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une bonne description de l'avancé du projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un peu rapide, exercice réalisé. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas d'analyse de la concurrence. Peu d'effort de rédaction. Des coquilles. Une réponse rapide à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais pas forcément exhaustif et sans référence valide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description de l'avancé du projet. Wiki agréable à lire.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Page Wiki vide, pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une bonne description de l'avancé du projet. Essayez de mieux formater votre texte pour une meilleure facilité de lecture.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Pas d'analyse de la concurrence, pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;L'analyse de la concurrence et le scénario d'usage ont été ajoutés. Par contre pas de réponse aux questions difficiles &amp;quot;quelle sera l'autonomie de la balle et quel sera le système de rechargement ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet au 18/02/2018&amp;lt;/font&amp;gt;. &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Wiki mis à jour en catastrophe le 19/02/2018. Peu d'informations, seul le routage d'une carte semble avoir été entrepris.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Trouver des concurrents indirects. Une histoire mais pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page Wiki modifiée après la présentation. Une réponse incomplète à la question difficile. Trop de coquilles pour ce niveau d'études.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Bonne description du travail. Cinq séances pour faire chauffer une résistance, n'est-ce pas trop ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune modification de la page Wiki depuis début octobre.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une bonne description de l'avancé du projet. Projet encore dans la phase de prototypage. Comment vous comptez recevoir une carte SIM ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Supports très textuels, pas de scénario d'usage mais une rédaction sur l'intérêt psychologique, pas vraiment de partie &amp;quot;concurrents&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un effort pour trouver des &amp;quot;concurrents&amp;quot;, pas de réponses aux questions difficiles &amp;quot;combien de LEDs ? quelle alimentation pour quelle autonomie&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Le travail est a peu près décrit mais la page Wiki ressemble a un brouillon.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Bonne présentation orale. Utilisation du bluetooth peu convainquant. Pas de scénario d'usage. Un &amp;quot;concurrent&amp;quot; trouvé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Concept de scénario d'usage non compris. Une réponse à la question difficile très rapide et non convaincante.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste de matériel dans la page Wiki mais à insérer dans le tableau en bas de la page principale. Pas de référence (voir sur la page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Le travail avec le prototype pilote de LEDs est très bien décrit et de façon agréable à lire. Par contre le schéma du futur circuit est très mal engagé. Il faut commencer par faire un schéma plus précis du collier.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Support assez corrects, sujet non entièrement compris, scénario d'usage minimal.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un problème dans le scénario d'usage : les conteneurs doivent être lancés sur un serveur. Une réponse acceptable à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet. Aucun travail ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Compte-rendu du travail très lapidaire et parfois illisible à cause des coquilles. Le Wiki ne donne pas l'impression que le projet avance.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation trop impécise, pas vraiment de scénario d'usage. Par contre des concurrents ont été présentés.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un scénario d'usage éloigné de la future utilisation. Trop de coquilles dans ce scénario. Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste du matériel mais pas dans la page principale. Pas de référence (voir page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Compte-rendu non à jour au 18/02/2018 alors que la feuille d'heures est à jour. Le Wiki manque d'illustration, par exemple donnez le schéma du circuit.&amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Des informations sur la carte en gestation&amp;lt;/font&amp;gt;.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte. Un concurrent assez peu en rapport avec les essaims de robots mais dans la ligne des dispositifs de déminage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Liste du matériel. Préciser pour le chassis.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Impossible de connaître l'avancé du projet à la lecture du Wiki. N'êtes-vous pas entrain de vous perdre dans vos problèmes avec FreeRTOS ?&amp;lt;/font&amp;gt; &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Objectif mal expliqué. Exercice réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Mieux définir l'objectif suite à la visite en entreprise. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Bonne description du travail. Votre Wiki manque d'illustrations sur un sujet qui le permet.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Excellente présentation et excellent travail préparatoire, Scénario d'usage à préciser, trouver des concurrents.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Tout simplement parfait !&amp;lt;/b&amp;gt; Bien illustré, bien rédigé, le travail est très bien décrit. Attention quand vous dites qu'un ATMega328p n'a pas assez de sorties pour commander 8 oscillateurs, il dispose tout de même de plus de 20 E/S.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice réussi. Cependant précisez les acteurs dans le scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de modification du scénario. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Rien à redire sur la liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Description du travail correct, des illustrations. Essayez de formater avec la syntaxe Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponses aux questions difficiles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Le travail effectué est décrit. Un nombre de coquilles non acceptable, la lecture en devient difficile. Utilisez la syntaxe de formatage du Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Sujet se prêtant peu à l'exercice mais très bonne présentation. Sujet travaillé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas vraiment de question, la suggestion est noté dans la page Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Description du travail un peu rapide (DNS leak quesako ?). Rédaction en cours au moment de la lecture du Wiki.&amp;lt;/font&amp;gt;&amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Effort de rédaction entre le 18/02/2018 et le 19/02/2018. Il manque des sections mais le travail effectué devient lisible.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Comment démarrer l'imprimante à distance ? Comment sera calibrée la plaque d’impression ?&lt;br /&gt;
Comment la plaque va se fixer sur le sol ? &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Tout simplement parfait !&amp;lt;/b&amp;gt; Bien illustré, bien rédigé, le travail est très bien décrit. Il est possible de mettre une copie d'écran de l'application de plus. Pas la peine de vous tirer dans les pattes.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le projet ne semble pas encore avoir été sérieusement étudié.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Net effort de documentation de la page Wiki. Pas de réponse directe à la question difficile sur la Kinect mais une discussion sur le problème posé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description du travail. Des illustrations mais il pourrait y avoir des photos du système robotino / kinect.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Contexte mal présenté, sujet flou. Scénario d'usage à préciser. Pas de contact avec les encadrants avant la présentation.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page de Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Compte-rendu rapide du travail. Ce compte-rendu est inquiétant. Il ne semble y avoir aucun résultat depuis le début du projet. Un module a été abandonné sans que le module en question n'ait été décrit ou que la raison de l'abandon ait été précisé. Attention votre projet est en voie d'échec.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page de Wiki assez vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Le robot centaure est en plus mauvais état maintenant qu'au début du projet. Vous semblez avoir une nouvelle fois abandonné votre projet.&amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Des ajouts mineurs au Wiki le 19/02/2018.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Présentation très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse à la question difficile. Page Wiki un peu vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un Wiki incomplet alors que la feuille d'heures est actualisée. Vous semblez toujours bloqués sur les problèmes d'étalonnage !&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Wiki avec quelques informations sur le travail accompli depuis fin novembre : étude sur modbus et labview. Quelques coquilles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Très peu d'illustrations. Texte mal formaté et avec des coquilles intolérable à ce niveau d'étude. Le compte-rendu donne l'impression d'une méthode de travail très brouillonne.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation sans support. Trouver des concurrents indirects. Pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet. Projet en échec ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki bien tenue. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Quelques éléments sur le matériel dans la page Wiki mais aucune liste avec références.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Tout simplement parfait !&amp;lt;/b&amp;gt; Bien illustré, bien rédigé, le travail est très bien décrit. Presque à jour. Vous n'aviez pas des cartes à faire fabriquer à l'extérieur ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki très complète. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une liste probablement pas exhaustive.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Exceptionnel !&amp;lt;/b&amp;gt; Très illustré, bien rédigé, le travail de recherche est très bien décrit. Je ne suis pas un fan de la mise en gras d'un quart du texte et la syntaxe Wiki n'est pas vraiment utilisée mais c'est du détail?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet. Projet en échec ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 Pré-projet 1|Robot hexapode pour escalier]]&lt;br /&gt;
| Erasmus &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Projet en échec constaté.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fiche de présence ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! Séance 1 (17/01) !! Séance 2 (24/01) !! Séance 3 (31/01) !! Séance 4 (7/02) !! Séance 5 (14/02) !! Séance 6 (21/02) !! Séance 7 (7/03) !! Séance 8 (14/03) !! Séance 9 (21/03) !! Séance 10 (28/03) !! Séance 11 (4/04) !! Séance 12 (11/04) !! Séance 13 (18/04)&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
|Quentin Boëns / Henri Carlier&lt;br /&gt;
|E304 &lt;br /&gt;
|E304/305&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|C201&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
|Ji Yang&lt;br /&gt;
|E306&lt;br /&gt;
|E303&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|E306&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| Alexis Viscogliosi / Abass Ayoub &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|E304 &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Alexis Viscogliosi Absent excusé pour entretien stage&amp;lt;/font&amp;gt;&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| Paul Ribeiro / Mehanna Naïf&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|E301 puis B309 puis B207&lt;br /&gt;
|E301&lt;br /&gt;
|E301&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
|  Antoine Gosse&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| Maëva Delaporte / Simon Blas&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| Baptiste Cartier&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| Amine El Messaoudi / Simon Feutrier&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| B207&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Jade Dupont&lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|Absence Maladie&lt;br /&gt;
|E304 &lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| Thomas Cunin / Thibault Cattelain&lt;br /&gt;
| E304&lt;br /&gt;
| B306/E304&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E304 - A305)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| Rémi Mairesse / Gustave Roux&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304 / C201&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|E302&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| Lirui Zhang / Lihe Zhang&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| Lijie Yao / Keren Qiang&lt;br /&gt;
| E303&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| Maxime Creteur / Gao Fan&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E303&lt;br /&gt;
|B309 puis B207&lt;br /&gt;
|E301&lt;br /&gt;
|E301&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| Amaury Knockaert / Fabrice Taingland&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304/E302&lt;br /&gt;
| C203/E306&lt;br /&gt;
| E306/E304&lt;br /&gt;
| Forum stages euratech/E304&lt;br /&gt;
| E304&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| Matthieu Delobelle&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E303 - C201&lt;br /&gt;
| E306 - C201&lt;br /&gt;
| E304&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| Benjamin Canu / Ganix Etcheguibel&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| Forum Euratech jusque 17h &amp;lt;br/&amp;gt; E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| Taky Djeraba / Thomas Hubert&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| Jean-Baptiste Watine / Antoine Untereiner&lt;br /&gt;
| E306/C201&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (C201) &amp;lt;/font&amp;gt;&lt;br /&gt;
| C205&lt;br /&gt;
| C205/E301&lt;br /&gt;
| C205/E301&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| Transley Gracias / Camille Saad&lt;br /&gt;
| E306 &lt;br /&gt;
| E306 &lt;br /&gt;
| E305&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| Xavier Chenot / Rodolphe Toin&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306 puis C201&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| Antoine Duquenoy / Anthony Durot&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| Eloi Zalczer / Justine Senellart&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E306/E302&lt;br /&gt;
|Hors Polytech/E302&lt;br /&gt;
|E302/E304&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| Damien Narbais / Zoé Briois&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E301)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E304 + 17h réunion C00X&lt;br /&gt;
| C205&lt;br /&gt;
| E304 + 17h réunion C00X&lt;br /&gt;
| A317&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| Hugo Delbroucq / Nicolas Havard &lt;br /&gt;
| E301&lt;br /&gt;
| INRIA&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt; (INRIA)&lt;br /&gt;
| E301&lt;br /&gt;
| E301 puis E304&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| Claire Vandamme / Alexandra Villa &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|Hors Polytech/B106&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absentes &amp;lt;/font&amp;gt;&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|Bureau de Mr Pekpe/E306&lt;br /&gt;
|C008&lt;br /&gt;
|- &lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| Florian Le Foll&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; (Pas de salle) &amp;lt;/font&amp;gt;E303&lt;br /&gt;
|E303&lt;br /&gt;
|E303&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| Carval Amaury/ Prud'Homme Geoffrey&lt;br /&gt;
| fabricarium &lt;br /&gt;
| fabricarium puis Hors Polytech&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
| Carval E306 - Preud'homme E301&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| Erwan Dufresne&lt;br /&gt;
| E302/E306&lt;br /&gt;
| E301&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
| E302&lt;br /&gt;
| E306&lt;br /&gt;
| E302&lt;br /&gt;
| Fabricarium&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 PP1|Robot hexapode pour escalier]]&lt;br /&gt;
| Eduardo Gomez &lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| Fabricarium&lt;br /&gt;
| Fabricarium&lt;br /&gt;
| C201&lt;br /&gt;
| C201/Fabricarium&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=52026</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=52026"/>
				<updated>2018-02-21T15:02:54Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Séance 17 - 21/02/18 - 4H */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=52021</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=52021"/>
				<updated>2018-02-21T14:56:14Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
===Séance 13 - 12/02/18 - 2H===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 14 - 14/02/18 - 4H===&lt;br /&gt;
Récupération du programmeur JTAG, tests avec OpenOCD, pas moyen de reprogrammer le processeur sans le réinitialiser&lt;br /&gt;
Abandon de cette méthode puisque risque de bloquer le matériel en perdant les clés de sécurité intégrés dans le firmware.&lt;br /&gt;
&lt;br /&gt;
===Séance 15 - 15/02/18 - 2H===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Séance 16 - 19/02/18 - 2H===&lt;br /&gt;
Recherches au sujet du problème de liaison série, tentative d'ajout de wait() pour ajouter du délai lors de l'envoi des commandes.&lt;br /&gt;
&lt;br /&gt;
===Séance 17 - 21/02/18 - 4H===&lt;br /&gt;
Solution au problème de liaison série pour la transmission des commandes AT :&lt;br /&gt;
- Mise à jour du firmware à la dernière version&lt;br /&gt;
- Retrait de la déclaration de l'interface série reliée au PC (https://github.com/ARMmbed/mbed-os/issues/5930)&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=51004</id>
		<title>Discussion:Projets IMA4 SC &amp; SA 2017/2018</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=51004"/>
				<updated>2018-02-15T01:36:15Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Analyse du projet || Retour sur l'analyse || Matériel || Mi-parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation sans supports, bonne analyse de la concurrence. Par contre le scénario d'usage est à revoir en précisant l'usage pour le particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le scénario est précisé mais aucune réponse aux questions difficiles &amp;quot;gestion des températures et procédure d'entretien&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation focalisée sur les réseaux de neurones. Exercice mal compris (pas d'introduction du contexte, pas de scénario d'usage).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours pas d'analyse de la concurrence, ni de scénario d'usage. Pas de réponse aux questions difficiles &amp;quot;quel est le matériel ? quel est le protocole ? quelles sont les entrées du réseau de neurones ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste mais il manque des références vers les fournisseurs agréés (voir page de l'an dernier).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Architecture de la source d'énergie (nombre de chemins d'énergie ?)&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Présentation focalisée sur la création du site Web. Effort fait pour rédiger un scénario d'usage.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Réponses aux questions mais l'analyse de la consommation est imprécise. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé dans la page Wiki mais à reporter en bas de la page des projets de cette année avec des références valides.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé. Scénario d'usage à préciser sur la partie réseau de capteurs.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Scénario d'usage non précisé. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence, êtes-vous sur que le matériel n'a pas besoin d'être acheté ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Pas de support. Exercice très bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de réponse aux questions difficiles &amp;quot;quelle alimentation ? comment faire pour différencier les briques ? comment les briques vont-elles communiquer ? quelle sécurité vis-à-vis des enfants ?&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Rien à signaler (juste une confusion entre le MSP430 et le CC430).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Questions difficiles évacuées. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un peu rapide, exercice réalisé. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas d'analyse de la concurrence. Peu d'effort de rédaction. Des coquilles. Une réponse rapide à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais pas forcément exhaustif et sans référence valide.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Page Wiki vide, pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Pas d'analyse de la concurrence, pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;L'analyse de la concurrence et le scénario d'usage ont été ajoutés. Par contre pas de réponse aux questions difficiles &amp;quot;quelle sera l'autonomie de la balle et quel sera le système de rechargement ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Trouver des concurrents indirects. Une histoire mais pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page Wiki modifiée après la présentation. Une réponse incomplète à la question difficile. Trop de coquilles pour ce niveau d'études.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune modification de la page Wiki depuis début octobre.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Supports très textuels, pas de scénario d'usage mais une rédaction sur l'intérêt psychologique, pas vraiment de partie &amp;quot;concurrents&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un effort pour trouver des &amp;quot;concurrents&amp;quot;, pas de réponses aux questions difficiles &amp;quot;combien de LEDs ? quelle alimentation pour quelle autonomie&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Bonne présentation orale. Utilisation du bluetooth peu convainquant. Pas de scénario d'usage. Un &amp;quot;concurrent&amp;quot; trouvé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Concept de scénario d'usage non compris. Une réponse à la question difficile très rapide et non convaincante.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste de matériel dans la page Wiki mais à insérer dans le tableau en bas de la page principale. Pas de référence (voir sur la page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Support assez corrects, sujet non entièrement compris, scénario d'usage minimal.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un problème dans le scénario d'usage : les conteneurs doivent être lancés sur un serveur. Une réponse acceptable à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation trop impécise, pas vraiment de scénario d'usage. Par contre des concurrents ont été présentés.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un scénario d'usage éloigné de la future utilisation. Trop de coquilles dans ce scénario. Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste du matériel mais pas dans la page principale. Pas de référence (voir page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte. Un concurrent assez peu en rapport avec les essaims de robots mais dans la ligne des dispositifs de déminage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Liste du matériel. Préciser pour le chassis.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Objectif mal expliqué. Exercice réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Mieux définir l'objectif suite à la visite en entreprise. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Excellente présentation et excellent travail préparatoire, Scénario d'usage à préciser, trouver des concurrents.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice réussi. Cependant précisez les acteurs dans le scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de modification du scénario. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Rien à redire sur la liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponses aux questions difficiles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Sujet se prêtant peu à l'exercice mais très bonne présentation. Sujet travaillé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas vraiment de question, la suggestion est noté dans la page Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Comment démarrer l'imprimante à distance ? Comment sera calibrée la plaque d’impression ?&lt;br /&gt;
Comment la plaque va se fixer sur le sol ? &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le projet ne semble pas encore avoir été sérieusement étudié.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Net effort de documentation de la page Wiki. Pas de réponse directe à la question difficile sur la Kinect mais une discussion sur le problème posé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Contexte mal présenté, sujet flou. Scénario d'usage à préciser. Pas de contact avec les encadrants avant la présentation.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page de Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page de Wiki assez vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Présentation très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse à la question difficile. Page Wiki un peu vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Wiki avec quelques informations sur le travail accompli depuis fin novembre : étude sur modbus et labview. Quelques coquilles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation sans support. Trouver des concurrents indirects. Pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki bien tenue. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Quelques éléments sur le matériel dans la page Wiki mais aucune liste avec références.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki très complète. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une liste probablement pas exhaustive.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 Pré-projet 1|Robot hexapode pour escalier]]&lt;br /&gt;
| Erasmus &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fiche de présence ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! Séance 1 (17/01) !! Séance 2 (24/01) !! Séance 3 (31/01) !! Séance 4 (7/02) !! Séance 5 (14/02) !! Séance 6 (21/02) !! Séance 7 (7/03) !! Séance 8 (14/03) !! Séance 9 (21/03) !! Séance 10 (28/03) !! Séance 11 (4/04) !! Séance 12 (11/04) !! Séance 13 (18/04)&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
|Quentin Boëns / Henri Carlier&lt;br /&gt;
|E304 &lt;br /&gt;
|E304/305&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
|Ji Yang&lt;br /&gt;
|E306&lt;br /&gt;
|E303&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|E306&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| Alexis Viscogliosi / Abass Ayoub &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|E304 &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Alexis Viscogliosi Absent excusé pour entretien stage&amp;lt;/font&amp;gt;&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| Paul Ribeiro / Mehanna Naïf&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|E301 puis B309 puis B207&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
|  Antoine Gosse&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| Maëva Delaporte / Simon Blas&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| Baptiste Cartier&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| Amine El Messaoudi / Simon Feutrier&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Jade Dupont&lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| Thomas Cunin / Thibault Cattelain&lt;br /&gt;
| E304&lt;br /&gt;
| B306/E304&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E304 - A305)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| Rémi Mairesse / Gustave Roux&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|E302&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| Lirui Zhang / Lihe Zhang&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| Lijie Yao / Keren Qiang&lt;br /&gt;
| E303&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| Maxime Creteur / Gao Fan&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E303&lt;br /&gt;
|B309 puis B207&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| Amaury Knockaert / Fabrice Taingland&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304/E302&lt;br /&gt;
| C203/E306&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| Matthieu Delobelle&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E303 - C201&lt;br /&gt;
| E306 - C201&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| Benjamin Canu / Ganix Etcheguibel&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| Taky Djeraba / Thomas Hubert&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| Jean-Baptiste Watine / Antoine Untereiner&lt;br /&gt;
| E306/C201&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (C201) &amp;lt;/font&amp;gt;&lt;br /&gt;
| C205&lt;br /&gt;
| C205/E301&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| Transley Gracias / Camille Saad&lt;br /&gt;
| E306 &lt;br /&gt;
| E306 &lt;br /&gt;
| E305&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| Xavier Chenot / Rodolphe Toin&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| Antoine Duquenoy / Anthony Durot&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| Eloi Zalczer / Justine Senellart&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E306/E302&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| Damien Narbais / Zoé Briois&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E301)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E304 + 17h réunion C00X&lt;br /&gt;
| C205&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| Hugo Delbroucq / Nicolas Havard &lt;br /&gt;
| E301&lt;br /&gt;
| INRIA&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt; (INRIA)&lt;br /&gt;
| E301&lt;br /&gt;
| E301 puis E304&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| Claire Vandamme / Alexandra Villa &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|Hors Polytech/B106&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absentes &amp;lt;/font&amp;gt;&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|- &lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| Florian Le Foll&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; (Pas de salle) &amp;lt;/font&amp;gt;E303&lt;br /&gt;
|E303&lt;br /&gt;
|E303&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| Carval Amaury/ Prud'Homme Geoffrey&lt;br /&gt;
| fabricarium &lt;br /&gt;
| fabricarium puis Hors Polytech&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
| Carval E306 - Preud'homme E301&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| Erwan Dufresne&lt;br /&gt;
| E302/E306&lt;br /&gt;
| E301&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
| E302&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=50418</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=50418"/>
				<updated>2018-02-08T20:56:44Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Scénario d'usage du produit ou du concept envisagé */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets UDP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=50417</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=50417"/>
				<updated>2018-02-08T20:56:27Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Réponse à la question difficile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets TCP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
''Quels sont les limites du sujet ?'' &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
''Quel tests seront effectués ?''&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
''Sous quelle forme se présenteront les End-Devices ?''&lt;br /&gt;
&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=50416</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=50416"/>
				<updated>2018-02-08T20:55:56Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Réponse à la question difficile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets TCP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
Quels sont les limites du sujet ? &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
&lt;br /&gt;
En tout premier lieu, le but du projet sera de déployer un réseau LoRaWAN opérationnel.&lt;br /&gt;
La passerelle sera d'abord déployée déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipé d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets UDP à une machine (serveur, ici ce sera la raspberrypi) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude de la certification LoRaWAN sera menée afin de déceler d'éventuelles failles pour mener une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, si le temps le permet, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
Quel tests seront effectués ?&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
Sous quelle forme se présenteront les End-Devices ?&lt;br /&gt;
Ce projet représentant une charge de travail conséquente, l'aspect esthétique des end-devices sera donc d'une priorité bien plus faible que faible priorité que la fonctionnalité du réseau.&lt;br /&gt;
Ainsi, il n'y aura pas de capteurs, les données seront simulées par des valeurs aléatoires.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=50415</id>
		<title>IMA4 2017/2018 P6</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P6&amp;diff=50415"/>
				<updated>2018-02-08T20:46:57Z</updated>
		
		<summary type="html">&lt;p&gt;Agosse : /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:P62017_LoRa.JPG|right|Salle informatique]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
On estime à 20 milliards le nombre d’objets connectés d’ici 2020. Parmis ces objets, un grand nombre d’entre eux feront parti de ce qu’on appelle l’Internet des Objets (IoT) permettant de bâtir les villes et bâtiments connectés.&lt;br /&gt;
La technologie LoRa (Long Range) est une des technologie permettant de créer des réseaux pour ces objets connectés.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Cette technologie s’appuie sur la modulation LoRa (une modulation à étalement de spectre, bande fréquence 868Mhz), couche physique du modèle OSI créé par la startup francaise Cycléo, racheté par la société Semtech en 2012. La technologie LoRa permet de créer des réseaux sans fils sécurisés longue portée (2km en ville, 15km en campagne) et basse consommation. &lt;br /&gt;
&lt;br /&gt;
Le protocole LoRaWAN constitue les couches supérieures du modèle OSI est est développé par l’alliance LoRa qui compte plus de 100 membres (des sponsors comme Semtech, IBM, Cisco, des contributeurs comme Microchip, des revendeurs comme IMST).&lt;br /&gt;
Il utilise la bande radio libre ISM (Industrielle, Scientifique &amp;amp; Médicale) pour connecter les objets embarquant des radios LoRa reliés au réseau par le biais de concentrateurs.&lt;br /&gt;
&lt;br /&gt;
Un réseau LoRaWAN est composé de 4 éléments :&lt;br /&gt;
&lt;br /&gt;
*Les appareils (End Devices) : Équipé de capteurs et d’une radio LoRa, communiquent avec les concentrateurs via le protocole LoRaWAN transmis par modulation LoRa. La spécification LoRaWAN distingue plusieurs classes d’appareils :&lt;br /&gt;
**Classe A : Les appareils peuvent communiquer à tout moment avec le serveur. Le serveur ne peut cependant communiquer avec les appareils que lorsqu’ils ouvrent leur fenêtre de réception (pendant un court instant après l’envoi de données au serveur). C’est la classe qui permet d’assurer une très basse consommation de l’appareil (&amp;gt;8 ans moyenne).	&lt;br /&gt;
**Classe B : Extension de la classe A, les appareils ouvrent leur fenêtre de réception périodiquement.&lt;br /&gt;
**Classe C : Extension de la classe A, les appareils ont leur fenêtre de réception ouverte en permanence (sauf lorsqu’ils émettent). Cette classe permet d’assurer le moins de latence possible, c’est toutefois la plus énergivore. &lt;br /&gt;
*Les passerelles (GateWay) composées d'un concentrateur lora et d'une machine hôte sur laquelle est installé un &amp;quot;packet forwarder&amp;quot; permettant de centraliser les données des appareils LoRa et de les convertir en paquets UDP. Ces paquets seront transmis à une machine serveur (Network Server).&lt;br /&gt;
*Le serveur LoRaWAN gère la réception des paquets de données et les convertit pour les envoyer à l’application de l’utilisateur. Il permet également d’adapter dynamiquement le débit de données et d’assurer les respect du temps d’utilisation de la bande radio (Duty Cycle)&lt;br /&gt;
*Le serveur d’application (Application Server) : Objectif final du réseau, permet d’exploiter les données reçues par les capteurs via une page web par exemple.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
Développer un réseau LoRaWAN &amp;quot;maison&amp;quot; et évaluer les possibilités d'attaques.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
De nombreux projets utilisent déjà la technologie LoRa mais se basent sur le serveur public The Thing Network. On fait ici le choix d'utiliser un serveur privé (sous forme d'un simple ordinateur) afin de contrôler au mieux la sécurité des données. (cryptées en AES-128 de bout en bout)&lt;br /&gt;
Le but de ce projet sera également de concevoir des appareils de coût relativement faible, le plus petit possible.&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
A l'heure actuelle, le seul vrai concurrent de LoRa en terme de possibilités est Sigfox, créé en 2009.&lt;br /&gt;
LoRa arrive donc 3 ans plus tard, mais les nombreux avantages par rapport à son concurrent lui permettent de s'immiscer sur le marché : &lt;br /&gt;
Taille maximale des messages : 242 octets (12 pour Sigfox)&lt;br /&gt;
Nombre de messages par jour illimités (à condition de respecter le duty-cycle) (140 msg/jour pour Sigfox)&lt;br /&gt;
Immunité contre les interférence élevé grâce à la modulation à étalement de spectre (basse pour Sigfox) &lt;br /&gt;
Coût d’installation et de maintenance faible (Sigfox nécessite un abonnement)&lt;br /&gt;
Open Source du moment qu’on achète les puces (Sigfox est propriétaire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
La 5G déjà en développement pourrait prendre un certain temps avant d'être courant sur le marché. Cependant, Orange à lancé la LTE-M, une évolution de la G spécialement dédié au objets connectés.&lt;br /&gt;
&lt;br /&gt;
LTE-M proposera des débits allant jusqu'a 10Mb/s et bénéficiera de l'itinérance puisqu'ils se base sur le réseau 4G existant.&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
Dans le cadre de sa politique d’amélioration continue, l’école Polytech Lille déploie un réseau LoRaWAN dans son établissement. Ce réseau longue portée et faible consommation permet l’installation de petits appareils dotés de capteurs dans les salles de classe permettant d’obtenir divers informations sur les salles pour réduire la consommation en énergie ou connaître l’occupation des salles.&lt;br /&gt;
Des capteurs de luminosité sont installés dans les salles et permettent de repérer les endroits où les lumières sont allumées. Des capteurs de température permettent de contrôler la température des salles. Des capteurs de contact installés sur les fenêtres permettent de détecter les fenêtres ouvertes. Des capteurs de présence permettent de savoir si la salle est occupée.&lt;br /&gt;
&lt;br /&gt;
Le réseau est composé d'un concentrateur LoRa, relié à une RaspBerryPi3 (installé dans un local technique de l'école) embarquant un programme de conversion des paquets LoRa en paquets TCP. &lt;br /&gt;
Les capteurs, associés à des micro contrôleurs de type Nucleo-F4 équipés de radios LoRa vont envoyer les informations au concentrateur. Celui-ci par le biais de la RaspBerryPi va envoyer les information sous forme de paquets TCP au serveur.&lt;br /&gt;
&lt;br /&gt;
L’utilisateur ciblé est l’appariteur de l’école, il pourra contrôler depuis une page web les différentes statut des capteurs lors de la fermeture le soir : fenêtres fermées, lumières éteintes, chauffage baissé raisonnablement, salles vides.&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
Quels sont les limites du sujet ? &lt;br /&gt;
&lt;br /&gt;
Le sujet est très vaste, il est donc nécessaire d'établir des limites claires dans ce qui sera réalisé.&lt;br /&gt;
&lt;br /&gt;
En tout premier lieu, le but du projet sera de rendre opérationnel.&lt;br /&gt;
Le concentrateur et la RaspBerryPi (machine hôte de ce concentrateur) devront être déployés.&lt;br /&gt;
Ensuite, il faudra tester la communication d'un End Device équipée d'une radio LoRa avec le concentrateur.&lt;br /&gt;
Puis le concentrateur devra être en mesure d'envoyer les paquets TCP à une machine (serveur) qui se chargera de les récupérer et d'extraire leur contenu par exemple sur une page web.&lt;br /&gt;
Quand le système sera opérationnel pour un End Device, le test portera sur la mise en réseau de 2 End Devices.&lt;br /&gt;
&lt;br /&gt;
Dans un deuxième temps, une étude approfondie sur les méthode de cryptage utilisées par LoRa sera menée, ainsi qu'une évaluation des différentes possibilités d'attaque sur le réseau. &lt;br /&gt;
&lt;br /&gt;
Enfin, il sera intéressant de faire des tests sur les performances du réseau LoRa.&lt;br /&gt;
&lt;br /&gt;
Quel tests seront effectués ?&lt;br /&gt;
&lt;br /&gt;
Des tests de portée seront réalisés afin de déterminer la distance maximale de réception des données sur le réseau LoRa.&lt;br /&gt;
Des tests de consommation énergétique seront menés afin d’estimer la durée de vie de la batterie ou des piles pour les End Devices.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
===Choix Matériel===&lt;br /&gt;
&lt;br /&gt;
Ce projet utilisera le concentrateur LoRa iC880A-SPI (http://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz)&lt;br /&gt;
&lt;br /&gt;
La machine hôte du concentrateur sera une RaspBerryPi3.&lt;br /&gt;
&lt;br /&gt;
Les micro-contrôleurs seront des Nucleo-F401RE (http://www.st.com/en/evaluation-tools/nucleo-f401re.html)&lt;br /&gt;
&lt;br /&gt;
Les modules radio seront des Shields I-NUCLEO-LRWAN1 (http://www.st.com/en/evaluation-tools/i-nucleo-lrwan1.html)&lt;br /&gt;
&lt;br /&gt;
===Choix Logiciel===&lt;br /&gt;
Ce projet ne requiert pas de logiciel particulier.&lt;br /&gt;
&lt;br /&gt;
le GitHub https://github.com/Lora-net contenant les implémentations de référence des différents éléments du réseau LoRa sera utilisé comme base pour programmer le concentrateur et les microcontrôleurs.&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
1. Déployer le concentrateur LoRa (et son système hôte sur la RaspberryPi)&lt;br /&gt;
&lt;br /&gt;
2. Mettre en place un End Devices et tester sa communication avec le concentrateur&lt;br /&gt;
&lt;br /&gt;
3. Tester le packet forwarder présents ur la RaspBerry Pi afin de convertir les paquets LoRa en paquets TCP vers le serveur.&lt;br /&gt;
&lt;br /&gt;
4. Analyser le processus de cryptage des données de bout en bout&lt;br /&gt;
&lt;br /&gt;
5. Trouver d'éventuelles possibilités d'attaque sur le réseau&lt;br /&gt;
&lt;br /&gt;
6. Tester les performance des éléments du réseau LoRaWAN&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
===Séance 1 - 15/01/18 - 3H===&lt;br /&gt;
Cette première séance de projet à permis de découvrir le matériel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:P62017_IC880ASPI.jpg|Concentrateur LoRa IC880A-SPI&lt;br /&gt;
File:P62017_NUCLEOF4.jpg|Microcontrôleur Nucleo-F401RE&lt;br /&gt;
File:P62017_LoraShield.jpg|Shield LoRa I-NUCLEO-LRWAN1&lt;br /&gt;
File:P62017_RPI3.jpg|RaspBerryPi3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à rendre le concentrateur IC880A-SPI opérationnel.&lt;br /&gt;
Pour cela il faut le connecter en SPI à la machine hôte (RaspBerryPi) selon les instructions données dans le guide de démarrage du concentrateur. (https://wireless-solutions.de/images/stories/downloads/Radio%20Modules/iC880A/iC880A-SPI_QuickStartGuide.pdf)&lt;br /&gt;
&lt;br /&gt;
On peut donc établir la correspondance de PIN suivante :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;margin: 0 auto;&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINRPI3.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
[[File:P62017_PINIC880ASPI.jpg|500px]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto;&amp;quot;&lt;br /&gt;
|+Correspondance des PINS IC880A-SPI &amp;lt;&amp;gt; RaspBerry3&lt;br /&gt;
|-&lt;br /&gt;
|21 (VDD)&lt;br /&gt;
|2  (+5V)&lt;br /&gt;
|-&lt;br /&gt;
|22 (GND)&lt;br /&gt;
|6  (GND)&lt;br /&gt;
|-&lt;br /&gt;
|14 (SPI_CLOCK)&lt;br /&gt;
|23 (SPI0_CLOCK)&lt;br /&gt;
|-&lt;br /&gt;
|15 (SPI_MISO)&lt;br /&gt;
|21 (SPI0_MISO)&lt;br /&gt;
|-&lt;br /&gt;
|16 (SPI_MOSI)&lt;br /&gt;
|19 (SPI0_MOSI)&lt;br /&gt;
|-&lt;br /&gt;
|17 (SPI_NSS)&lt;br /&gt;
|24 (SPI0_CE0)&lt;br /&gt;
|-&lt;br /&gt;
|13 (Reset)&lt;br /&gt;
|11 (GPIO_17)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Séance 2 - 17/01/18 - 5H===&lt;br /&gt;
L'objectif de cette séance était de rendre le rendre la RaspberryPi opérationnelle.&lt;br /&gt;
&lt;br /&gt;
Comme préconisé dans le guide de démarrage du concentrateur LoRa, une Raspbian Jessie à été flashé sur la microSD de la RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
Cependant il était impossible de connecter la RaspberryPi en liaison série à l'ordinateur. Après avoir exploré plusieurs pistes, et demandé conseil aux professeurs qui m'ont dirigé vers le wiki du BE PeiP, j'ai compris que mon erreur venait du fait que la RaspberryPi, depuis sa version 3 ne prend plus en charge la communication série par défaut.&lt;br /&gt;
&lt;br /&gt;
En effet, le Bluetooth est activé par défaut et monopolise les pins de la communication série. Il faut donc rentrer dans la partition &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; de la microSD et ajouter ajouter &amp;lt;code&amp;gt;enable_uart=1&amp;lt;/code&amp;gt; à la toute fin du fichier &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Malheureusement, après cette manipulation, la communication série ne fonctionnait toujours pas. Vers la fin de la séance j'ai finalement testé un autre câble usb/série. Le premier câble était bel et bien défectueux.&lt;br /&gt;
&lt;br /&gt;
Bien que le projet ai peu avancé durant cette séance, cela m'a permis d'acquérir un certain nombre de compétences qui me seront très utile par la suite. J'ai appris à installer un système d'exploitation sur RaspberryPi3. J'ai également appris à flasher une image sous linux et je suis parvenu à établir la connexion série sur la RaspberryPi3.&lt;br /&gt;
&lt;br /&gt;
===Séance 3 - 18/01/18 - 3H===&lt;br /&gt;
Disposant maintenant d'une connexion série sur la RaspberryPi, cette séance avait pour objectif d'établir l'accès en SSH depuis l'ordinateur et de connecter la RaspberryPi à internet pour pouvoir télécharger les paquets nécessaires au fonctionnement du concentrateur LoRa.  &lt;br /&gt;
&lt;br /&gt;
Après avoir essayé plusieurs méthodes de connexion j'ai finalement choisi la connexion en ethernet sur la 2ème carte réseau des ordinateurs Zabeth. J'ai paramétré la connexion en DHCP, la Raspberry est capable de pinger la Zabeth mais pour le moment pas d'accès à internet, probablement à cause du proxy.&lt;br /&gt;
&lt;br /&gt;
La connexion avec le hotspot de mon smartphone constitue une solution provisoire d'accès à Internet pour ma RaspberryPi.&lt;br /&gt;
En effet, il sera nécessaire d'établir une connexion ethernet avec une Zabeth puisque cette dernière jouera le rôle de network server.&lt;br /&gt;
&lt;br /&gt;
===Séance 3BIS - 19/01/18 - 2H===&lt;br /&gt;
Cette séance avait pour objectif de rendre le concentrateur opérationnel.&lt;br /&gt;
Après avoir branché le concentrateur en SPI à la RaspberryPi, celui-ci refusait de lancer le programme de test.&lt;br /&gt;
&lt;br /&gt;
L'erreur venait du fait qu'avant toute utilisation, le concentrateur doit se réinitialiser, par le biais d'un signal reset envoyé sur un GPIO de la RaspberryPi. Pour cela, j'ai utilisé le script disponible sur le git LoraNet de Semtech car l'extrait de code proposé dans le guide de démarrage du concentrateur ne semblait pas convenir.  &lt;br /&gt;
&lt;br /&gt;
A la fin de la séance le concentrateur parvenait à émettre grâce au programme de test &amp;lt;code&amp;gt;util_tx_test&amp;lt;/code&amp;gt;.&lt;br /&gt;
Bien que le projet ne requiert pas que le concentrateur émette vers les End Devices, ce test montre que l'accès SPI de la RasperryPi avec le concentrateur est fonctionnel. &lt;br /&gt;
&lt;br /&gt;
Les séances de la semaine prochaine seront dédiées à la création d'un EndDevice sur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
===Séance 4 - 22/01/18 - 2H===&lt;br /&gt;
Cette séance a permis de me familiariser avec le microcontrôleur NucleoF4.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi d'utiliser le compilateur en ligne d'ARM os.mbed.com puisqu'il ne nécessite aucune installation sur l'ordinateur, est gratuit et convient tout à fait à mon usage.&lt;br /&gt;
&lt;br /&gt;
Une fois le programme écrit et compilé, le site propose le binaire en téléchargement.&lt;br /&gt;
&lt;br /&gt;
Selon le manuel d'utilisation il suffit de copier le binaire sur le NucleoF4, d'appuyer sur le bouton reset de celui-ci pour téléverser le programme.&lt;br /&gt;
&lt;br /&gt;
Cependant, même en suivant les instruction à la lettre je n'ai pas obtenu de résultats satisfaisants. Les périphériques USB n'étant pas directement montés lors du branchement sur les Zabeth, il fallait le faire à la main. Le seul problème était qu'il fallait ensuite le démonter puis débrancher le microcontrôleur, et enfin le rebrancher pour que le programme prenne effet.&lt;br /&gt;
&lt;br /&gt;
Je rechercherai donc une solution à ce problème pour la prochaine séance.&lt;br /&gt;
&lt;br /&gt;
J'ai également profité de cette séance pour me documenter sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
Cette shield est très peu documenté, les seules ressources que j'ai trouvé se trouvent sur le github https://github.com/USILoRaModule/USI_I-NUCLEO-LRWAN1 de la société USI qui commercialise ce produit. &lt;br /&gt;
&lt;br /&gt;
Ceci m'a guidé vers le package I-CUBE-LRWAN distribué par ST.com &lt;br /&gt;
Selon la documentation, ce package permet de créer une End Device de classe A sur NucleoLX et est compatible avec la shield I-NUCLEO-LRWAN1 de USI.&lt;br /&gt;
Comme les série NucleoFX et NucleoFX sont assez semblables je pense que mon contrôleur NucleoF4 conviendra.&lt;br /&gt;
&lt;br /&gt;
===Séance 5 - 24/01/18 - 5H===&lt;br /&gt;
J'ai commencé par chercher une solution à mon problème de téléversement sur le NucleoF4. Après recherches, j'ai trouvé l'utilitaire ST-Flash sur le github https://github.com/texane/stlink. Cet utilitaire permet de flasher la mémoire du NucleoF4 et après tests, convient parfaitement à mes attentes.&lt;br /&gt;
&lt;br /&gt;
Mon objectif était ensuite de réussir à faire communiquer mon NucleoF4 avec mon concentrateur LoRa.&lt;br /&gt;
&lt;br /&gt;
J'ai pour cela d'abord testé les implémentations de test fournies sur le github lora-net pour développer un end device de classe A.&lt;br /&gt;
&lt;br /&gt;
Comme la radio LoRa de la shield est de type SX1272 j'ai utilisé le programme http://developer.mbed.org/teams/Semtech/code/LoRaWAN-demo-72/ fourni pour Semtech.&lt;br /&gt;
&lt;br /&gt;
Je suis alors confronté à un problème : comment savoir si cette implémentation est adaptée pour ma shield lora ?&lt;br /&gt;
&lt;br /&gt;
===Séance 6 - 25/01/18 - 2H===&lt;br /&gt;
Cette séance m'a permis de me documenter davantage sur la shield LoRa I-NUCLEO-LRWAN1.&lt;br /&gt;
&lt;br /&gt;
J'ai trouvé des morceaux de codes pour ce module, dont un code de test &amp;quot;ping-pong&amp;quot; permettant à 2 appareils LoRa de communiquer entre eux (permet principalement de tester les modules). Cependant, je n'arrive pas à importer le projet sur os.mbed.&lt;br /&gt;
&lt;br /&gt;
Je vais donc continuer de me documenter et essayer de travailler depuis un IDE afin de voir si j'obtiens de meilleurs résultats.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 7 - 29/01/18 - 2H===&lt;br /&gt;
La mise en place d'un émetteur LoRa est plus longue que prévue, je suis bloqué depuis une semaine sur mon problème de shield LoRa très peu documentée.&lt;br /&gt;
&lt;br /&gt;
Disposant du projet de test fourni pour ST j'ai essayé d'utiliser l'IDE gratuit basé sur Eclipse pour STM32 &amp;quot;System Workbench for STM32&amp;quot; proposé par http://www.openstm32.org/&lt;br /&gt;
&lt;br /&gt;
Après avoir relu en détail les datsheets de I-CUBE-LRWAN j'ai finalement trouvé l'information qu'il me manquait.&lt;br /&gt;
&lt;br /&gt;
Les projets disponibles dans le package I-CUBE contiennent en fait un projet ouvrable dans l'IDE SW4STM32 précédemment téléchargé.&lt;br /&gt;
&lt;br /&gt;
Je vais donc pouvoir tester le &amp;quot;ping-pong&amp;quot; à la prochaine séance, et peut être même l'implémentation d'un End Device de classe A si tout se passe bien.&lt;br /&gt;
&lt;br /&gt;
===Séance 8 - 31/01/18 - 4H===&lt;br /&gt;
Cette séance aurait du être consacrée intégralement à l'implémentation de mon End Device.&lt;br /&gt;
&lt;br /&gt;
Cependant, en essayant de démarrer mon concentrateur en début de séance, celui-ci refusait de démarrer. J'avais déjà rencontré ce problème auparavant, mais je le résolvais en redémarrant la raspbery pi.&lt;br /&gt;
&lt;br /&gt;
Les recherches ont mises en avant que le problème pouvait provenir de la version du noyau de ma distribution Raspbian. Apparemment, il y aurait un problème de communication en SPI entre la raspebrry et le concentrateur à cause d'une modification de la vitesse de transmission maximale en SPI autorisée par la raspberry.&lt;br /&gt;
&lt;br /&gt;
J'ai donc tenté de changer ma distribution en prenant une Jessie plus ancienne, avec un noyau version 3, comme conseillé sur le guide du IC880A-SPI.&lt;br /&gt;
&lt;br /&gt;
Cependant, la raspberrypi3 ne supporte visiblement pas les version plus ancienne du noyau, le système refusait de démarrer.&lt;br /&gt;
&lt;br /&gt;
J'ai donc réinstallé une raspian version Stretch. Après avoir remis l'ensemble des librairies et l'implémentation du service pour le concentrateur, celui-ci était plus stable.&lt;br /&gt;
&lt;br /&gt;
Le problème de connexion entre la raspberrypi et le concentrateur est donc résolu.&lt;br /&gt;
&lt;br /&gt;
===Séance 9 - 01/02/18 - 2H===&lt;br /&gt;
J'ai consacré cette séance au paramétrage réseau de ma raspberrypi. En effet, la restauration du système m'ayant fait perdre toute mes configurations réseaux j'ai décidé recommencer cela proprement. J'ai également choisi d'utiliser mon ordinateur personnel afin de gagner du temps lors des séances (notamment pour le paramétrage réseaux de ma raspberrypi, l'ip changeant d'un PC à un autre).&lt;br /&gt;
&lt;br /&gt;
J'utilise donc la carte eth0 de ma raspberrypi que je relie par un pont à la carte wifi de mon ordinateur. De cette manière je peux quand même accéder à ma raspebrrypi en SSH même si mon ordinateur n'est pas connecté à Internet.&lt;br /&gt;
&lt;br /&gt;
Ceci est primordiale puisque le serveur LoRaWAN sera déployer sur la raspberryPi.&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
===Séance 10 - 05/02/18 - 2H===&lt;br /&gt;
Cette séance à encore été consacrée à tenter de déployer un émetteur LoraWAN.&lt;br /&gt;
Je me suis re documenté au sujet de la Shield I-NUCLEO-LRWAN1, et j'ai découvert de nouveaux élements, des schematics fraichement rajoutées sur le github d'USI. Ceci m'a permis de mieux comprendre la manière dont est conçue la shield et de tester les AT Commands via la liaison série de la shield. Je suis parvenu à envoyer des packets LoRaWAN de cette manière, mon concentrateur les repère effectivement.&lt;br /&gt;
&lt;br /&gt;
Cependant cette solution n'est pas viable puisque l'envoie des commandes est manuel.&lt;br /&gt;
&lt;br /&gt;
===Séance 11 - 07/02/18 - 5H===&lt;br /&gt;
Après avoir passé de nombreuses heures à tenter de déployer ma node LoRaWAN en vain, j'ai décidé de faire une pause sur cette étape pour m'occuper du déploiement d'un serveur LoRaWAN. En effet, je dispose d'une node qui est tout de même capable d'envoyer des paquets LoRaWAN (de façon manuelle certes), ce qui est suffisent pour tester mon réseau.&lt;br /&gt;
&lt;br /&gt;
J'ai choisi l’implémentation de serveur loraserver.io, une solution open-source pour déployer un serveur LoRaWAN privé.&lt;br /&gt;
Ceci consiste en 3 modules : Le gateway bridge qui remplace le packet forwarder fournie pour Semtech et sera déployé sur le concentrateur, le server lorawan à proprement parler et le serveur applicatif, notamment utilisé pour l'administration.&lt;br /&gt;
J'ai donc suivi la procédure d'installation, installé mosquitto (pour MQTT) et Postgresql et Redis.&lt;br /&gt;
&lt;br /&gt;
Une fois les 3 service correctement paramétrés, je pouvais avoir accès au panneau d'administration depuis mon ordinateur, en me connectant à l'adresse https://192.168.43.75:8080&lt;br /&gt;
&lt;br /&gt;
J'ai donc rapidement paramétré un end device de classe A en rentrant notamment l'EUI et les clefs de chifrementt et à la fin de la séance je suis parvenu à voir depuis mon panneau d'administration les packets envoyés par AT Command depuis mon end device.&lt;br /&gt;
&lt;br /&gt;
Bien que le serveur LoRaWAN soit fonctionnel, il conviendra de s'attarder sur les différents points de configuration afin de peaufiner le paramétrage de celui-ci et également trouver une manière de récupérer les données des packets.&lt;br /&gt;
&lt;br /&gt;
===Séance 12 - 08/02/18 - 2H===&lt;br /&gt;
Je suis donc retourné sur mon problème de Shield I-NUCLEO-LRWAN1.&lt;br /&gt;
J'ai donc continué de me documenté et j'ai fini par comprendre que l'implémentation fournie sur le github d'USI est faite pour tourner sur le STM32 intégré dans la shield et non sur le NucleoF4.&lt;br /&gt;
&lt;br /&gt;
En effet, ceci semble assez logique maintenant puisque les définitions des PINS coïncident avec les pins du microcontrôleur de la shield.&lt;br /&gt;
&lt;br /&gt;
J'ai découvert qu'il fallait flasher ce microcontrôleur à l'aide d'une liaison série, SWD ou JTAG.&lt;br /&gt;
&lt;br /&gt;
Disposant uniquement d'un câble USB -&amp;gt; Série, j'ai testé cette solution. Tout d'abord j'ai testé de sauvegarder le contenu du microcontrôleur pour pouvoir le restaurer en cas de problèmes.&lt;br /&gt;
&lt;br /&gt;
J'ai don testé l'outil fournie sur le github d'USI qui utilise OpenOCD. Cependant, celui-ci ne prend pas en charge la laison série pour la sauvegarde et le flashage du microcontrôleur.&lt;br /&gt;
&lt;br /&gt;
Je vais donc essayer de me procurer un câble USB -&amp;gt; SWD ou USB -&amp;gt; JTAG pour pouvoir explorer cette piste, qui pourrait bien se révéler fructueuse.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Agosse</name></author>	</entry>

	</feed>