From ae5ac785084d218a6dca08819b1e3b955e3cc6e7 Mon Sep 17 00:00:00 2001 From: Richard Albritton Date: Fri, 31 Jan 2020 15:13:40 -0800 Subject: [PATCH] Example for using miniMQTT with the PyPortal This example shows how to get miniMQTT to work with the PyPortal library. --- examples/minimqtt_pub_sub_pyportal | 73 ++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 examples/minimqtt_pub_sub_pyportal diff --git a/examples/minimqtt_pub_sub_pyportal b/examples/minimqtt_pub_sub_pyportal new file mode 100644 index 0000000..f15f786 --- /dev/null +++ b/examples/minimqtt_pub_sub_pyportal @@ -0,0 +1,73 @@ +import time +from adafruit_esp32spi import adafruit_esp32spi_wifimanager +import adafruit_esp32spi.adafruit_esp32spi_socket as socket +from adafruit_minimqtt import MQTT +import adafruit_pyportal + +pyportal = adafruit_pyportal.PyPortal() + +### WiFi ### + +# Get wifi details and more from a secrets.py file +try: + from secrets import secrets +except ImportError: + print("WiFi secrets are kept in secrets.py, please add them there!") + raise + +wifi = adafruit_esp32spi_wifimanager.ESPSPI_WiFiManager(pyportal._esp, + secrets, None) + +# ------------- MQTT Topic Setup ------------- # +mqtt_topic = 'test/topic' + +### Code ### +# Define callback methods which are called when events occur +# pylint: disable=unused-argument, redefined-outer-name +def connected(client, userdata, flags, rc): + # This function will be called when the client is connected + # successfully to the broker. + print('Subscribing to %s' % (mqtt_topic)) + client.subscribe(mqtt_topic) + +def disconnected(client, userdata, rc): + # This method is called when the client is disconnected + print('Disconnected from MQTT Broker!') + +def message(client, topic, message): + """Method callled when a client's subscribed feed has a new + value. + :param str topic: The topic of the feed with a new value. + :param str message: The new value + """ + print('New message on topic {0}: {1}'.format(topic, message)) + +# Connect to WiFi +wifi.connect() + +# Set up a MiniMQTT Client +mqtt_client = MQTT(socket, + broker=secrets['broker'], + username=secrets['user'], + password=secrets['pass'], + is_ssl=False, + network_manager=wifi) + +# Setup the callback methods above +mqtt_client.on_connect = connected +mqtt_client.on_disconnect = disconnected +mqtt_client.on_message = message + +# Connect the client to the MQTT broker. +mqtt_client.connect() + +photocell_val = 0 +while True: + # Poll the message queue + mqtt_client.loop() + + # Send a new message + print('Sending photocell value: %d' % photocell_val) + mqtt_client.publish(mqtt_topic, photocell_val) + photocell_val += 1 + time.sleep(1)