How to fix "IndexError: list index out of range" in micropython socket.getaddrinfo() method?
How to fix "IndexError: list index out of range" in micropython socket.getaddrinfo() method?
我在我的 esp32 上使用 micropython。我想将数据从 esp32 发送到 AWS IoT MQTT Broker Endpoint。
但是在 micropython 套接字模块中,getaddrinfo(hostname, port) 方法 return 每次都是空列表。我该如何解决?
当我使用 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: 列表索引超出范围。
我该如何解决?
我只是改变我的wifi网络就解决了这个问题。
其实这个问题是因为我的ISP网络问题,这就是为什么套接字模块无法正常工作以正确获取IP地址的原因。
我在我的 esp32 上使用 micropython。我想将数据从 esp32 发送到 AWS IoT MQTT Broker Endpoint。 但是在 micropython 套接字模块中,getaddrinfo(hostname, port) 方法 return 每次都是空列表。我该如何解决?
当我使用 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: 列表索引超出范围。
我该如何解决?
我只是改变我的wifi网络就解决了这个问题。 其实这个问题是因为我的ISP网络问题,这就是为什么套接字模块无法正常工作以正确获取IP地址的原因。