Skip to content

Collecting drivers driving data for self and academic use

Notifications You must be signed in to change notification settings

AsafSH6/flurry-server

Repository files navigation

Flurry

Collecting drivers driving data for self and academic use


Flurry project helps you to collect data from experimenters using Android application and OBD-II device

















Server

Client

Server

Django Rest Framework API- easy to understand and use.

You are welcome to use our server: https://flurry.herokuapp.com/api/v1/flurry/ or manage your own:

  • Clone Flurry project
  • Create PostgreSQL database
  • Edit flurry.settings
  • Set environment variables: SECRET_KEY, DEBUG, DATABASE_URL, HERE_API_APP_ID and HERE_API_APP_CODE
  • Run: python manage.py makemigrations and then python manage.py migrate

DATABASE_URL connection string: postgres://username:password@host/DB

HERE_API_APP tokens are used in order to detect what is the maximum limitation of speed in a current location. you can get them from https://developer.here.com/

Querying the server

If you're familiar with Django Rest Framework then it will be very easy for you to understand the api.

  • List of drivers:
$ curl https://flurry.herokuapp.com/api/v1/flurry/drivers/
>> [
    {
      "id": 1,
      "user": {"id": 24, "username": "test"},
      "name": "Test Driver",
      "creation_date": "2016-07-13", 
      "driving_data": "https://flurry.herokuapp.com/api/v1/flurry/data-drivers/3/"
    },
    ...
]

"driving_data": url of the driver driving data.

  • Specific driver:
$ curl https://flurry.herokuapp.com/api/v1/flurry/drivers/{driver_id}/
>> {
      "id": {driver_id},
      "user": {"id": 24, "username": "test"},
      "name": "Test Driver",
      "creation_date": "2016-07-13", 
      "driving_data": "https://flurry.herokuapp.com/api/v1/flurry/data-drivers/3/"
    },
  • Driver driving data: list of lists where each list is a ride data. ride data is a list of jsons where each json is the driving data for specific time given that "Test Driver" driving data id id 3:
$ curl https://flurry.herokuapp.com/api/v1/flurry/data-drivers/3/
>> {
    "id": 3,
    "data": [
        [  // begin ride number 1
            {
                "throttle": "25.490196",
                "rpm": "839",
                "maximum_limition_of_speed": 30.0,
                "time": "1463043516031",
                "speed": "0",
                "gps": {
                    "lat": "31.87628096",
                    "lon": "34.9199814"
                }
            },
            {
                "throttle": "25.490196",
                "rpm": "858",
                "maximum_limition_of_speed": 30.0,
                "time": "1463043517152",
                "speed": "9",
                "gps": {
                    "lat": "31.87628096",
                    "lon": "34.9199814"
                }
            },
            {
                "throttle": "20.392157",
                "rpm": "2566",
                "maximum_limition_of_speed": 50.0,
                "time": "1463043543250",
                "speed": "22",
                "gps": {
                    "lat": "31.87641365",
                    "lon": "34.92051463"
                }
            },
            {
                "throttle": "94.90196",
                "rpm": "1545",
                "maximum_limition_of_speed": 50.0,
                "time": "1463043549281",
                "speed": "16",
                "gps": {
                    "lat": "31.8763137",
                    "lon": "34.9208201"
                }
            },
        ], // end ride number 1
        [ // begin ride number 2
        ...
        ], // end ride number 2
        ....
    ]
}
  • Specific ride: get the specific ride of driver by passing the parameter "ride" ride parameter starts from 0 (the first ride) and also supports negative index: ride=-1 => last ride
$ curl https://flurry.herokuapp.com/api/v1/flurry/data-drivers/3/?ride=2
>> [
     {
        "load": "56.47059",
        "throttle": "20.784313",
        "rpm": "1274",
        "maximum_limition_of_speed": 50.0,
        "time": 1468406223678,
        "speed": "10",
        "gps": {
            "lat": "31.89901517",
            "lon": "35.00820239"
        }
    },
    {
        "load": "54.901962",
        "throttle": "20.392157",
        "rpm": "919",
        "maximum_limition_of_speed": 50.0,
        "time": 1468406224989,
        "speed": "10",
        "gps": {
            "lat": "31.89901517",
            "lon": "35.00820239"
        }
    },
    {
        "load": "34.901962",
        "throttle": "17.647058",
        "rpm": "862",
        "maximum_limition_of_speed": 50.0,
        "time": 1468406226479,
        "speed": "6",
        "gps": {
            "lat": "31.89901517",
            "lon": "35.00820239"
        }
    },
    ...
]
  • specific data unit of specific ride: get the specific data unit by passing the parameter "data_unit".
    data_unit parameter starts from 0 (the first data unit of the given ride) and also supports negative index: ride=-1 => last data unit
$ curl https://flurry.herokuapp.com/api/v1/flurry/data-drivers/3/?ride=2&data_unit=-1
>> {
        "load": "26.666666",
        "throttle": "17.647058",
        "rpm": "854",
        "maximum_limition_of_speed": 50.0,
        "time": 1468407153683,
        "speed": "0",
        "gps": {
            "lat": "31.89163008",
            "lon": "34.92453954"
        }
}
  • get details about specific driver driving data:
$ curl https://flurry.herokuapp.com/api/v1/flurry/data-drivers/3/len/
>> {
    "number of rides": 55,
    "number of data units": 50357
}

###Apache License v2

About

Collecting drivers driving data for self and academic use

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published