コミュニティのやり取りを見てると、ここの認証回りの修正は当分先な気がするので、自前パッチをあてるのがよさそうです。
(ESP-IDFのバージョンも最新のを使いたいとかもあるし、いっそのことまとめてやっちゃえ!w)
ってことで修正して動作確認。
#SSL接続import socket, ssl
s=socket.socket()
addr=socket.getaddrinfo("www.yahoo.com", 443)[0][-1]
s.connect(addr)
client=ssl.wrap_socket(s)
#MosquitoのブローカーにPublish(証明書なし)
import ssl
import socket
from mqtt import MQTTClient
MQTT_CLIENT_ID = "12341234"
MQTT_HOST = "192.168.1.2"
MQTT_PORT = 1883
client = MQTTClient(client_id=MQTT_CLIENT_ID, server=MQTT_HOST, port=MQTT_PORT, keepalive=10000, ssl=False)
client.connect()
client.publish("test", "ok")
client.disconnect()
#MosquitoのブローカーにPublish(証明書あり)
kw = {}kw["cacert"] = cacertdata
kw["cert"] = certdata
kw["key"] = keydata
kw["cert_reqs"] = ssl.CERT_REQUIRED
kw["server_hostname"] = MQTT_HOST
kw["server_side"] = False
client = MQTTClient(client_id=MQTT_CLIENT_ID, server=MQTT_HOST, port=MQTT_PORT, keepalive=10000, ssl=True, ssl_params=kw)
client.connect()
client.publish("test", "ok")
client.disconnect()
#Subsctibeしてみる
def sub_cb(topic, msg):
print((topic, msg))
client = MQTTClient(client_id=MQTT_CLIENT_ID, server=MQTT_HOST, port=MQTT_PORT, keepalive=10000, ssl=True, ssl_params=kw)
client.connect()
client.set_callback(sub_cb)
client.subscribe("foo_topic")
client.wait_msg()
又は
client.check_msg()
これらが上手く実行できていれば問題ないと思います。