-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #30 from brentru/minimqtt-update
Update examples for MiniMQTT PR
- Loading branch information
Showing
6 changed files
with
172 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
# Example of using the Adafruit IO CircuitPython MQTT client | ||
# to subscribe to an Adafruit IO feed and publish random data | ||
# to be received by the feed. | ||
# | ||
# Example by Tony DiCola for Adafruit Industries | ||
# Modified by Brent Rubell for Adafruit Industries, 2019 | ||
import time | ||
from random import randint | ||
|
||
import board | ||
import busio | ||
from digitalio import DigitalInOut | ||
|
||
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K | ||
import adafruit_wiznet5k.adafruit_wiznet5k_socket as socket | ||
from adafruit_io.adafruit_io import IO_MQTT | ||
import adafruit_minimqtt as MQTT | ||
|
||
# Get MQTT details and more from a secrets.py file | ||
try: | ||
from secrets import secrets | ||
except ImportError: | ||
print("MQTT secrets are kept in secrets.py, please add them there!") | ||
raise | ||
|
||
cs = DigitalInOut(board.D10) | ||
spi_bus = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO) | ||
|
||
# Initialize ethernet interface with DHCP | ||
eth = WIZNET5K(spi_bus, cs) | ||
|
||
# Define callback functions which will be called when certain events happen. | ||
# pylint: disable=unused-argument | ||
def connected(client): | ||
# Connected function will be called when the client is connected to Adafruit IO. | ||
# This is a good place to subscribe to feed changes. The client parameter | ||
# passed to this function is the Adafruit IO MQTT client so you can make | ||
# calls against it easily. | ||
print("Connected to Adafruit IO! Listening for DemoFeed changes...") | ||
# Subscribe to changes on a feed named DemoFeed. | ||
client.subscribe("DemoFeed") | ||
|
||
def subscribe(client, userdata, topic, granted_qos): | ||
# This method is called when the client subscribes to a new feed. | ||
print('Subscribed to {0} with QOS level {1}'.format(topic, granted_qos)) | ||
|
||
def unsubscribe(client, userdata, topic, pid): | ||
# This method is called when the client unsubscribes from a feed. | ||
print('Unsubscribed from {0} with PID {1}'.format(topic, pid)) | ||
|
||
# pylint: disable=unused-argument | ||
def disconnected(client): | ||
# Disconnected function will be called when the client disconnects. | ||
print("Disconnected from Adafruit IO!") | ||
|
||
# pylint: disable=unused-argument | ||
def message(client, feed_id, payload): | ||
# Message function will be called when a subscribed feed has a new value. | ||
# The feed_id parameter identifies the feed, and the payload parameter has | ||
# the new value. | ||
print("Feed {0} received new value: {1}".format(feed_id, payload)) | ||
|
||
# Initialize MQTT interface with the ethernet interface | ||
MQTT.set_socket(socket, eth) | ||
|
||
# Initialize a new MQTT Client object | ||
mqtt_client = MQTT.MQTT(broker="http://io.adafruit.com", | ||
username=secrets["aio_user"], | ||
password=secrets["aio_key"]) | ||
|
||
# Initialize an Adafruit IO MQTT Client | ||
io = IO_MQTT(mqtt_client) | ||
|
||
# Connect the callback methods defined above to Adafruit IO | ||
io.on_connect = connected | ||
io.on_disconnect = disconnected | ||
io.on_subscribe = subscribe | ||
io.on_unsubscribe = unsubscribe | ||
io.on_message = message | ||
|
||
# Connect to Adafruit IO | ||
print("Connecting to Adafruit IO...") | ||
io.connect() | ||
|
||
# Below is an example of manually publishing a new value to Adafruit IO. | ||
last = 0 | ||
print("Publishing a new message every 10 seconds...") | ||
while True: | ||
# Explicitly pump the message loop. | ||
io.loop() | ||
# Send a new message every 10 seconds. | ||
if (time.monotonic() - last) >= 5: | ||
value = randint(0, 100) | ||
print("Publishing {0} to DemoFeed.".format(value)) | ||
io.publish("DemoFeed", value) | ||
last = time.monotonic() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters