To create a successful Internet of Things, devices/applications must be able to interoperate easily cross vendors and markets (digital health/smart home/smart car et al.). The next challenge for IoT is to break the silos and enable companies to analyze the rich data and provide deep insights to users.
In this presentation, we will talk about how an open, cloud-based data exchange platform can address the two challenges. We want to create an ecosystem where each player (device manufacturers, application developers, analytic service providers etc.) can focus on what they do the best instead of dealing with the complexity to build end-to-end systems. We will use a case study to illustrate our points.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Open, Cloud Based Data Exchange Platform Eases Development for IoT
1. Dr. Yujing Wu
Developer Evangelist
@yujingwu
https://www.linkedin.com/in/yujingwu
https://www.samsungsami.io/
Open, Cloud Based Data Exchange Platform
Eases Development for IoT
21. Four steps for app development
1. Discover device type data
2. Create app and request permissions
3. Obtain an access token
4. Make API calls: Get data from SAMI
23. Four steps for app development
1. Discover device type data
2. Create app and request permissions
3. Obtain an access token
4. Make API calls: Get data from SAMI
25. Four steps for app development
1. Discover device type data
2. Create app and request permissions
1. Obtain an access token
2. Make API calls: Get data from SAMI
27. Four steps for app development
1. Discover device type data
2. Create app and request permissions
3. Obtain access token
4. Make API calls: Get data from SAMI
28. App Dev(4/4): get data from SAMI
https://api.samsungsami.io/v1.1/messages/last?count=1&sdids=xxxx
Header: "Authorization": "Bearer <ACCESS_TOKEN>"
"data": {
"onFire": false,
"temp": 161.00062561035156
}
29. Four steps for app development
1. Discover device type data
2. Create app and request permissions
3. Obtain access token
4. API calls - get data from SAMI
Good evening and welcome everyone. Let me first introduce myself. My name is Yujing Wu and I am a developer evangelist with Samsung Strategy & Innovation Center. I have been developing software for years. One year ago, I moved to the Internet of Things. I build sample applications and blog about the development. You can find me on LinkedIn and Twitter. I am happy to connect with everyone here.
Interoperability is one of the biggest IoT challenges. Tonight we will discuss how an Open Cloud based data exchange platform can ease development. The slides will be available online.
I will cover the challenges, what is our solution, then show you prototype I made to illustrate the points. At the last, briefly mentions other support tools for developers.
I will take your questions at end of the each sections and also in the middle of the 2nd sections.
REVISE: too long, shorten the words, remove/simplify/consolidate the examples, avoid repeating myself too much Done
As more and more devices come to the market, it is very typical that an user has devices from multiple vendors and for different usages like health, smart home, and smart car.
I use health as an example. The user has a smart scale from Withings and blood pressure monitor from iHealth, and wear fitbit band to track activity.
Each of these devices has the separate apps and the separate cloud. These systems do not talk to each other. We call them the silo systems.
it is not hard to see the pains caused by the silo systems from three angles: users, application developers, and device developers.
The user needs to install 3 apps, create 3 accounts and remember which app to check for which data. As the number of the vendors of his devices increase, the pain is growing.
The application developer needs to do integration with three clouds in order for his app to use the data from the clouds. As the number of device vendors in the market increases, such integration with Silo systems are not scalable and are painful.
With the silo system mindset, a device developer cannot only focus on building innovative hardware and devices, he also needs to build apps for his user to view data and build cloud for data to be available every where
==========
Here are more detailed words. Save for the future.
As an application developer, the silo systems creates a lot of integration pain. For example, I want to create a mobile app that monitor a user’s activities and health data, identify lifestyle issues, motivate people to transit lifestyle towards improved health. The app need to use all three data sets from different vendors. It is not easy to do it. I have to make API calls to different clouds. Even you can do it, then another type of devices came to the market. You have do integration to get the data. How about the app also require environment data (such noise, light, humidity et al.)? This integration to individual cloud is painful and NOT scalable.
As a device developer, it is going to increase time to market of my device if having silo system mindset. ( For example I created a touch free device to measure the heart rate and heart rate variability much accurate than what are in the market. Do I have to develop a mobile app not just to show the data and also provide insight to the user, do I have to develop a cloud in order to access the data anywhere??? With silo system mindset, I will have to build other components instead of focusing on the device developer that I do the best.)
From the examples, we are seeing three challenges brought by silos
======
TODO:
Do Apple smarthome kit and googlefit address the issues?
Brainstorm words:
fragmentation by creating vertical stacks of integrated products.
TODO:
- There are two challenges in the meetup summary, here we list three…. How to solve it.
We believe an open data exchange cloud breaks silos and solve the pain points.
Samsung SAMIIO or SAMI for short is such an open data exchange platform. It is one of Samsung’ initiatives around the Internet of Things.
SAMI is open system and data agnostic. It can accept any format data input from devices, and store and transport them properly. SAMI accommodates to the device, not the other way around. SAMI uses device Manifest to achieve that. I will get into more detail about the Manifest.
Being open and being able to accept any format of data is not enough. SAMI is also a data broker. It allows different players in the IoT landscape to discover each other and create rich customized service to end users. Examples of the players are device developers, application developers, analytics service providers. Data exchanging differentiates SAMI from other open platforms that only provide messaging/transportation service to diverse IoT devices
SAMI can effectively address IoT challenges caused by silo systems.
I will cover the challenges, what is our solution, then I am going to show you prototype I made to illustrate the points. At the last, briefly mentions other support tools for developers.
I am going to show the prototype system: fire and temp monitor system. There are two aspects: device development and application development. There are two actors. The key point to illustrate is that how different players can build this system together without integration pain.
Device developer is creating great device and want to make his device data available to their users and other developers. Application Developer wants to uses data from temperature and fire detectors to offer a cool service to his users.
This is a simple prototype uing the hardwares in my office. Explain the hardware setup (breadboard, sensor…..). I am sure there are better way to build this type of device. This is not our focus here.
My goals is to show you how to bring data to SAMI to allow other to discover it and use it. Mention three data field from which sensors…
Do not read text. For each step, add some details, but only one sentence….Explain device types
---------------
REVISE
SAMI is data agnostic, I can connect any device, in my case I have three data points
Remind them about the Manifest, tell the story of manifest and in brief how you create
explain more clearly what it means that a device type is public, how it becomes discoverable and other developers can use it
follow her blog and replicate
@todo redo screen shot on right
In Step 2, I create this new device type on SAMI. I do that using one of SAMI tools called Developer Portal. I need to log in the Developer Portal as a developer. Device type creation is straightforward and II do not need to walk through the creation process. On the left hand screen, you can see the name of my device type. The screen is showing the Manifest definition during device type creation. The manifest is the contract between data from my device type and SAMI. In this case, I have three data filed in the Manifest. These fields come from Step #1. Because of the Manifest, SAMI can be data agnostic. In addition, allows other applications understand data from your device type and build rich application around it.
On the right hand screen, my device type is created. I can finish all required fields and then publish this device type by clicking the button. It means that the device type is public, and other developers can discover it and users can use it. For the live demo, I do not publish it since I already has one published…. How to navigate to user portal???
--------------------------
Connect device in user portal
need to be a lot more explicit about the difference between devportal and user portal. explain the steps more clearly. possibly split in two slides
I want to show you that what a user can see once I published a new device type in SAMI. I use another SAMI tools called the User Portal. This portals allows a user to see all his devices that are in SAMI and see device data.
As a user, I log into the User Portal using a separate account as a user. to connect this device in my account. I can login using my user account/developer account.
Using OOP concept class and instance to explain the relation between device type and device
--------------------------
Connect device in user portal
need to be a lot more explicit about the difference between devportal and user portal. explain the steps more clearly. possibly split in two slides
As a user, I log into the User Portal to connect this device in my account. I can login using my user account/developer account.
Mention I can do connection as another user (not necessary as device developer).
What I talked is ok except adding the following piece @TODO
Bring some connection between copy/paste did/token to nodejs and this slide
Go back to user portal to see the live data.
At this point, SAMI is used as backend storage and web portal to see data. (charts or data log).
@TODO shorten the description of the 2nd screen
Emphasize application interoperability. The application and service can be developed by different companies.
Emphasize privacy (use different type of token) and access control. The user needs to grant the (READ/WRITE/BOTH) permissions to the application to use the data
Privarcy is very important. This screen shows how users are in control of what they share. My application is asking the read perm from the user.
SAMI provided a few ways for developers to discover device type characteristics. On this screenshot, I used APIConsole to get the information of the device type created by previous device developer.
. APIConsole is a tool for you to exercise API calls without writing code. The HTTP response on the screenshot shows the data points of the device type, which is the same information provided by device developer earlier.
SAMI uses OAuth2 protocols to authenticate a user and get an access token
There are a few ways to file authentication calls for different types of access tokens.
@todo: highlight the three fields
Emphasize: with earlier Manfiest research, you know what the date playload looks like and you know the unit for specific field. Then in your monitor application, you may display these data nicely.
-----------
REVISE:
What is benefit for Company C coming into the picture? Think how to express it or maybe mention multiple devices/apps work together. Recap data exchange I mentioned in the earlier slide DONE!
Thanks to data exchange capability, two different players can build the whole monitoring system easily without integration pain.
Following the same thought process, application developer can enhance his app to use other device types and may control the device. All device types are created by him.
The device developer….
Each of the players in the ecosystem can focus on what they do best, instead of building a complicated end-to-end system.
----
data intelligence cloud platform from Company C can easily work with SAMI to provide data analysis or trigger event based on the user’s various devices including this newly created DIY device types
I will cover the challenges, what is our solution, then I am going to show you prototype I made to illustrate the points. At the last, briefly mentions other support tools for developers.
3rd party applications, top gray block, interact with SAMI cloud on the bottom via API calls.
We have architected SAMI to be scalable, robust, and secure to support the billions of devices we hope to manage soon.
WE give you a system that scales and is safe, so that you don’t about sending or consuming the data from this platform.
Beyond SAMI cloud, we provide a set of tools to help you use cloud. These tools are orange blocks in the middle.
We are using ad-hoc data stores, from MongoDB to Cassandra as well as Elastic Search to cover all the needs of our developers.
----
We are trying to automate everything, from the builds to the QA process, the security checks or the deployment.
Cutting edge deployment
We have all the different data stores – like XXX
We use cutting edge preanalytics that prepare the data for fast efficient use – Things like Cassandra, Mongo DB and Elastic Search
First of all, we’ve adopted a non religious Agile methodology that allows us to be very reactive and flexible in the technology choices we’re making.
MISOS Docker allows the server to adapt to whatever needs you have (see twitter, netflix …
We have made it economical and scalable to run all these data bases and technologies.
Now you have easy access to all that data in one place, where it can be shared
To speedup development with SAMI, we have SDKs for popular languages like Android, iOS, Ruby, Python, PhP, etc….It becomes easier to build Sami application using SDK.
Our SDKs and advance sample applications are open-sourced and hosted on github. Please check out the code and help us to fix it if you find a bug.
Thanks for joining us today. If you have a question, I am happy to answer now.