update for minimqtt PR

This commit is contained in:
brentru 2020-03-13 10:20:22 -04:00
parent 7af47da3a2
commit 3a8e0b34a0
3 changed files with 46 additions and 20 deletions

View file

@ -135,6 +135,15 @@ class MQTT_CLIENT:
self.on_unsubscribe = None self.on_unsubscribe = None
self.client.deinit() 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): def connect(self, clean_session=True):
"""Connects to Amazon AWS IoT MQTT Broker with Client ID. """Connects to Amazon AWS IoT MQTT Broker with Client ID.
:param bool clean_session: Establishes a clean session with AWS broker. :param bool clean_session: Establishes a clean session with AWS broker.

View file

@ -1,3 +1,4 @@
import time
import json import json
import board import board
import busio import busio
@ -6,7 +7,7 @@ import neopixel
from adafruit_esp32spi import adafruit_esp32spi from adafruit_esp32spi import adafruit_esp32spi
from adafruit_esp32spi import adafruit_esp32spi_wifimanager from adafruit_esp32spi import adafruit_esp32spi_wifimanager
import adafruit_esp32spi.adafruit_esp32spi_socket as socket 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 from adafruit_aws_iot import MQTT_CLIENT
### WiFi ### ### WiFi ###
@ -129,15 +130,12 @@ print("Connecting to WiFi...")
wifi.connect() wifi.connect()
print("Connected!") print("Connected!")
# Initialize MQTT interface with the esp interface
MQTT.set_socket(socket, esp)
# Set up a new MiniMQTT Client # Set up a new MiniMQTT Client
client = MQTT( client = MQTT.MQTT(broker=secrets["broker"],
socket, client_id=secrets["client_id"])
broker=secrets["broker"],
client_id=secrets["client_id"],
network_manager=wifi,
log=True,
)
# Initialize AWS IoT MQTT API Client # Initialize AWS IoT MQTT API Client
aws_iot = MQTT_CLIENT(client) aws_iot = MQTT_CLIENT(client)
@ -158,5 +156,15 @@ aws_iot.connect()
# while True: # while True:
# aws_iot.loop() # aws_iot.loop()
# Attempt to loop forever and handle network interface # Start a blocking message loop...
aws_iot.loop_forever() # 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)

View file

@ -1,3 +1,4 @@
import time
import json import json
import board import board
import busio import busio
@ -6,7 +7,7 @@ import neopixel
from adafruit_esp32spi import adafruit_esp32spi from adafruit_esp32spi import adafruit_esp32spi
from adafruit_esp32spi import adafruit_esp32spi_wifimanager from adafruit_esp32spi import adafruit_esp32spi_wifimanager
import adafruit_esp32spi.adafruit_esp32spi_socket as socket 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 from adafruit_aws_iot import MQTT_CLIENT
### WiFi ### ### WiFi ###
@ -126,14 +127,12 @@ print("Connecting to WiFi...")
wifi.connect() wifi.connect()
print("Connected!") print("Connected!")
# Initialize MQTT interface with the esp interface
MQTT.set_socket(socket, esp)
# Set up a new MiniMQTT Client # Set up a new MiniMQTT Client
client = MQTT( client = MQTT.MQTT(broker=secrets["broker"],
socket, client_id=secrets["client_id"])
broker=secrets["broker"],
client_id=secrets["client_id"],
network_manager=wifi,
log=True,
)
# Initialize AWS IoT MQTT API Client # Initialize AWS IoT MQTT API Client
aws_iot = MQTT_CLIENT(client) aws_iot = MQTT_CLIENT(client)
@ -154,5 +153,15 @@ aws_iot.connect()
# while True: # while True:
# aws_iot.loop() # aws_iot.loop()
# Attempt to loop forever and handle network interface # Start a blocking message loop...
aws_iot.loop_forever() # 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)