public transport apis – how we are using and creating long lasting apis at nobina (ulrika park...

Post on 09-Jan-2017

63 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PUBLIC TRANSPORT API’sHOW WE ARE USING AND CREATING LONG LASTING API’S AT NOBINA

@ULRIKAPARK & PETTER KVARNFORS

RES I STHLM – THE JOURNEY PLANNER FOR STOCKHOLM PUBLIC TRANSPORT

TRAFIKLAB – A COMMUNITY FOR OPEN DATA IN PUBLIC TRANSPORT

HOW TO ADDRESS THE CHALLENGES• For long term solutions: Influence

Trafiklab, SL, bus & train operators – working on source data, make data reliable

For urgent solutions: Build our own solutions – for bad and good. Ex: ”the Jesus problem”, ”Where is the bus?”

Design for error – Design the app for expected errors in data

Co-operate with the community. Communities have new ideas and solutions – for instance the ”Right exit”

Central computer

WiFi antenna and router

Antennas on the roof

Computer for destination

displays

Ethernet switch

Onboard computer

MQTT Broker

GW400 Door2MQTT

Passenger Counter

Door Sensor

Passenger sensor

Position Tracker

GPS

Field Gateway

GPS Antenna Sensors

Interface programs

Broker

Programs

#define MQTT_HOSTNAME "localhost"#define MQTT_PORT 1883#define MQTT_TOPIC "nobina/position/gps"

struct mosquitto *mosq;

int main(int argc, char* argv[]){ initialize_mqtt();

mosquitto_connect(mosq, MQTT_HOSTNAME, MQTT_PORT, 60); mosquitto_loop_forever(mosq, -1, 1);

mosquitto_destroy(mosq); mosquitto_lib_cleanup();}

void mqtt_connect_callback(struct mosquitto *mosq, void* userdata, int result){ if (!result) { mosquitto_subscribe (mosq, NULL, MQTT_TOPIC, 0); } else { fprintf(stderr, "Connection failed\n"); }}

void mqtt_message_callback(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) { send_to_event_hub((char *)message->payload); }

#define MQTT_HOSTNAME "localhost"#define MQTT_PORT 1883#define MQTT_TOPIC "nobina/position/gps"

struct mosquitto *mosq;

int main(int argc, char* argv[]){ initialize_mqtt();

mosquitto_connect(mosq, MQTT_HOSTNAME, MQTT_PORT, 60); mosquitto_loop_forever(mosq, -1, 1);

mosquitto_destroy(mosq); mosquitto_lib_cleanup();}

void mqtt_connect_callback(struct mosquitto *mosq, void* userdata, int result){ if (!result) { mosquitto_subscribe (mosq, NULL, MQTT_TOPIC, 0); } else { fprintf(stderr, "Connection failed\n"); }}

void mqtt_message_callback(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) { send_to_event_hub((char *)message->payload); }

#define MQTT_HOSTNAME "localhost"#define MQTT_PORT 1883#define MQTT_TOPIC "nobina/position/gps"

struct mosquitto *mosq;

int main(int argc, char* argv[]){ initialize_mqtt();

mosquitto_connect(mosq, MQTT_HOSTNAME, MQTT_PORT, 60); mosquitto_loop_forever(mosq, -1, 1);

mosquitto_destroy(mosq); mosquitto_lib_cleanup();}

void mqtt_connect_callback(struct mosquitto *mosq, void* userdata, int result){ if (!result) { mosquitto_subscribe (mosq, NULL, MQTT_TOPIC, 0); } else { fprintf(stderr, "Connection failed\n"); }}

void mqtt_message_callback(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) { send_to_event_hub((char *)message->payload); }

#define MQTT_HOSTNAME "localhost"#define MQTT_PORT 1883#define MQTT_TOPIC "nobina/position/gps"

struct mosquitto *mosq;

int main(int argc, char* argv[]){ initialize_mqtt();

mosquitto_connect(mosq, MQTT_HOSTNAME, MQTT_PORT, 60); mosquitto_loop_forever(mosq, -1, 1);

mosquitto_destroy(mosq); mosquitto_lib_cleanup();}

void mqtt_connect_callback(struct mosquitto *mosq, void* userdata, int result){ if (!result) { mosquitto_subscribe (mosq, NULL, MQTT_TOPIC, 0); } else { fprintf(stderr, "Connection failed\n"); }}

void mqtt_message_callback(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) { send_to_event_hub((char *)message->payload); }

#define MQTT_HOSTNAME "localhost"#define MQTT_PORT 1883#define MQTT_TOPIC "nobina/position/gps"

struct mosquitto *mosq;

int main(int argc, char* argv[]){ initialize_mqtt();

mosquitto_connect(mosq, MQTT_HOSTNAME, MQTT_PORT, 60); mosquitto_loop_forever(mosq, -1, 1);

mosquitto_destroy(mosq); mosquitto_lib_cleanup();}

void mqtt_connect_callback(struct mosquitto *mosq, void* userdata, int result){ if (!result) { mosquitto_subscribe (mosq, NULL, MQTT_TOPIC, 0); } else { fprintf(stderr, "Connection failed\n"); }}

void mqtt_message_callback(struct mosquitto *mosq, void *obj, const struct mosquitto_message *message) { send_to_event_hub((char *)message->payload); }

Event Hub

App Servic

e

Blob storage

API

IoT Unit

Nobina Backoffice

MS Azure

Event Hub

App Servic

e

Blob storage

API

IoT Unit App

trafiklab.se

Backend

Res i Stockholm

Nobina Backoffice

MS Azure

Event Hub

Nobina Backoffice

App Servic

e

API

IoT Unit

trafiklab.se

Other apps

AppBackend

Res i Stockholm

MS Azure

Blob storage

Thanks for listening!

COLLABORATE WITH COMMUNITY

DESIGN FOR CHANGE

USE STANDARDS

EXPERIMENT

top related