Page 1 of 1

MQTT connection stopes main.py

Posted: Sat Dec 08, 2018 2:09 am
by rp346@njit.edu
I have this simple code (main.py) running on ESP32 with micropython.

This works perfectly, but if just add MQTT part by uncommented the commented lines, things doesn't work nothing gets pushed to MQTT nor the relay connected to PIN 12 triggers.

If i run

Code: Select all

ampy -p /dev/tty.SLAB_USBtoUART run main.py
it works too.

Code: Select all

import machine
import utime
import ujson as json

import sensor
import identity
import mqtt
import ubinascii
from umqtt.robust import MQTTClient
import gc
gc.collect()

config = json.loads(open('config.json').read())
SERVER = config['mqtt2']['hostname']
PORT = config['mqtt2']['port']
USER = config['mqtt2']['username']
PASSWORD = config['mqtt2']['password']
DEVICE_ID = ubinascii.hexlify(machine.unique_id()).decode('utf-8')
PIN12 = machine.Pin(12, machine.Pin.OUT)

SLEEP_TIME = int(config['system']['sleep_time'])

data = {}

client = MQTTClient(DEVICE_ID, SERVER, user=USER, password=PASSWORD, port=PORT)
#client.connect()

while True:
  data['date'] = identity.local_date()
  data['lux'] = sensor.read_lux()
  #client.publish(str(DEVICE_ID,'utf-8')+"/data", json.dumps(data))

  if PIN12.value() == 1:
      PIN12.value(0)
  else:
      PIN12.value(1)

  utime.sleep(SLEEP_TIME)
How can I simply this to fix the issue I am having ?

Thanks

Re: MQTT connection stopes main.py

Posted: Fri Dec 14, 2018 9:39 am
by david_syd_au
You should call
client.check_msg()
in your main loop so that the MQTT can handle messaging.

Re: MQTT connection stopes main.py

Posted: Sat Dec 15, 2018 1:34 pm
by cefn
Have you tried running each of these commands or code blocks through the REPL?

This means you can interactively see any errors or blocking statements (which don't return to the REPL prompt) and figure out what is behind the error.

Another thing I do within the boards I use is connect over serial, then press RST (Reset) to get the project to start again, meaning I can see any startup errors logged to the console.