-
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 #63 from brentru/add-esp32s2-updated-code
Add ESP32-S2 compatibility and example
- Loading branch information
Showing
2 changed files
with
109 additions
and
17 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
107 changes: 107 additions & 0 deletions
107
examples/adafruit_io_mqtt/adafruit_io_simpletest_esp32s2.py
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,107 @@ | ||
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries | ||
# SPDX-License-Identifier: MIT | ||
import time | ||
from random import randint | ||
|
||
import ssl | ||
import socketpool | ||
import wifi | ||
import adafruit_minimqtt.adafruit_minimqtt as MQTT | ||
from adafruit_io.adafruit_io import IO_MQTT | ||
|
||
### WiFi ### | ||
|
||
# Add a secrets.py to your filesystem that has a dictionary called secrets with "ssid" and | ||
# "password" keys with your WiFi credentials. DO NOT share that file or commit it into Git or other | ||
# source control. | ||
# pylint: disable=no-name-in-module,wrong-import-order | ||
try: | ||
from secrets import secrets | ||
except ImportError: | ||
print("WiFi secrets are kept in secrets.py, please add them there!") | ||
raise | ||
|
||
# Set your Adafruit IO Username and Key in secrets.py | ||
# (visit io.adafruit.com if you need to create an account, | ||
# or if you need your Adafruit IO key.) | ||
aio_username = secrets["aio_username"] | ||
aio_key = secrets["aio_key"] | ||
|
||
print("Connecting to %s" % secrets["ssid"]) | ||
wifi.radio.connect(secrets["ssid"], secrets["password"]) | ||
print("Connected to %s!" % secrets["ssid"]) | ||
|
||
# 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)) | ||
|
||
|
||
# Create a socket pool | ||
pool = socketpool.SocketPool(wifi.radio) | ||
|
||
# Initialize a new MQTT Client object | ||
mqtt_client = MQTT.MQTT( | ||
broker="io.adafruit.com", | ||
username=secrets["aio_username"], | ||
password=secrets["aio_key"], | ||
socket_pool=pool, | ||
ssl_context=ssl.create_default_context(), | ||
) | ||
|
||
# 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() |