Go Down

Topic: Serveur Telnet pour ESP8266 (Read 213 times) previous topic - next topic

MicroQuettas

May 23, 2020, 03:49 pm Last Edit: May 24, 2020, 10:58 am by MicroQuettas Reason: added Android client example
Bonjour à toutes et tous,

J'ai brodé sur une idée de Bricoleau Terminal WiFi pour ESP8266 et ESP32 et en ai dérivé une version "low-cost" qui utilise un client Telnet, aisément disponible sur tout PC, tablette ou téléphone.

Le programme permet donc d'ajouter une entrée sortie "terminal" distant à tout ESP8266 (et ESP32, mais je n'ai pas essayé) relié à un réseau Wifi. C'est fort pratique pour terminer le débogage d'une application en conditions réelles, sans fil USB à la patte.

Tout est dans le zip inclus, avec un petit exemple de test. Il comprend 2 modules de compilation séparée à placer dans le même répertoire que le .ino, (ou dans un sous répertoire de votre répertoire "libraires").
La seule bibliothèque extérieure à installer est le Streaming, disponible tout en bas de la page Streaming tout en bas de la page.

A la différence du programme de Bricoleau, il faut un client Telnet sur le PC :
  • sur Linux, Telnet est standard depuis un terminal. Il suffit de lui indiquer l'IP de l'ESP,
  • sur W, il faut utiliser PuTTY en mode Telnet, et lui indiquer l'IP de l'ESP,
  • sur Android, "Serial WiFi Terminal" fonctionne parfaitement (merci al1fch),
  • sur Mac, il doit y avoir tout ce qu'il faut, mais je n'ai pas pu tester...


Le numéro de port est le 23, standard du Telnet. Le protocole est utilisé en mode "ligne" et tous les dialogues de négociation sont supprimés pour plus de simplicité. On peut configurer le programme avec un autre numéro de port.

Quelques indications sur l'utilisation dans le post suivant...

Bonne bidouille

MicroQuettas

MicroQuettas

Re-bonjour,

Voici quelques précisions sur l'utilisation du terminal.

Tout le travail se fait dans la méthode "update()", qu'il faut appeler dans le "loop" avec "term.Update()".
C'est une petite machine à états qui ouvre le serveur dès que le WiFi est connecté et qui gère la connexion du client.
Low-cost oblige, il n'y a qu'un client à la fois.
Il y a aussi un temporisateur qui "sort" le client au bout de 5 minutes d'inactivité.

Les modes de fonctionnement sont les mêmes que ceux du programme de Bricoleau (normal, link) auxquels j'ai ajouté un mode substitution.Tout est résumé sur le tableau ci-dessous. "term" désigne ce qui est envoyé ou lu sur le Telnet.

     Stream             |     Normal    |          Link           |       Substitution   |
Serial                       |     Serial       |         Serial         |           term           |
term                      |     term         |      term avec      |           term         |
                                |                     |  copie sur term   |                             |

Illustration avec le programme de test, à lancer avec une fenêtre terminal série, après avoir renseigné le SSID et le PWd de votre WiFi. Dès que le WiFI est connecté, on peut se connecter en Telnet,

  • lancé tel quel, il fonctionne en mode Normal avec la séquence de connexion au WiFi en mode Link, c-à-d que le dialogue de connexion au WiFi est envoyé au term et copié sur le Sérial,
  • compilé en décommentant la ligne 17
    Quote
    //#define SERIAL2TERM true  /* Will replace all "Serial" by "term" */
    du fichier C_TelnetTerm.h, tout ce qui est envoyé ou lu sur/depuis Serial est automatiquement envoyé/lu sur term.


J'ai ajouté ce mode substitution pour pouvoir faire les premiers débogages d'un programme en liaison USB, en utilisant donc Sérial, puis à passer sur le Telnet sans rien avoir à changer d'autre que l'option de compilation dans le fichier C_TelnetTerm.h

Enfin, pour les besoins du test, les états de la machine sont affichés sur le Serial. C'est bien sûr inutile en application réelle et cela se supprime en commentant la ligne 17
Quote
#define TELNETDEBUG true
du fichier C_TelnetTerm.cpp.

Voila, j'espère que ce petit développement sera utile.
Encore un grand merci à Bricoleau qui a conçu la déclaration de classe qui, magie du C++ aidant, fait tout le travail et que j'ai reprise quasiment à l'identique. Mon gestionnaire de tampon circulaire est également très fortement inspiré de son travail.

Je répondrai à toutes les questions raisonnables,

Bonne bidouille,

MicroQuettas


Go Up