88 lines
2.8 KiB
Python
88 lines
2.8 KiB
Python
"""
|
|
'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)
|