I am having problem in connecting esp32 to local MQTT broker using the following micropython code
from umqtt.simple import MQTTClient import network import utime as time # Device Setup DEVICE_ID = "wokwi001" MQTT_CONTROL_TOPIC = "iot/control" # WiFi Setup WIFI_SSID = "####" WIFI_PASSWORD = "######" # MQTT Setup #MQTT_BROKER = "broker.mqttdashboard.com" MQTT_BROKER = "localhost" #MQTT_BROKER = "192.168.1.105" MQTT_CLIENT = DEVICE_ID def did_recieve_callback(topic, message): print('\n\nData Recieved! \ntopic = {0}, message = {1}'.format(topic, message)) # device_id/lamp/color/state # device_id/lamp/state # lamp/state if topic == MQTT_CONTROL_TOPIC.encode(): #if message == ('{0}/lamp/red/on'.format(DEVICE_ID)).encode(): # RED_LED.on() #elif message == ('{0}/lamp/red/off'.format(DEVICE_ID)).encode(): # RED_LED.off() if message == ('{0}/lamp/blue/on'.format(DEVICE_ID)).encode(): BLUE_LED.on() elif message == ('{0}/lamp/blue/off'.format(DEVICE_ID)).encode(): BLUE_LED.off() elif message == ('{0}/lamp/on'.format(DEVICE_ID)).encode() or message == b'lamp/on': #RED_LED.on() BLUE_LED.on() elif message == ('{0}/lamp/off'.format(DEVICE_ID)).encode() or message == b'lamp/off': #RED_LED.off() BLUE_LED.off() else: return send_led_status() def mqtt_connect(): print("Connecting to MQTT broker ...", end="") mqtt_client = MQTTClient(MQTT_CLIENT, MQTT_BROKER, user="", password="") mqtt_client.set_callback(did_recieve_callback) mqtt_client.connect() print("Connected.") mqtt_client.subscribe(MQTT_CONTROL_TOPIC) return mqtt_client # Connecting to Wifi wifi_client = network.WLAN(network.STA_IF) wifi_client.active(True) print("Connecting device to WiFi") wifi_client.connect(WIFI_SSID, WIFI_PASSWORD) # Wait until WiFi is Connected while not wifi_client.isconnected(): print("Connecting") time.sleep(0.1) print("WiFi Connected!") print(wifi_client.ifconfig()) # Connect to MQTT mqtt_client = mqtt_connect() #waiting until MQTT is connected #while not mqtt_client.isconnected(): # print("Connecting") # time.sleep(0.1) print("Mqtt Connected!")
The error message is
Connecting to MQTT broker ...Traceback (most recent call last):
File "<stdin>", line 67, in <module>
File "<stdin>", line 48, in mqtt_connect
File "umqtt/simple.py", line 68, in connect
OSError: [Errno 104] ECONNRESET
However, the same code (except the MQTT_BROKER is changed from "localhost" to "broker.mqttdashboard.com") works fine.
I have tried adding
listener 1883
Allow anonymous True
with no success. Could anyone out there point me a direction? Thanks in advance