BARDIANI

Florian

oui
Le projet Création d'un serveur MQTT avec base de donnée à été réalisé par QUADRELLI Romain & BARDIANI Florian.

Les contraintes de ce projet ont été d'avoir une obligation d'utiliser un serveur MQTT et que tout les autres projet puisse discuter avec ce dernier.

A savoir que MQTT est un protocol de transmission de données "Message Queue Telemetry Transport".

Ainsi, aprés quelque recherche, nous avions trouvés le programme Mosquitto, simple d'utilisation et rapide d'installation, Mosquitto fût le programme qui a su répondre à nos attente.

N'ayant pas besoin de créer quelconque sécurité du fait que tout cela soit fait dans un réseau local, alors il eu juste fallut faire ceci :


On peut voir sur cette image que le serveur est en cours d'écoute sur le port 4242
Source :Mosquitto
oui

Comment fonctionne le protocol MQTT ?

Le protocole MQTT fonctionne à l'aide de différent outil :

Publishers: Ce sont les clients qui publie leurs données.
Topics: C'est l'endroit où les clients publies leurs données.
Broker: C'est le nom spécifique pour le serveur.
Subscribers: Ce sont ceux qui s'abonne à un topics pour lire les données/prendre les données.

Lors de notre projet, nous avons plus de 18 publishers à notre serveur, il a donc fallut créer des topics à l'aide d'un script PHP (Voir plus bas) pour faire en sorte que les clients puisse communiquer avec le Broker.

Sur l'image suivante, nous pouvons voir la disposition que nous avions créer.


Ainsi, une fois la dispostion mis en place, le choix des topics à été trés simple.
Les topics fonctionnent commme un système de fichier Unix :

Par exemple : /broker/rasbperry1/Groupe1.
Ainsi pour notre projet, ayant des groupes à différent endroit avec différentes mesures, voici comment nous avons procédé.
(Voir image de gauche)



oui

Gestion de la base de données

Une fois le serveur et les topics de crée, il reste à faire la base de données et les scripts PHP,
Nous allons commencer par la base de données.

Nous avons choisi MySQL malgré que certain de nos profs nous ont conseillé 'Influx' mais cette Base de données ne fonctionne pas avec des tables tel que MySQL.
Du coup, l'ayant appris à l'IUT, nous avons quand même préféré choisir MySQL, ce qui nous permettra d'être plus à l'aise lors de l'utilisation.

MySQL utilise SQL comme language pour pouvoir créer des tables ou inserer des valeurs, ce language nous permettra d'être utilisé par PHP (que nous verrons aprés).

Pour les tables que nous avons crée, nous avons quelques problèmatiques à résoudre :

  1. Pouvoir être utilisée par Graphana pour le site web
  2. Être compris et utilisé par quelqu'un de non confirmée
  3. Avoir toutes les informations concernant une valeur précise


Premièrement, nous avions décidé de créer une table principal et quatre tables de correspondance,cela donne le schéma suivant :



Sur le schéma ci-dessus, nous avons donc la table 'Projet' et la table 'capteurs' servent à identifier le groupe et le raspberry pi qui envoie la donnée 'valeur'.


Ainsi la table 'donnee' et la table 'nature' servent à identifier la nature de la valeur, cela sert surtout à savoir si cela est un pourcentage ou même des degré °C (ou les deux).

Mais aussi, nous pouvons voir dans la table 'mesures' il n'y aura que des chiffres correspondant aux différents 'id' des autres tables. A savoir que la colonne 'dateHeure' est gérer par le script php que nous verrons plus tard.


Gestion du tranfert des données

Pour le transfert de données, nous avons choisie de prendre le language de programmation PHP, l'ayant déjà appris à l'IUT et voulant la possibilité de communication avec la Base de données.

A l'aide de notre professeur M.Borelly, et du projet Bluerhinos,nous avons crée les scripts suivant :

https://github.com/bluerhinos/phpMQTT