We recently met up with developers at Mountain View and San Francisco to talk about SAMI and its device- and data-agnostic approach to IoT. At both events, Dr. Yujing Wu presented about SAMI device and application development and fielded questions from attendees. Below, find her slides and highlights from the Q&As.
We enjoyed some very thoughtful discussions and debates about SAMI use cases. Here we’ve answered some of the standout questions (and don’t forget to check the previous edition).
As a device manufacturer, why send data to SAMI instead of other IoT clouds?
- Data exchange is one of the key SAMI differentiators compared to other cloud services. It provides an ecosystem where device manufacturers, application developers and analytics services can discover each other and build sophisticated solutions together without cross-vendor integration pain.
- SAMI can take any type of data, instead of limiting the kind of data you can send to the cloud.
My company has smart devices and our own cloud. Why should I make my cloud data available to SAMI?
Making your data available to SAMI will enable other developers to discover your device and build applications using your device data. This will give your device broader exposure and may even reveal new possibilities for your device. Your data is more useful when combined with other data. Check out our blog describing how SAMI can aggregate data from disparate sources.
Adding devices to SAMI
It’s going to be a pain to add all our devices in the User Portal once these appliances become SAMI-compatible.
Here is one option. Run an application on the appliance that provides a login UI for the device owner. The appliance can then add the device by making an API call on their behalf.
Please note that SAMI is a platform for developers and our User Portal is here to provide shortcuts until you (as developer) have built your apps, which are what will eventually be used by end users. In summary, end users are not expected to use the User Portal in real-world scenarios unless they are power users.
How do I connect commercially available devices to SAMI?
As a developer, you have two options:
- Build a proxy app. For example, this blog talks about developing an Android app that reads data from a Polar H7 heart rate sensor via Bluetooth Low Energy protocol.
- Get data through a third-party cloud (see above for existing integrations). We understand the pain and are working on a toolkit to make it very easy for you to connect to any cloud that interests you and your users.
The demo shows how to manually add an authentication token. How can we automate this?
What we showed was an example tailored for educational purposes. In the real-world scenario, you should design your device management application to programmatically create device tokens for your devices. One possible way is to show a login UI to users and let them sign into SAMI. After that, your application can create device tokens and add devices via API calls for the user. We also support secure device registration.
Security, communication and Rules
How do I keep SAMI from seeing the contents of my data, such as fields, units and values?
You can define your Manifest by using obscure field names and encrypting the data in the fields. This way, only those applications and devices you create can understand your fields and encrypted data.
A data exchange platform like SAMI is a superset of silo systems. If you do not want SAMI to understand your data, or share your data with other applications, this is possible.
Except HTTP protocols, does SAMI support other communication protocols between the device and the cloud?
At this point, SAMI also supports WebSockets for near-real-time communication. We are always evaluating the best ways to enable communication to SAMI while preserving performance and security, and may be adding new protocols soon.
Some IoT clouds offer rule logics. Does SAMI?
Yes! SAMI Rules allow a user to define a rule that allows SAMI devices to interact with each other (e.g., IF door is open, THEN turn on hallway light). Very soon, we will be releasing Rules APIs that allow developers to create and manage Rules for users within an application.