Bonjour,

je connecte 2 ESP8266 en wifi. Le client envoie la valeur d'une tension qui varie avec une résistance variable.
Le serveur reçoie les informations et les imprime dans la console.
j'utilise MicroPython v1.19.1 on 2022-06-18; ESP module (1M) with ESP8266

Voici le code du serveur qui fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
import socket
import network
import machine
 
ip        = '192.168.1.10'
subnet    = '255.255.255.0'
gateway   = '192.168.1.1'
dns       = '8.8.8.8'
ssid = 'MicroPython-AP'
password = '123456789'
 
sta=network.WLAN(network.STA_IF)
sta.active(True)
sta.disconnect() # pour ESP8266
 
ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.ifconfig((ip,subnet,gateway,dns))
ap.config(essid=ssid, password=password)
 
while ap.active() == False:
    pass
 
print('Connection successful')
print(ap.ifconfig())
print(ap.ifconfig()[0])
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((ip, 800))
s.listen(5)
 
while True:
    conn, addr = s.accept()
    print('Connecte a %s' % str(addr))
    reception_donnees=conn.read()
    print("Volts=",reception_donnees)
    conn.close()
Le problème que je rencontre c'est lorsque je veux mettre des Try Except
J'ai ajouté un timer (s.settimeout(5.0)), si le client ne se connecte pas dans les 5 secondes, j'intercepte l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
while True:
    try:
        s.settimeout(5.0)
        conn, addr = s.accept()
        print('Connecte a %s' % str(addr))
        reception_donnees=conn.read()
        print("Volts=",reception_donnees)
        conn.close()
    except socket.error as msg:
        print(msg)
    finally:
        conn.close()
Et là j'ai le message suivant : File "<stdin>", line 40, in <module> (la ligne 40 c'est except socket.error as msg
AttributeError: 'module' object has no attribute 'error'

Deuxième problème : Si le client se connecte avant les 5 secondes, c'est ok, mais s'il s'arrête, j'ai alors les message suivant : File "<stdin>", line 43, in <module>
NameError: name 'conn' isn't defined
Le Finally ne reconnait pas la variable conn !

J'ai cherché sur les différents forums mais je suis bloqué.
Merci d'avance pour vos suggestions
Cordialement