Skip to content

inf-2202-f17/2nd_mandatory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Second mandatory assignment:

Re:activity - A reactive bike computer

In this assignment you will make a near real-time reactive bike computer. The overall idea is that you will have a bike computer that is always online. The computer connects over the mobile network (3G) and streams its current position to a the Re:activity cloud service. The Re:activity cloud service will react to the incoming data, and enrich the stream with insights that it will feed back to the client.

The Re:activity cloud service also receives data from other riders, and can also produce insights based on the data produced by these other riders.

WebClient

The pre folder contains an example server and test client. Please note that this code have only been tested with Python 3.5+:

  • server.py An example Re:activity server that supports multiple (test) clients using web sockets.
  • testclient A test client that will replay data from the gpx files in the data folder.

The pre/data folder contains:

  • Test GPX data files from 12 real cyclist from the Tour d'Afrique 2017, stage 109, Sesriem - Betta (137 km) going through the Namib desert. You can replay this data using testclient.py.

To use the example code you will need to signup for a Google Maps API key and add it to server.py. You also need to install some required libraries:

> pip3 install rx
> pip3 install tornado
> pip3 install jinja2
> pip3 install python-dateutil
> pip3 install geopy

In first terminal:

> python3 server.py

In second terminal:

> python3 testclient.py

To use a web client, point your browser to: http//localhost:8080

To follow a particular cyclist: http//localhost:8080/users/dag

NOTE: If you cannot get the example code to work, and you get the "SecurityError: The operation is insecure" on Firefox (console), then make sure you reopen a new window or tab, and that you are not reusing an existing one.

What we expect from you

In this assingments we expect that you use RxPY to transform the stream of GEO events into streams of insights such as:

  • Current speed (km/h)
  • Max speed (km/h)
  • Moving average speed for the last 5 minutes, with timeshift of 1 minute (km/h)
  • Time to destination (-25.3825800,16.4237190), based on avg speed.

NOTE: All analytics code must be unit-tested. Analytics code that deals with time must be unit-tested in virtual time.

Notifications

  • Rider detection (you are passing/or being passed by someone)
  • Lunch or coke-stop detection. Other riders have stopped at this place. Give a notification to the user when he/she is approaching.

Friends

  • Produce a TopN people model (ordered collection of people) that are the most relevant to to a given rider. This is the people you cycle the most together with, or pass on your way.

Hand-in

The usual:

  • Code in src/
  • Report in doc/

Deadline

The final Hand-in must be pushed to your own repository in the classroom prior to:

  • October 4. 23:00

Bonus points

  • Make a dashboard on the web-page that displays produced insights and notifications for a given rider.
  • Time to sunset. Cycling in Africa after dark is very dangerous (cars and wild animals), so you better reach the destination before the sun goes down. https://sunrise-sunset.org/api. Note that you may not use this API in a manner that exceeds reasonable request volume.
  • Use Google reverse geocoding API to lookup names for points of interrest (POI). Such places may be start, stops along the way, destination etc.
  • Display a notification to other riders if a rider breaks the laws of cycling physics (been picked up by a car)
  • Sunset notification to make a rider speed up to reach destination before dark
  • Explain if the produced insights are hot or cold based on when a client connects to the server (hint: will all clients see the same view for a given rider?).
  • Move parts of the solution client-side using RxJS.
  • Make something cool.

Resources on reactive programming

Happy Rx hacking!

NamibRand

About

Re:activity - A reactive bike computer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published