Sweden 28-02-2012, Nijmegen Johan Svedberg & Ulrika Ehrenstråhle.
Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park &...
-
Upload
nordic-apis -
Category
Technology
-
view
63 -
download
3
Transcript of Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park &...
![Page 1: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/1.jpg)
PUBLIC TRANSPORT API’sHOW WE ARE USING AND CREATING LONG LASTING API’S AT NOBINA
@ULRIKAPARK & PETTER KVARNFORS
![Page 2: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/2.jpg)
RES I STHLM – THE JOURNEY PLANNER FOR STOCKHOLM PUBLIC TRANSPORT
![Page 3: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/3.jpg)
TRAFIKLAB – A COMMUNITY FOR OPEN DATA IN PUBLIC TRANSPORT
![Page 4: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/4.jpg)
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”
![Page 5: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/5.jpg)
![Page 6: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/6.jpg)
Central computer
WiFi antenna and router
Antennas on the roof
Computer for destination
displays
Ethernet switch
![Page 7: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/7.jpg)
![Page 8: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/8.jpg)
Onboard computer
MQTT Broker
GW400 Door2MQTT
Passenger Counter
Door Sensor
Passenger sensor
Position Tracker
GPS
Field Gateway
GPS Antenna Sensors
Interface programs
Broker
Programs
![Page 9: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/9.jpg)
#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); }
![Page 10: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/10.jpg)
#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); }
![Page 11: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/11.jpg)
#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); }
![Page 12: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/12.jpg)
#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); }
![Page 13: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/13.jpg)
#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); }
![Page 14: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/14.jpg)
Event Hub
App Servic
e
Blob storage
API
IoT Unit
Nobina Backoffice
MS Azure
![Page 15: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/15.jpg)
Event Hub
App Servic
e
Blob storage
API
IoT Unit App
trafiklab.se
Backend
Res i Stockholm
Nobina Backoffice
MS Azure
![Page 16: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/16.jpg)
Event Hub
Nobina Backoffice
App Servic
e
API
IoT Unit
trafiklab.se
Other apps
AppBackend
Res i Stockholm
MS Azure
Blob storage
![Page 17: Public Transport APIs – How we are using and creating long lasting APIs at Nobina (Ulrika Park & Petter Kvarnfors)](https://reader035.fdocuments.in/reader035/viewer/2022070516/5872d21d1a28ab74188b53f1/html5/thumbnails/17.jpg)
Thanks for listening!
COLLABORATE WITH COMMUNITY
DESIGN FOR CHANGE
USE STANDARDS
EXPERIMENT