lundi 23 mars 2020

Serveur ESP32 : implémentation (5ème partie)


Serveur ESP32 : implémentation

(5ème partie)


Ceci est la suite des quatre articles précédents :
Serveur ESP32 : implémentation
Serveur ESP32 : implémentation (2ème partie)
Serveur ESP32 : implementation (3eme-partie)
Serveur ESP32 : implementation (4eme-partie)

Dans cette 5ème partie nous allons nous occuper de la gestion des données des abonnés.
Comme vu dans l'article précédent ces données seront gérées sous forme de fichiers dans une partition FAT.

Rappel : seul l'ESP32 pourra offrir une possibilité de partitionnement entre SPIFFS et FAT.
Pour un ESP8266 il faudra forcément utiliser une SD.

1. Le fichier abonnés principal

Ce fichier contient les données principales :
  • nom de l'abonné
  • ID de l'abonné (N° de carte)
  • son état (actif, désactivé)
  • son solde
Ce fichier comporte une ligne par abonné :

Unknown:0,0,0
Henri Bachetti:1158992794,1,15
Martin Hirsch:1436301657,1,10
Michelle Tournier:1436648937,1,5
Jean Lain:1437378937,1,10
Arthur Leroy:1437071625,1,10
Sarah Humbert:-1011506900,1,5


Il est lu au démarrage et les données sont placées en mémoire RAM.

A chaque opération (ajout de crédit, désactivation, réactivation, etc.) le fichier est mis à jour.

2. Les fichiers historique

Pour chaque abonné il y un fichier historique à son nom.
Ce fichier retrace toutes les opérations effectuées sur son compte, avec les dates :

23/03/2020 15:16 : +10 credits
23/03/2020 15:19 : deactivated
23/03/2020 15:19 : activated
23/03/2020 15:19 : 0 credits
23/03/2020 15:19 : +5 credits


3. Mode opératoire

3.1. Nouvel abonné

Pour ajouter un nouvel abonné, un nouveau bouton "Add a new subsciber" est ajouté :

Cliquer sur ce bouton provoque l'affichage d'une nouvelle page :

Il suffit d'entrer le nom, d'approcher la carte du lecteur et cliquer sur le bouton "Read media".

Un message d'erreur sur fond rouge est affiché dans le champ status si :
  • l'utilisateur existe déjà
  • la carte n'est pas présentée ou illisible
  • il ne reste plus de place dans la partition FAT
  • une erreur d'écriture se produit
Sinon, on revient au formulaire principal et les données de l'abonné sont affichées avec un message "Subscriber is OK" sur fond vert.

3.2. Opérations abonné

Pour effectuer une opération pour un abonné il est possible de procéder de différentes manières :
  • approcher la carte du lecteur et cliquer sur le bouton "Read media". Le formulaire présentera les données de l'abonné.
  • recherche l'abonné par son nom ou son N° de carte
  • utiliser le bouton "abonnés.
Un message d'erreur sur fond rouge est affiché dans le champ status si :
  • l'utilisateur n'existe pas
  • la carte n'est pas présentée ou illisible
Ensuite il faut choisir l'opération à effectuer et cliquer sur OK. Le formulaire affrichera les nouvelles données de l'abonné.
Un message d'erreur sur fond rouge est affiché dans le champ status si :
  • il ne reste plus de place dans la partition FAT
  • une erreur d'écriture se produit
Sinon un message est affiché sur fond vert :
  • 1 credit added
  • 5 credit added
  • 10 credit added
  • Credits = 0
  • Subscriber is OK
En cas de désactivation de l'abonnement, un message "Subscriber is DEACTIVATED !!!" est affiché sur fond rouge.

4. Améliorations et petits trucs

4.1. Libellés cliquables

Les libellée des boutons radios sont maintenant cliquables :

<input type="radio" name="action" id=add1 value="add1" checked>
<label for="add1">Add 1 credit</label>


4.2. Explorateur

Un explorateur de fichier est accessible au moyen d'une URL cachée.
Elle n'est pas accessible depuis le formulaire d'accueil (pas de bouton, pas de lien hypertexte, il faut la taper manuellement dans la barre du navigateur) :
http://xxx.xxx.xxx.xxx/explore.html :

Cette page permet de visualiser les différents fichiers présents, et même de les détruire.
Elle est très utile pour contrôler le contenu des fichiers en cours de développement.

4.3. Nettoyage

Une autre URL cachée permet d'effacer tous les fichiers et de recréer un fichier abonnés vide :
http://xxx.xxx.xxx.xxx/wipe.html :

Cette URL est utilisée pour nettoyer le serveur en cours de développement, si l'on a écrit de mauvais contenus dans un plusieurs fichiers, donc en cas de bug, et que l'on veut repartir de ZÉRO.

5. BITBUCKET

Comme on l'a vu tout au long de ces quelques articles j'ai utilisé les services du serveur BITBUCKET pour partager mon travail.
BITBUCKET est un serveur git, au même titre que GITHUB.

A chaque nouvel article une nouvelle version est née (v1.0, v1.1, v2.0, v2.1).
Toutes ces versions sont encore diponibles, alors que si j'avais travaillé en local sur son PC, faire la même chose aurait été bien plus fastidieux.
Avec git le partage est grandement facilité.

git offre des facilités qui rendent la vie du développeur bien plus agréable. Par exemple comparer deux versions d'un fichier pour examiner les différences est un jeu d'enfant.

git nécessite un petit apprentissage, mais cela en vaut vraiment la peine. Il peut s'interfacer avec certains IDE, comme VisualStudioCode ou Eclipse.

6. Téléchargement

Cette version 2.1 est disponible ici :
https://bitbucket.org/henri_bachetti/webserver-form/src/v2.1/esp32-subscriber/

7. Liens utiles

La suite :
Serveur ESP32 : tests automatisés
Serveur ESP32 : tests automatisés (2ème partie)
Serveur ESP32 : implémentation (6eme-partie)

8. Conclusion


Le développement d'un petit serveur de ce genre sur ESP32 est très amusant et il est possible de lui associer très facilement une partie matérielle, ici un lecteur RFID.
Comme on le voit au paragraphe 4, il ne faut pas hésiter à doter le serveur de quelques petits outils qui facilitent la mise au point et le contrôle du résultat, et rendent donc les tests bien plus faciles.


Cordialement
Henri

Aucun commentaire:

Enregistrer un commentaire