-
Notifications
You must be signed in to change notification settings - Fork 99
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 #136 from cj8scrambler/master
Add support for dashboards, blocks and layouts
- Loading branch information
Showing
6 changed files
with
350 additions
and
11 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
""" | ||
'dashboard.py' | ||
========================================= | ||
Creates a dashboard with 3 blocks and feed it data | ||
Author(s): Doug Zobel | ||
""" | ||
from time import sleep | ||
from random import randrange | ||
from Adafruit_IO import Client, Feed, Block, Dashboard, Layout | ||
|
||
# Set to your Adafruit IO key. | ||
# Remember, your key is a secret, | ||
# so make sure not to publish it when you publish this code! | ||
ADAFRUIT_IO_USERNAME = '' | ||
|
||
# Set to your Adafruit IO username. | ||
# (go to https://accounts.adafruit.com to find your username) | ||
ADAFRUIT_IO_KEY = '' | ||
|
||
# Create an instance of the REST client. | ||
aio = Client(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) | ||
|
||
# Create a new feed named 'Dashboard Data' under the default group | ||
feed = aio.create_feed(Feed(name="Dashboard Data"), "default") | ||
|
||
# Fetch group info (group.id needed when adding feeds to blocks) | ||
group = aio.groups("default") | ||
|
||
# Create a new dasbhoard named 'Example Dashboard' | ||
dashboard = aio.create_dashboard(Dashboard(name="Example Dashboard")) | ||
|
||
# Create a line_chart | ||
linechart = Block(name="Linechart Data", | ||
visual_type = 'line_chart', | ||
properties = { | ||
"gridLines": True, | ||
"historyHours": "2"}, | ||
block_feeds = [{ | ||
"group_id": group.id, | ||
"feed_id": feed.id | ||
}]) | ||
linechart = aio.create_block(dashboard.key, linechart) | ||
|
||
# Create a gauge | ||
gauge = Block(name="Gauge Data", | ||
visual_type = 'gauge', | ||
block_feeds = [{ | ||
"group_id": group.id, | ||
"feed_id": feed.id | ||
}]) | ||
gauge = aio.create_block(dashboard.key, gauge) | ||
|
||
# Create a text stream | ||
stream = Block(name="Stream Data", | ||
visual_type = 'stream', | ||
properties = { | ||
"fontSize": "12", | ||
"fontColor": "#63de00", | ||
"showGroupName": "no"}, | ||
block_feeds = [{ | ||
"group_id": group.id, | ||
"feed_id": feed.id | ||
}]) | ||
stream = aio.create_block(dashboard.key, stream) | ||
|
||
# Update the large layout to: | ||
# |----------------| | ||
# | Line Chart | | ||
# |----------------| | ||
# | Gauge | Stream | | ||
# |----------------| | ||
layout = Layout(lg = [ | ||
{'x': 0, 'y': 0, 'w': 16, 'h': 4, 'i': str(linechart.id)}, | ||
{'x': 0, 'y': 4, 'w': 8, 'h': 4, 'i': str(gauge.id)}, | ||
{'x': 8, 'y': 4, 'w': 8, 'h': 4, 'i': str(stream.id)}]) | ||
aio.update_layout(dashboard.key, layout) | ||
|
||
print("Dashboard created at: " + | ||
"https://io.adafruit.com/{0}/dashboards/{1}".format(ADAFRUIT_IO_USERNAME, | ||
dashboard.key)) | ||
# Now send some data | ||
value = 0 | ||
while True: | ||
value = (value + randrange(0, 10)) % 100 | ||
print('sending data: ', value) | ||
aio.send_data(feed.key, value) | ||
sleep(3) |
Oops, something went wrong.