Schwung Bluetooth protocol
The goal of Schwung app is reducing the time cyclists have to wait at traffic lights by communicating the location of cyclists with traffic light controllers. A movie about the working of Schwung can be found here https://www.youtube.com/watch?v=zPt5rectsWs and here https://www.youtube.com/watch?v=uqj71LEbvZs. Schwung is developed as a collaboration between Infoplaza and Vialis.
This protocol is created to introduce extra functionality, in the first version of the app it was only possible to communicate from the phone to the traffic light controller. In the newest Android version it's also possible to receive feedback. In this way, the user knows if a request for green is made at the TLC and on some locations also if green is extended (at this moment only on the locations in Breda). Cyclists shouldn't be distracted by their phones during cycling. Therefore a Bluetooth protocol is developed that enables Schwung to communicate with a variety of Bluetooth peripherals. Possible devices could be smart bicycle bells, speakers, blinking LEDs, but that's up to your creativity! In the future the protocol could be extended so that it communicates the TTG (Time to green) and TTR (Time to red) as well.
The protocol is based on GATT https://www.bluetooth.com/specifications/gatt/generic-attributes-overview. At this moment the protocol contains one service with one characteristic.
|REQUEST_STATUS||713D1003-503E-4C75-BA94-3148F18D941E||0x00 = UNKNOWN
0x01 = GREEN_REQUESTED
0x02 = GREEN_EXTENDED
0x03 = ERROR
The status GREEN_REQUESTED means that a request for green is made to the traffic light controller. (That is similar to detections with detector loops or buttons). That can be followed by the status GREEN_EXTENDED in the city of Breda. This status means that the traffic light stays a little bit longer green, so the cyclist doesn't have to wait.
At this moment there is an example implementation available of a Bluetooth peripheral based on the BLE Nano V2 (https://redbear.cc/product/ble-nano-kit-2.html) to get you started or if you want to experiment with the Bluetooth functionality without having to develop your own device. The source code for this example can be found in this repository.