BlueNote | William Pepera

BlueNote Alerts Where and When You Need Them


As modern communications technology develops and the number of connected devices and applications proliferates, so to do the instances and opportunities for distraction.


Notifications are generally triggered by an event (a message has been received) or at a given time. Location based notifications are becoming more prevalent but it can be difficult create an indoor positioning system (IPS) traditional satellite navigation systems (GPS) methods. BLE technology offers an opportunity to determine location in a precise fashion using signal strength triangulation.


An application that alerts you not just when you need it, but where you need it as well. This example tube disruption app notifies users of delays on selected lines only once they've gone downstairs that morning.

Stacks Image 194

Tube Lines

The app allows you to select which tube lines you would like notifications for. In the event that there is a disruption to one of those lines and other configurable conditions are met (e.g. you are downstairs between 0700 and 1000) then a group alert will be generated with one entry for each selected tube line with a description of the delay.

Stacks Image 305

BLE Beacons

The user selects which BLE devices are the ones to use for triangulation. BLE is used because it doesn’t consume much battery, little information needs to be sent in this application and no connection needs to be maintained for the app to work.

Stacks Image 301


A notification is sent via the app in the instance of a disruption to a selected line at a time and place of the user's choosing. The app was built using Flutter to have a shared codebase for IOS and Android.

Stacks Image 191

TFL Data - Predicting Disruption

In order to estimate to probability of disruption between any given hour of the day, any disruption was modelled as 1 and good service as 0. The proportion of readings during any given hour that are disruptive is used to estimate the probability of disruption. The disruption is minimal in the small hours of the morning when only a few of the lines are running a night service and the majority of the lines are closed. The disruption rate rises to a peak of roughly 0.3 (30%) at 0900, and falls sharply, evening out in the mid afternoon and decreasing more steadily. A potential inference from this is that the disruptions are generally as a result of “rush-hour” in the morning where frayed tensions and congestion dramatically increase the chance of disruption. This model fits well with existing intuition and thus may not be used directly but can confirm that between 0700 and 1000 are suitable times for an alert window (although the user will be able to adjust this interval).

Stacks Image 178

BLE Data - Detecting Location

Three bluetooth beacons were set up, in the lounge, the attic and bedroom. As such, for the K-Means clustering feature identification process, the number of clusters was set at 3. By inference from the RSSI values, the clusters could be identified.

Stacks Image 242

Data Storage

Tube line status is collected using the TFL API ( The data is stored in AWS (Amazon Web Services) DynamoDB NoSQL tables. The serverless, AWS Lambda script which pulls the data from the TFL API is triggered using an HTTP request with API key authentication periodically from the phone app. The phone app periodically checks the respective RSSIs (received signal strength indication) of the BLE beacons.

Stacks Image 232

System Diagram

The main communications protocols employed are HTTP and BLE. Each BLE scan triggers a corresponding HTTP POST request that sends data to the respective database. TFL API data and BLE RSSI (Signal Strength) data are collected periodically by the phone app.

Next Project

Stacks Image 314


Enhance Every Day

Comfort, Convenience, Safety