gpt4 book ai didi

python - ESP32 MicroPython SSL WebSocket

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:08 27 4
gpt4 key购买 nike

我成功地将我的 ESP32 连接到 WebSocket 服务器。现在我正试图让它与 SSL 一起工作。我试过这个简单的代码来连接到 www.google.com。我用它来生成证书和 key 。

openssl req -newkey rsa:2048 -nodes -keyout client.key -x509 -days 365 -out client.crt

.

然后使用 adafruit-ampy 复制 key 和证书文件。不要忘记更改您的串口。

ampy -p /dev/tty.SLAB_USBtoUART put client.crt
ampy -p /dev/tty.SLAB_USBtoUART put client.key

这是ESP32上的代码

import ussl
import usocket
import networking

KEY_PATH = "client.key"
CERT_PATH = "client.crt"
HOST, PATH, PORT = "www.google.com", "/" 443

with open(KEY_PATH, 'rb') as f:
key1 = f.read()

with open(CERT_PATH, 'rb') as f:
cert1 = f.read()

s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
addr = usocket.getaddrinfo(HOST, PORT)[0][-1]
s.connect(addr)
sock = ussl.wrap_socket(s, key = key1, cert = cert1)
sock.write(bytes('GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n' % (PATH, HOST), 'utf8'))
print(sock.read(100))

我收到这个错误:

mbedtls_ssl_handshake error: -7280
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 5] EIO

有没有人在ESP32上成功使用ssl socket_wrap?

编辑(2018 年 12 月 23 日):

我终于成功了,通过 HTTPS 从谷歌获取 HTML,是的。检查上面的代码。希望这可以帮助。我认为 ESP32 的 MicropPython 端口已经变得越来越好,这就是它现在可以工作的原因。

下一步是让 SSL WebSocket 工作......

编辑(2019 年 6 月 9 日):

它现在正在工作。这个库非常适合我打算做的事情 https://github.com/danni/uwebsockets

最佳答案

错误-7280翻译如下(来自:include/mbedtls/ssl.h):

#define MBEDTLS_ERR_SSL_CONN_EOF -0x7280 /**< The connection indicated an EOF. */

您遇到的问题可能是内存问题...您可以尝试添加:

import gc
gc.collect()

在您调用 getaddinfo() 之后?

也可以尝试在 s.connect() 之后加载 key /证书文件打电话?

关于python - ESP32 MicroPython SSL WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51160692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com