Saya menghadapi masalah ini apabila cuba menggunakan pustaka adafruit_espatcontrol bersama adafruit_minimqtt untuk menyambungkan kepada MQTT yang dipasang di pada Raspberry Pi
Traceback (most recent call last):
File "code.py", line 117, in <module>
File "/lib/adafruit_minimqtt/adafruit_minimqtt.py", line 447, in connect
File "/lib/adafruit_minimqtt/adafruit_minimqtt.py", line 270, in _get_connect_socket
File "/lib/adafruit_espatcontrol/adafruit_espatcontrol_socket.py", line 85, in connect
File "/lib/adafruit_espatcontrol/adafruit_espatcontrol.py", line 202, in socket_connect
RuntimeError: Connection type must be TCP, UDL or SSL
Code language: Bash (bash)
Saya menjejak ralat tersebutdan mendapati bahawa, oleh kerana MQTT (tanpa SSL) menggunakan port 1883, tiada definisi conntype (Jenis sambungan. MQTT dengan SSL tiada masalah kerana terdapat fungsi khusus untuk MQTT dengan SSL.
jadi saya edit fail adafruit_espatcontrol.py dan menambah kod ini
# Determine the conntype from port if not specified.
if conntype is None:
if port == 80:
conntype = "TCP"
elif port == 443:
conntype = "SSL"
#sidik.my tambah dua baris dibawah ini
elif port == 1883:
conntype = "TCP"
Code language: Python (python)
sambungan berjaya~~!!
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
Connecting to WiFi...
Connected!
Connected to MQTT broker! Listening for topic changes on /feeds/testfeed
Subscribing to lala/lulu
Publishing to lala/lulu
Unsubscribing from lala/lulu
Disconnecting from 192.168.1.110
Disconnected from MQTT Broker!
Code language: Bash (bash)
- Kemaskini terkini, saya telah membuat pull request untuk menambah 3 baris kod di atas dan diterima (merged). di sini https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/tag/20220304