Team member choice due
3/22/19 at 8:59 pm Chicago time Project alpha version due 4/15/19 at 8:59 pm Chicago time
Project final version due 4/29/19 at 8:59 pm Chicago time
Project 3 will be the second group project and the focus
here will be on more local and current data from the Array of Things
in Chicago, with the idea that in the near future there will be more
and more sites (and people) collecting similar data you have been
using in Projects 1 and 2, and using it in combination with many other
datasets to create much more local and even personal views. This
project will also deal with sensors giving different values, sometimes
wildly different, for the same measurement and how to make choices
about what to show.
Again we will be using the main classroom wall as the target
display, and again your interface should work with touch on that wall
for normal sized person.
You can keep your group from Project 2 or form new
groups. Send Andy an email once you know your group for project 3 (even
if it is the same as for project 2). I
will create groups for people that do not form groups on their own.
Again the standard
group size will be 2 or 3 people per group.
As with Project 2 you should very quickly set up a web page for your
new group project and send the URL to andy. Each Friday of the project
each team member should post on the project web site an overview of
what he/she did on the project that week.
The
R library used to work, but now seems to be out of date. It may
return or you may need to grab the json files directly and
manipulate them (which is what the R library did behind the
scenes)
but
that is also not happy as of mid March 2019,
possibly due to some code changes during their early march
hackathon
*
a temporary solution (thanks Emmanuel) is to edit the NAMESPACE
file from the zip archive and comment out this line and then
install with devtools: #export(ls.raw_observations)
and
then you could do things like:
get
a list of all the nodes
ls.nodes(filters=list())
until
its fixed the same information is available at:
if
you go to the Node Information part of the page and click on the
'Show Table' button
noticing
that node 053 is close to the UIC campus you can find out more
about it
stat.node("053")
or
directly with
https://api.arrayofthings.org/api/nodes/053span>
and
then see if there is a current temperature reading at that
location (from one of the many temperature sensors)
a
= ls.observations()
b
= subset(a,
node_vsn == "053")
c
= subset(b, sensor_path
== "metsense.bmp180.temperature")
until
the R interface comes back, the same information can be grabbed
directly using:
url
<- "https://api.arrayofthings.org/api/observations" or
https://api.arrayofthings.org/api/observations?size=1000 if you want
more than the standard 200 or filtering by timestamp if you want a
specific range
s <- download.file(url,
"/var/tmp/obs", quiet = FALSE) (note that you should use a unique file
name to avoid crashing into another group's data)
t = fromJSON("/var/tmp/obs")
u = t$data
v = subset(u, sensor_path == "metsense.bmp180.temperature")
some of the resulting
readings make sense, others seem way out of range
so maybe try a different
temperature sensor with v = subset(u, sensor_path ==
"metsense.tmp112.temperature")
or v = subset(u,
sensor_path == "metsense.tsys01.temperature")
or
take
a look at the current humidity at that location
d
= subset(u,
sensor_path
== "metsense.htu21d.humidity")
also
note that the timestamp is in GMT
there
are various sensors looking at the same pollutants that we have
been looking at in the other projects.
ls.sensors()
chemsense.co.concentration
0-1000 ppm
chemsense.h2s.concentration
0-50 ppm
chemsense.no2.concentration
0-20 ppm
chemsense.o3.concentration
0-20 ppm
chemsense.so2.concentration
0-20 ppm
the
particulate matter ones don't seem to be online yet, but may come
on line soon.
One
of the most popular and accurate weather APIs was from Weather
Underground, which transitioned in 2018 to a pay only model, so we
can't use it. Dark Sky has a similar API with 1000 calls per day
for free, so we are going to integrate their API:
A major focus of this project is going to be on querying the data
dynamically in real-time, and trying to integrate data from multiple
sources to compare data for a wider area with the data collected at
individual locations so see how much of a difference there can be in a
city like Chicago.
For a C you need to create a useful,
responsive interactive visualization focusing on the Array of Things
data for the Chicago area
Show the Array of Things sites in Chicago on an interactive map and
a table, allowing the user to filter based on any or all of the
pollutants being monitored (SO2, H2S, O3, NO2, CO, PM2.5, PM10) as
well as temperature, light intensity, humidity to see which sites are
collecting which data, and which sites are currently 'alive'. The
table view should also show the node's street address. The map view
should start out at an appropriate location and zoom factor.
Allow the user to change the map background between at least 3
useful varieties
Allow the user to tap on a node on the map or select it from the
table to see data from it for the current time, last 24 hours, last 7
daysin both tabular and
appropriate graphical forms, allowing the user to choose any subset of
the variables to visualize and compare
Allow the user to pick 2 nodes and compare them for the current
time, last 24 hours, last 7 days
The current data should be updated every minute
Allow user to show the data in either imperial or metric
Allow
the user to bring up information on the dashboard about who
wrote the project, what libraries are being used to visualize
it, where the data came from, etc
For a B you
need to add
in data for the Chicago area from Dark Sky and the previous
Projects:
When the user is looking at the AoT data for the current time, last
24 hours, last 7 days, add in the related Chicago area weather data
(temperature, humidity, wind speed, wind bearing, cloud cover,
visibility, pressure, ozone, summary) from Dark Sky for that location.
The user should, again, be able to choose whatever subset of variables
they wish to show from the AoT data and the Dark Sky data at the same
time in both graphical and tabular form.
Create a
heat map for the Chicago area where the user can choose to view
any of the AoT data or the Dark Sky data for the current time, min
/ max / average for the last 24 hours, or min / max / average for
the last 7 days. Note that to do a good heat map you may
want to collect data from outside the city boundaries.
Again, the
current data should be updated every minute
Again, allow user to show the data in either imperial or metric
For an A you
need to add in
data for the Chicago area from OpenAQ:
show the OpenAQ sites in the Chicago area on the map, allowing the
user to filter based on any or all of the pollutants being monitored
to see which sites are collecting which data, and which sites are
currently 'alive'
integrate data forPM25,
PM10, SO2, NO2, O3, CO and BC (note that some are not actively
being collected in this area) into the current,
last day, last week views, and the heat maps from the B requirements.
Again, the
current data should be updated every minute
Again, allow user to show the data in either imperial or metric
Graduate
Students need to add:
another dataset that helps to augment and explain the air quality
data in Chicago, that can also be queried live through R, subject to
Andy's approval.
In
all of these case you need to make sure that your visualizations are
well constructed with good color and font choices, proper labeling, and
that they effectively reveal the truth about the data to the user
Note
that as part of the web page part of the grade you will need to use your
interface to show your findings, so make sure that the way your
interface displays information is clear.
Again, your app will be
evaluated running full screen with touch interaction on the classroom
wall
and should not require scrolling.
For this project you should host your solution using the evl shiny
server. There are a new set of logins for this project.
There are two deadlines for this project. By the first deadline you should
have implemented the initial screen layout of your application and have
the basic functionality allowing the user to perform an example of the
various 'C' functionality on the classroom wall. This will make sure that
your group is on track and that you can focus on making a good interface
and set of visualizations, not just functional ones. Personally, I think
you should have the entire C functionality done at that point if you are
going for an A on the project as a whole. You should make this version of
the interface available on your group project page.
As part of the final turn in you should create a set of web pages that
describe your work on the project. This should include:
1 page with a link to your visualization solution and a description
of how to use your application and the things you can do with it.
1 page on the data you used, including where you got it, what you
did to it.
1 page with links to a zip file containing your well commented
source code, additionally needed data files, and any instructions
necessary to run it. These instructions should start from the
assumption that the reader has a web browser on their computer and
tell the user everything else he/she needs to know and do to get it
running using R studio.
1 page on what interesting things you found using your application.
This one is particularly important. Show that you can use your
application to find interesting things in the dataset and show the
screenshots to prove it.
1 page on the roles of the different team members
all of which should have plenty of
screenshots with meaningful captions. Web pages like this can be very helpful later on in helping
you build up a portfolio of your work when you start looking for a job
so please put some effort into it.
Be sure to document any external
libraries, tools, etc. that you make use of - give credit where credit
is due for everything that you didn't create yourself.
You should also create a 2-3 minute
YouTube video showing the use of your application including narration
with decent audio quality. That video should be in a very obvious
place on your main project web page. The easiest way to do this is to
either shoot it at the classroom wall or use a screen-capture tool
while interacting with your application, though you will most likely
find its useful to do some editing afterwards to tighten the video up.
Its also a good idea to have a video like this available as a backup
during your presentation just in case of gremlins. You
may want to shoot this video on the wall itself.
The web page including screen
snapshots and video need to be done by the deadline so be sure to leave
enough time to get that work done.
I will be linking your web page to
the course notes so please send andy and sai a nice jpg image of your visualization for the web. This should be
named p3.<someone_in_your_groups_last_name>.jpg.
When the project is done, each person in the group should also send Andy a
private email with no one else CC'd ranking your coworkers on the project
on a scale from 1 (low) to 5 (high) in terms of how good a coworker they
were on the project. If you never want to work with them again, give them
a 1. If this person would be a first choice for a partner on a future
project then give them a 5. If they did what was expected but nothing
particularly good or bad then give them a 3. By default your score should
be 3 unless you have a particular reason to increase or decrease the
number. If you are giving a score other than 3 you need to say why. Please
confine your responses to 1, 2, 3, 4, 5 and no 1/3ds or .5s please. Each
person's score on the project will be based on the overall score for the
group modified by these rankings.
Each group will show their
visualization to the class and describe its features. This allows
everyone to see a variety of solutions to the problem, and a variety of
implementations. Rehearse
your presentation ... several times. All team members are
expected to participate equally in that presentation.
Project 3 groups:
1 Masoud,
Rami &Munoz,
Jonathan &Kumar,
Mudit &Raol,
Jeet