Comparacion uso libreria urequests en la Esp8266 y en la Esp32
Presentación
Despues de haber hecho diversas pruebas trabajando con la libreria urequests de micropython he llegado a la conclusión que la misma si bien funciona para las paginas http tanto en las placas Esp8266 como en las Esp32 no ocurre lo mismo con las paginas https en cuyo caso solo funciona en las placas Esp32.
Materiales
Placa Esp8266 Wifi
Modulo Adaptador Usb Esp-01s Programador Esp8266 Wifi
Placa Esp32-Cam
Programador Esp32-Cam
Si bien por ser mas cómodo y práctico se ha usado el adaptador el mismo puede ser remplazado por una placa FTDI y el cableado pertinente.
Código
El codigo propuesto a continuacion permite comprobar lo dicho, el mismo se ha escrito en un unico archivo main.py.
import urequests
import network
red = 'xxxxxxx'
clave = 'xxxxxxxxx'
def conecta_wifi():
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(red, clave)
while wifi.isconnected() == False:
pass
print('Conectada a Wifi')
print('************************')
print('RED: %s' % red)
print('IP: %s\nSUBNET: %s\nGATEWAY: %s\nDNS: %s' % wifi.ifconfig()[0:4])
a = wifi.config('mac')
print('MAC: {:02x}:{:02x}:{:02x}:{:02x}:{:02x}'.format(a[0],a[1],a[2],a[3],a[4]))
print('************************+')
conecta_wifi()
#Para realizar la prueba hay que habilitar una u otra de las siguientes lineas
#Caso pagina http(1)
url = 'https://carlosvaccaro.com.ar'
#Caso pagina https(2)
#url = 'https://api.telegram.org/bot0000000000:XXXXXXXXXXXX-xxxxxxxxxxxxxxxxxxxxxx/getUpdates'
#Pueden ser esar url o cualquier otra que sean http y https respectivamente
response = urequests.post(url)
print("response code {}".format(response.status_code))
############################################################
#RESULTADOS:
#***************************************************
#Caso url http(1):
# Salida por consola para Esp 8266:
#response code 200
# Salida por consola para Esp 32:
#response code 200
#***************************************************
#Caso url https(2):
# Salida por consola para Esp 8266:
#Traceback (most recent call last):
# File "", line 38, in
# File "requests/__init__.py", line 184, in post
# File "requests/__init__.py", line 93, in request
#OSError: -40
# Salida por consola para Esp 32:
#response code 200
############################################################
Conclusiones
El error OSError: -40 segun algunos pareceria estar causaado por una incompatibilidad entre el MicroPython y los certificados SSL y otros sostienen que esta vinculado a que no hay suficiente memoria dinámica para comunicar SSL a servidores de Internet. Por ahora no me he formado una opinioen y seguire investigando el tema.
Mientras tanto he encontrado como una solucion intermedia para la Esp8266 mediar entre las paginas https y la placa con un servidor colocado en la misma placa donde instalo una pagina con funciones de javascritp que comunican la pagina https con el servidor y este con la placa Esp8266 veanse los ejemplos de: Enviar mensaje a Telegram con la Esp8266 con JavaScript y Controlar dos leds desde Telegram con Servidor Esp8266.
Quedo disposición de quien quiera hacerme consultas o sugerencias mi correo electronico es carlosvaccaro1960@gmail.com