I am using micropython on my esp32. I want to send data from esp32 to AWS IoT MQTT Broker Endpoint. But in micropython socket module, getaddrinfo(hostname, port) method return empty list every time. How can I solve it?
It is working when I use IP address instead of host name. But AWS MQTT broker endpoint has no static IP for its broker endpoint.
# 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()`
I am getting continuously this error: umqtt/simple.py in 57 line, IndexError: list index out of range.
How can I solve it?