Как исправить «IndexError: список индексов вне диапазона» в методе micropython socket.getaddrinfo ()? - PullRequest
0 голосов
/ 06 октября 2019

Я использую micropython на моем esp32. Я хочу отправить данные из esp32 в конечную точку брокера AWS IoT MQTT. Но в модуле сокетов микропифонов метод getaddrinfo (hostname, port) каждый раз возвращает пустой список. Как я могу решить это?

Это работает, когда я использую IP-адрес вместо имени хоста. Но конечная точка посредника AWS MQTT не имеет статического IP-адреса для своей конечной точки посредника.

# My code:
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect("wifiname", "password")
KEY_PATH = "/619e3d582c-private.pem.key"
CERT_PATH = "/619e3d582c-certificate.pem"
with open(KEY_PATH, 'r') as f:
    PVT_KEY = f.read()
with open(CERT_PATH, 'r') as f:
    CERT_KEY = f.read()
client = MQTTClient(client_id="esp32_micropython_shafik",
                   server="xxxxxxxxxxx.iot.eu-west-1.amazonaws.com",
                   port = 8883,
                   keepalive = 10000,
                   ssl = True,
                   ssl_params = {
                     "cert": CERT_KEY,
                     "key": PVT_KEY,
                     "server_side":False
                   } )
def checkwifi():
    while not sta_if.isconnected():
        time.sleep_ms(500)
        print(".")
        sta_if.connect()
def publish():
    while True:
    checkwifi()
    msg = b'hello shafik'
    client.publish(b"weather", msg)
    time.sleep(1)
print("type", type(PVT_KEY))
client.connect()
publish()`

Я постоянно получаю эту ошибку: umqtt / simple.py в 57 строке, IndexError: список индексов выходит за пределы диапазона.

Как я могу это решить?

...