jeudi 8 août 2019

JSON, Flask et "Quality of life" pour Arduino

J'essaie d'implémenter la gestion d'évènements et les utiliser comme déclencheur mais le tout devient un peu tannant de déboguer avec seulement un output texte et des nombres comme identifiant. J'ai donc décider de me faire une meilleure visualisation du Behavior Tree.

Pour y arriver, je veux:
  • Un sortie standardisée facile à décoder
  • Un système simple permettant de se connecter sur le port série et lire le contenu
  •  Du code portable et rapide a implémenter
Pour ce qui est de l'output, j'ai décider de le faire en JSON. Cependant, comme c'est un arbre et qu'il peut y avoir pas mal d'info a sérialiser, une librairie comme ArduinoJSON bien qu'excellente, nécessite de générer un "document" qui sera sérialisé. C'est trop gourmand, donc j'ai écrit un serialiseur "in place" qui envoit directement sur Serial l'information.

Pour le moment la classe de sérialisation est incluse dans le code de Behavior Tree mais je pourrais en faire une librairie simpliste qui j'imagine pourrait être utile à condition de permettre de spécifier le stream de sortie ( Wifi, BT, RF module y compris ) et d'y ajouter le support pour les chaines de caractères en progmem.

Ensuite, le projet python Flask permet de réaliser un petit site web dont des url permettent de se connecter, déconnecter et lire le port série. C'est encore en chantier mais c'est prometteur. Ce pourrait être pratique si configuré pour répondre autre que sur localhost et monitorer à distance ou sur appareil mobile sur le même réseau.

Comme c'est en Python ça n'utilise que Flask, pySerial, le code est relativement simple et surtout portable. Comme l'output série est déjà en JSON, c'est simple à "parser" et pourrait même être décoder côté client. Il me reste à faire une configuration pour l'affichage selon le type et ce sera déjà pas mal mieux que regarder le "serial monitor".

C'est encore un "work in progress", mais le code est dispo sur github

Aucun commentaire:

Enregistrer un commentaire