15 Unbelievably Helpful Expert Tips for Developing IoT Apps
The Internet of Things (IoT) is an exciting new frontier for developers. It’s an opportunity to create apps that can connect a multitude of products that previously lacked any way to share data. We’ve seen some amazing IoT apps come out of our hackathons.
There are plenty of tools available aimed at making the whole process easier. Many of you already know about M2X, a cloud-based fully managed time-series data storage service for M2M devices and IoT. The Bluetooth SIG association offers six training opportunities through its Innovation Series to provide developers with practical, in-depth knowledge about adding connectivity to everyday objects. Since Bluetooth (especially BLE) is a popular tool in the IoT arsenol, developers might also be interested in the Bluetooth Developer Studio, which can be used to help shorten development time by as much as 70 percent.
Developers looking for a drag and drop option to connect items might be interested in Octoblu. The company just released an IoT flow sharing feature that allows you to search for automations created by other users that utilize similar nodes such as Phillips Hue bulbs, Twitter, AllJoyn, Blink1, etc. According to Chris Matthieu, co-founder of Octoblu and now Director of IoT Engineering at Citrix, “Users can log into Octoblu and click the Discover link to access our directory of shared flows. You can use the search bar at the top of the page to find flows with desired nodes and then click the import link in the flow description to add it to your designer.”
15 Tips to Simplify IoT Development
As we all know, IoT is more than just useful tools and training options. It also involves some great ideas, clever planning, and literally thinking out of the box. With that in mind, we reached out to experts and people building IoT apps and solutions daily to see what advice they have when it comes to developing IoT apps. Here’s what they had to say:
- Developers need to be more fluent with modern language options. People fixate on C / C++ when there are languages like Nim, Go, and Rust that target embedded systems but provide modern conveniences. – Eric W. Brown, ThoughtSynth
- Consumers are unlikely to widely adopt IoT and its devices if we don’t deliver on the larger vision of devices working in symphony to make our lives better, regardless of who makes it. Using open standards to build the IoT, like the Domain Name System (DNS) that already universally runs the Internet, opens communication between devices and helps deliver the larger vision that consumers expect. DNS allows for greater value by suddenly being able to connect devices into networks: a porch light that knows to turn on when your car is around the block, a coffee pot that turns on when an alarm clock goes off, or even an entire office unlocking itself and turning lights on when an owner’s smartphone is detected near the front door. But, setting the IoT’s foundation with this vendor-neutral DNS approach goes beyond consumer value. Vendors benefit from the flexibility of open standards with the prospect of innovation as new ideas are conceived and technology is available. – Andrew Sullivan, Fellow for Internet Performance company, Dyn, and Chair of the Internet Architecture Board
- Work with others. IoT platforms are becoming more and more open, with more standards being defined. Make sure your app can link with 3rd party APIs to provide your users with additional functionality. Just ensure that you focus on how the user will interact with the app and embrace its limitation when choosing what you link with. For example, a heating system that delays your schedule based on your current ETA and traffic patterns is useful, a coffee machine that makes you an espresso when you turn the kitchen light on is not. – Michael Hollins, Smart Controls division Product Developer for WarmUp
- In hardware, we have a term Design for Testing (DFT) – leave certain hooks so that this thing can be tested automatically. On a typical chip that goes out, such as a CPU, something like 5-10% of the transistors are there to enable testing. We need to think in this direction, we need to design for test. You can have a staging environment on the device itself, push things to the staging environment, and then if they work to the device itself. It goes back to designing the hardware as well as the software and having these features built in. – Aater Suleman, CEO of Flux7
- It’s way easier to create a software that lives purely on the Internet than creating something that functions under real world conditions that may slap you in the face with many unexpected factors and especially when it is designed to be both digital and physical. – Artur Kiulian, CEO at Capitan
- The biggest limitation may be the battery, and the most power-hungry component is typically anything with a radio (Bluetooth LE, Zigbee, Wifi, GPS). Limiting the use of the radio is probably the biggest key to extending battery life. Only use them when you absolutely have to, because leaving them up and running all the time will kill battery quickly. If the device can be powered externally, so much the better. After the radio, carefully look at how things like sensors and the CPU are used. These can also add up, and limit battery life. – Geoff Kratz, Co-Founder and Lead Technologist at bbotx
- “Don’t fall in love with the hardware (unless you manufacture it!).” My synopsis of this: During development, use the most accessible, affordable solution that demonstrates your purpose. There are many hardware solutions available, so be flexible. – Thomas Grassl, VP Global Head Developer Relations, SAP
- When I’m developing apps for an IoT device, I find it really useful to try and find a library that wraps HTTP requests in my language of choice rather than attempting to integrate from the ground up using CURL. When I developed an integration for my Philips Hue bulbs for the Amazon Echo to control my lights I used the soffes/hue Ruby repository and found myself up and running quite quickly! – Zach Feldman, Chief Academic Officer + Co-Founder, New York Code + Design Academy
- Embrace the limitations of your application. Many early IoT applications were designed as home automation platforms, capable of flexibility in the type of devices connected (lights, radio, TV etc.), but in attempting to control all systems, failed to present a compelling use to the mainstream customer. By exploring the limitations of your possible functionality (for example your system currently only connects with light switches) and clearly defining your niche within this, you can create a more engaging and ultimately more marketable product. – Michael Hollins, Smart Controls division Product Developer for WarmUp
- The simplest and cheapest way for a developer (or startup) to get into IoT is to partner and join with an existing player. E.g. – Let’s assume, you want to develop a device for the home. You will be far better off joining an existing brand that potentially offers you a technical home as well as access to markets later on in development. Developing IoT applications from scratch is more costly and time consuming. – Marcus Scheiber, CEO and co-founder of ROC-Connect
- Understand the use cases for the device that you are building well before you build it out. This allows you to account for different scenarios and ensure the best implementation of Bluetooth technology to make the user experience convenient, reliable, and “just works.” Specifically for developers working with Bluetooth Smart technology in IoT, the biggest thing is to understand 3 principles of Bluetooth Smart: 1) GAP– Generic Access Profile 2) GATT– Generic Attribute Profile , and 3) ATT – Attribute Protocol. This will help you define that structure after you’ve white boarded the scenarios. – Steve Hegenderfer, Director of Developer Programs at the Bluetooth SIG
- Developers should consider the “Build vs. Buy” argument when building out certain infrastructure elements, like a data stream network, in their IoT products and services. Building out a fully functional data stream network on your own isn’t as easy or cheap as you may think. There are a number of considerations and costs that need to be taken into account when building it yourself. It’s important to weigh the total cost of ownership for your solution, including Engineering & Operations Setup Time, Maintenance and Orchestration for WebSocket Servers, WebSocket Server Costs, Security and WebSocket SSL and Deep Technical Expertise.
When you decide to move your app from the lab and deploy it into production, scale and orchestration need to be taken into consideration. When you use a data stream network service provider, they handle this in all its complexity so you don’t have to. It’s their job to set up and maintain servers, install and update software and versions, upgrade features and add new service capabilities, and perform any and all necessary maintenance. You may also run into the issue of picking the correct framework or protocol for your exact need. A data stream service provider will oftentimes build a number of SDKs for whatever platform or device you want your app to run on. – Joe Hanson, Content Marketing Manager at PubNub
- Leverage existing ecosystem around IoT apps to create interconnected services, experiences and business models. Developers tend to isolate their tech solution within the closed intranet that doesn’t really unleash the power of the interconnectedness. – Artur Kiulian, CEO at Capitan
- Remember that devices are typically very limited when it comes to resources. They have limited CPU, small amounts of memory and not a lot of storage. Code has to be kept small and computing needs to be kept down. Part of that means limiting how many frameworks and layers you put into the software that runs on the device. It may help productivity, but it can kill you on resource usage, particularly if the framework or layer is doing something unexpected or that you can’t easily control. This is like going back to the early days of computing – writing software for the device (even if it is based on a Raspberry Pi or something similar) is going to be more like writing code for the first PCs. Think small and assume there are significant resource limits. – Geoff Kratz, Co-Founder and Lead Technologist at bbotx
- It’s all about selecting the right “tool” for the job at hand. You don’t have time to reinvent the wheel and the world doesn’t have enough RF engineers to create all of the products the market will bear; you need to take advantage of reference designs to ease each step of the process. These are available for everything from chipset integration and Q/A to high volume manufacturing. By utilizing reference designs developers can focus attention on making sure their product delivers amazing value and delights their customers. – Brad Robbins, President, LitePoint
There you have it. Some really interesting tips from the pros that may help you simplify developing IoT apps. What do you think of the tips? Are there any that really resonate with you? Let us know in the comments below and be sure to share your favorite IoT development tips, as well.
Interested in learning more about the Internet of Things? We have an O’Reilly Solid Conference 2 day pass availalble for a lucky person to win. If you plan to be in or around the San Francisco area June 24-25 write in the comments and we will select a winner. The pass includes access to all sessions on Wednesday and Thursday, keynotes on those days, a three month subscription to Safari Pro and other great items. For more information on the conference go to their site (http://solidcon.com/internet-of-things-2015) and check it out! Comment below to win the pass and we will randomly select a winner by Friday, June 5.
Photo Credit: Image courtesy of QuartSoft