通过umqtt将ESP32连接到AWS物联网

通过umqtt将ESP32连接到AWS物联网,mqtt,micropython,esp32,Mqtt,Micropython,Esp32,我有以下micro-python代码: client = MQTTClient("youraccount/feeds/lights", "a21sigud7911d7.iot.us-west- 2.amazonaws.com", user="None", password="None" , keepalive=10000, ssl=True, ssl_params={"certfile":"/49c84a8c4a-certificate.pem.crt", "keyfile":"/49c8

我有以下micro-python代码:

client = MQTTClient("youraccount/feeds/lights", "a21sigud7911d7.iot.us-west- 
2.amazonaws.com", user="None", password="None" , keepalive=10000, ssl=True, 
ssl_params={"certfile":"/49c84a8c4a-certificate.pem.crt", 
"keyfile":"/49c84a8c4a-private.pem.key", "ca_certs":"/root.pem"})


 client.settimeout = settimeout
 client.connect()
但当我在ESP32上从repl运行脚本时,我得到:

文件“umqtt/simple.py”,第61行,在connect中 TypeError:提供了额外的关键字参数


任何帮助请删除ssl参数字典中的ca证书。请参阅和。

在ESP32上可以使用ESP32和Micropython库MQTT连接到AWS,因为它使用mbedtls。但是,这在unix/osx上是不可能的,因为它使用axtls库-请参阅此。

我没有尝试连接到AWS(而是我自己的TLS安全MQTT代理)-我收到了完全相同的错误消息。如果其他人在试图解决这个问题时发现了这一点,答案其实很简单。您不能使用文件的名称,而是需要它们的内容。这对我来说很有效:

从umqtt.robust导入MQTTClient
将open('device.key')作为f:
key_data=f.read()
将open('device.crt')作为f:
证书数据=f.读取()
client=MQTTClient(“ESP”,“test.example.com”,ssl=True,ssl_参数={'key':key_数据,'cert':cert_数据})
x=客户端。连接()
如果不是x:
发布(“主题”,“你好,世界…”)

显然,您需要将“test.example.com”替换为安全MQTT服务器的URL…

您知道了吗?