loading...
DevFestNYC

AndroidThings & IoT Recap

nitya profile image Nitya Narasimhan Originally published at Medium on ・7 min read

The Android Things team held a webinar today to spotlight two key resources for IoT developers: the Android Things platform & the Hackster.io community.

This is a quick recap of what we learnt at from that call. The talk was taped – follow GDG New York City to get notified if the video is publicly shared.

What is IoT?

There is a lot of hype, but also a lot of opportunity, in the domain being referred to as the Internet of Things (IoT).

At its core, the IoT vision involves connecting physical objects to the Internet, enabling an ecosystem of digital services that can be powered by the data generated from these objects (context sensing) or be used to control them (actuation) remotely via mobile or web apps. Gartner predicts these “intelligent things” will be a key strategic technology in 2017.

Gartner's Top 10 Strategic Technology Trends for 2017 - Smarter With Gartner

While IoT is often used to talk about products in the consumer industry (smart home, wearables, autonomous vehicles), the Industrial IoT (IIoT) segment is gaining momentum in the enterprise with a focus on using machine learning, connectivity and big data to tackle challenges in health, safety and efficiency in industries like agriculture and mining.

Roundup Of Internet Of Things Forecasts And Market Estimates, 2016

Analysts estimates differ but the general consensus is that the number of IoT-enabled “things” will reach ~30B devices by 2020 with a multi-billion dollar consumer market and a multi-trillion dollar enterprise market in IIoT.

So what are the opportunities and challenges for the IoT app developer?

The opportunities lie in areas like service automation, fitness, collaborative computing, real-time tracking/alerts, remote control and quantified self, to name just a few. New areas for exploration include wearables, smart toys, autonomous vehicles and education.

The challenges lie in tackling security and data privacy concerns, managing complexity in deploying apps to diverse hardware and software platforms, dealing with regulatory approval, and integrating frictionlessly into existing application ecosystems for growth and monetization.

This is where the AndroidThings vision comes in.

What is AndroidThings?

Android Things | Android Things

AndroidThings is Google’s initiative to support development and innovation for the Internet of Things ecosystem.

All figures below were screenshots from the webinar and have been used for illustration only. All errors in explanations are mine.

Core value proposition

At its core it offers three value propositions – bringing the reach of the Android ecosystem to IoT, delegating the complexity of hardware management to Google (and allowing developers to focus on building custom hardware extensions and rich software experiences), and leveraging the trusted security solutions provided out-of-the-box by Google.

  1. The Power of Android. This takes two forms. First, application developers can embrace familiar languages (Java, Kotlin) and tools (Android Studio) for faster development. Second, they can leverage frictionless integration with other Google services (Play, Firebase, Cloud) to get comprehensive solutions with built-in support for monetization, serverless computing and big data analytics.

2. Managed By Google. Google manages the complexity of low-level hardware, Linux kernel and Android core components of the stack. Updates (e.g., for security or feature upgrades) get pushed out to devices automatically – you, as developer, need to manage only updates to your apps and any user-level drivers you have added to the platform.

Not only does this allow developers to quickly scale their products to new devices, but it also reduces the time/cost otherwise spent in oversight efforts instead of product improvements. The new addition of an AndroidThings Console allows developers to review deployment versions and potentially get usage insights and administrative support in future.

Note: Google advocates mentioned that they are actively continuing to add drivers and libraries to support new/popular boards, sensors & accessories – have one you want to see supported? Post an “ask” to their IoT Community

  1. Automatic And Secure. Standard security practices like signed images and verified boot are provided by default. Not only are software updates and security patches proactively pushed out, but their A/B Rollback Protection feature ensures this happens with minimum downtime.

Patches are downloaded and installed in the background, and the devices rebooted when optimal, to have them take effect. If any issues occur during this update, the process is setup to automatically roll back to the last stable image, ensuring that your deployed hardware or software solution is never left in an unavailable state.

Turnkey Hardware Support

As someone who isn’t familiar with low-level embedded systems architecture or software, this aspect of AndroidThings was appealing. Effectively anyone can get started by using an AndroidThings certified development board that uses a System-on-Modules (SOM) architecture to abstract complexity and promote rapid composability at the hardware level. Learn more aboutthe supported hardware platforms here.

SoM Architecture: As I understand it, SoM is analogous to how software frameworks abstract complexity of underlying operating systems; as a developer you simply stack the relevant SoM on the baseboard to get a desired hardware platform for rapid prototyping & test. When you finally want to build/release production hardware, you can optimize the design by reusing those modules in a single PCB – ensuring that the end result is consistent with no changes needed to your higher-level software layers.

Image Credit: Screenshot from “IoT Bootstrapping with Android Things” Webinar

Google Managed BSP: Google maintains the BSP (Board Support Package) ensuring the device is updated with the latest software and security patches with minimal developer effort required. This makes it easier for developers who don’t have embedded systems experience, to deploy new IoT solutions with confidence and focus their attention on software at the apps level.

Simplified Certification and Testing. All modules Google support are pre-certified for various regulatory or industry testing standards. Once you have prototyped an IoT solution, taking it to market requires you to overcome the regulatory hurdles associated with hardware deployment. Because Google-supported modules are pre-certified, your time/cost for product-readiness is now significantly reduced.

What does the platform look like?

It helps to first understand what the standard Android Development platform looks like. The default architecture builds on a Linux operating system and associated native libraries (for efficiency and abstraction), over which are stacked the Android Application Framework (high-level, reusable services/components) and core Android Applications (high-level, popular apps) both of which have primarily served a consumer market focused on interactive user experiences.

Standard Android Architecture (Image Credit: “IoT Bootstrapping with Android Things” Webinar)

The AndroidThings architecture “scrubs” [[_like a “Brillo” pad](http://www.androidpolice.com/2016/12/13/googles-brillo-internet-things-platform-now-android-things-developer-preview-available-download/)]_ the standard architecture down to make it more suitable for the resource-constrained IoT platforms. It does this in two ways. First, it eliminates the default Android Applications (which targeted interactive users) and parts of the Framework (that are not relevant to “headless” or display-less devices). Second, it also provides IoT-ready versions of other components that remain compatible with the usage/behaviors expected by Android developers but are optimized for more resource-constrained hardware.

It also adds a new Peripheral Driver Library to the platform, targeted primarily at supporting better interfacing of applications with the low-level interfaces afforded by sensors and actuators. The library connects popular peripherals to the Android applications layer through User Driver APIs – with pre-written drivers available for most common peripherals. The Peripheral Driver Library is open-sourced and has various samples to get your started – read more about it here.

Resources & Next Steps:

Where can you go to learn more? We recommend you do the following first:

We’ll update this section with more resources (and a link to the webinar recording when we have it) but here are resources worth bookmarking for repeat visits & assistance (with clickable links for image below)


Discussion

pic
Editor guide