Accueil > NodeMCU > Communication TCP en Micropython : 1ère partie

Communication TCP en Micropython : 1ère partie

Il y a peu de temps, j’ai testé et écrit un article qui utilisait la communication UDP en Micropython entre 2 modules à base d’ESP8266 (NodeMCU Lolin et Wemos D1 mini). Aujourd’hui je commence à tester la communication entre 2 modules en utilisant le protocole TCP qui est un protocole orienté connexion.

Pour le début de mes tests, je vais commencer par faire simple; le module Wemos D1 mini va permettre de commander la LED interne de ma platine de test équipée du NodeMCU Lolin.
Le client TCP va envoyer un 0 puis un 1 alternativement au serveur TCP qui va traiter l’information reçue. Cette première partie traite donc l’envoi et la réception d’un octet.
Comme d’habitude les programmes sont documentés.

Le programme concernant le serveur TCP est le suivant :

#
#                       Serveur TCP
#
# Programme qui traite une requete TCP et va permettre d’allumer ou d’eteindre
# la LED interne en fonction de la commande recue
#
# Tester sur NodeMCU Lolin et Wemos D1 Mini
#
# Auteur : iTechnoFrance
#
import network, socket, time
from machine import Pin
def config_wifi():
    sta = network.WLAN(network.STA_IF)  # creation client d’acces WiFi
    sta.active(True)  # activation du client d’acces WiFi
    sta.connect(‘ssid’, ‘mot de passe’)  # connexion au point d’acces WiFi
    while(sta.isconnected() == False):
        time.sleep(1)
    ip = sta.ifconfig()[0]  # on recupere l’adresse IP
    return ip
def reception(com_net):
    connexion = com_net.accept()  # attente d’une connexion TCP
    client_sock = connexion[0]  # on recupere les infos de connexions
    reception_donnees = client_sock.read()  # attente reception de donnees et la fin de connexion
    client_sock.close()  # fermeture du socket
    return reception_donnees
led_interne = Pin(2, Pin.OUT) # GPIO02–>D4 en sortie
ip = config_wifi()
com_net = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  # initialise un socket TCP
com_net.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  # permet de réutiliser le socket si on relance le programme de nouveau
com_net.bind((ip, 18000))  # TCP port 18000
com_net.listen(5)  # ecoute sur le port TCP et autorise 5 connexions au maximum
while True:
    reception_donnees = reception(com_net)
    if (reception_donnees == b’\1′):
        led_interne.off() # led on pour la led interne
    else:
        led_interne.on() # led off pour la led interne
Le programme concernant le client TCP est le suivant :
#
#                       Client TCP
#
# Programme qui envoie une requete TCP et va permettre d’allumer ou d’eteindre
# la LED interne du serveur TCP
#
# Tester sur NodeMCU Lolin et Wemos D1 Mini
#
# Auteur : iTechnoFrance
#
import network, socket, time
def config_wifi():
    sta = network.WLAN(network.STA_IF)  # creation client d’acces WiFi
    sta.active(True)  # activation du client d’acces WiFi
    sta.connect(‘ssid’, ‘mot de passe’)  # connexion au point d’acces WiFi
    while(sta.isconnected() == False):
        time.sleep(1)
    ip = sta.ifconfig()[0]
    return ip
def emission(LED):
    adresse_serveur = socket.getaddrinfo(« 192.168.1.38 », 18000)[0][-1]  # on formatte l’adresse IP du serveur TCP
    com_net = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  # initialise un socket TCP
    com_net.connect(adresse_serveur)  # on se connecte au serveur TCP
    time.sleep(0.1)  # laisse le temps au serveur TCP de traiter la connexion
    com_net.send(LED)  # on envoi le message
    com_net.close()  # on ferme la connexion TCP
LED = b’\1′  # definition d’un octet
config_wifi()
while True:
    if (LED == b’\1′):  # on inverse a chaque passage la variable LED
        LED = b’\0′
    else:
        LED = b’\1′
    emission(LED)  # envoi d’un message
    time.sleep(1)  # on attend 1 seconde
Donc on a vu comment envoyer un octet en utilisant le protocole TCP/IP; le prochain article étudiera l’envoie d’une mesure qui sera une donnée de type Float.
Catégories :NodeMCU Étiquettes : , , , ,
  1. Aucun commentaire pour l’instant.
  1. No trackbacks yet.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :