From 3a8e0b34a07e62d72b643093c573ec269ec525b7 Mon Sep 17 00:00:00 2001 From: brentru Date: Fri, 13 Mar 2020 10:20:22 -0400 Subject: [PATCH] update for minimqtt PR --- adafruit_aws_iot.py | 9 +++++++++ examples/aws_iot_shadows.py | 28 ++++++++++++++++++---------- examples/aws_iot_simpletest.py | 29 +++++++++++++++++++---------- 3 files changed, 46 insertions(+), 20 deletions(-) diff --git a/adafruit_aws_iot.py b/adafruit_aws_iot.py index 540120d..b7aa4ae 100644 --- a/adafruit_aws_iot.py +++ b/adafruit_aws_iot.py @@ -135,6 +135,15 @@ def disconnect(self): self.on_unsubscribe = None self.client.deinit() + def reconnect(self): + """Reconnects to the AWS IoT MQTT Broker + + """ + try: + self.client.reconnect() + except MMQTTException as error: + raise AWS_IOT_ERROR("Error re-connecting to AWS IoT:", error) + def connect(self, clean_session=True): """Connects to Amazon AWS IoT MQTT Broker with Client ID. :param bool clean_session: Establishes a clean session with AWS broker. diff --git a/examples/aws_iot_shadows.py b/examples/aws_iot_shadows.py index 9923518..119a14c 100644 --- a/examples/aws_iot_shadows.py +++ b/examples/aws_iot_shadows.py @@ -1,3 +1,4 @@ +import time import json import board import busio @@ -6,7 +7,7 @@ from adafruit_esp32spi import adafruit_esp32spi from adafruit_esp32spi import adafruit_esp32spi_wifimanager import adafruit_esp32spi.adafruit_esp32spi_socket as socket -from adafruit_minimqtt import MQTT +import adafruit_minimqtt as MQTT from adafruit_aws_iot import MQTT_CLIENT ### WiFi ### @@ -129,15 +130,12 @@ def message(client, topic, msg): wifi.connect() print("Connected!") +# Initialize MQTT interface with the esp interface +MQTT.set_socket(socket, esp) # Set up a new MiniMQTT Client -client = MQTT( - socket, - broker=secrets["broker"], - client_id=secrets["client_id"], - network_manager=wifi, - log=True, -) +client = MQTT.MQTT(broker=secrets["broker"], + client_id=secrets["client_id"]) # Initialize AWS IoT MQTT API Client aws_iot = MQTT_CLIENT(client) @@ -158,5 +156,15 @@ def message(client, topic, msg): # while True: # aws_iot.loop() -# Attempt to loop forever and handle network interface -aws_iot.loop_forever() +# Start a blocking message loop... +# NOTE: NO code below this loop will execute +# NOTE: Network reconnection is handled within this loop +while True: + try: + aws_iot.loop() + except (ValueError, RuntimeError) as e: + print("Failed to get data, retrying\n", e) + wifi.reset() + aws_iot.reconnect() + continue + time.sleep(1) diff --git a/examples/aws_iot_simpletest.py b/examples/aws_iot_simpletest.py index 81e6dff..f25a8c0 100644 --- a/examples/aws_iot_simpletest.py +++ b/examples/aws_iot_simpletest.py @@ -1,3 +1,4 @@ +import time import json import board import busio @@ -6,7 +7,7 @@ from adafruit_esp32spi import adafruit_esp32spi from adafruit_esp32spi import adafruit_esp32spi_wifimanager import adafruit_esp32spi.adafruit_esp32spi_socket as socket -from adafruit_minimqtt import MQTT +import adafruit_minimqtt as MQTT from adafruit_aws_iot import MQTT_CLIENT ### WiFi ### @@ -126,14 +127,12 @@ def message(client, topic, msg): wifi.connect() print("Connected!") +# Initialize MQTT interface with the esp interface +MQTT.set_socket(socket, esp) + # Set up a new MiniMQTT Client -client = MQTT( - socket, - broker=secrets["broker"], - client_id=secrets["client_id"], - network_manager=wifi, - log=True, -) +client = MQTT.MQTT(broker=secrets["broker"], + client_id=secrets["client_id"]) # Initialize AWS IoT MQTT API Client aws_iot = MQTT_CLIENT(client) @@ -154,5 +153,15 @@ def message(client, topic, msg): # while True: # aws_iot.loop() -# Attempt to loop forever and handle network interface -aws_iot.loop_forever() +# Start a blocking message loop... +# NOTE: NO code below this loop will execute +# NOTE: Network reconnection is handled within this loop +while True: + try: + aws_iot.loop() + except (ValueError, RuntimeError) as e: + print("Failed to get data, retrying\n", e) + wifi.reset() + aws_iot.reconnect() + continue + time.sleep(1)