Google I/O is a major annual event for developers and serves to introduce and highlight new and evolving technology that Google is working on. With a huge company such as Google that have so many varied projects in development, it is always a rich mix of differing technology insights.
One area of focus this year was Google Home and Thread, the underlying mesh networking technology that supports Google Home.
The Thread protocol came into existence in July 2014. The company Nest, who was originally a Google spin-off, were unable to find a protocol that satisfied all their requirements for home networking products. They decided to develop one to match their needs.
Thread leverages existing technologies where appropriate. It uses the same radio standard as Zigbee, an IEEE 802.15.4 radio. At the networking layer existing IETF standards have been used such as 6LowPAN, a technology designed to support efficient IPv6 communication over 802.15.4 radios. A major advantage of Thread’s design is its adherence to IP messaging, keeping it in sync with the internet at large.
Read more: An Introduction to Thread
Open Thread is an open-source implementation of Thread, allowing developers to make use of the networking technology used in Nest products. It has a small memory footprint and is highly portable across System-on-Chips (SoCs) such as the nRF52840, which has a robust and feature-rich Thread SDK to support it. Open Thread is available under the BSD 3 licensing agreement.
Cloud IoT Core from Google is a managed service for easy, secure management to ingest data from millions of IoT devices that may be globally dispersed. IoT Core is complimented by a suite of other services allowing rich, powerful and secure Cloud IoT applications to be created and managed efficiently.
Click on picture for larger version
As mentioned, one benefit of using Thread is its IP commonality with the rest of the internet. Thread networks can connect to internet backbones via Thread routers.
Message Queuing Telemetry Transport (MQTT) and the Constrained Application Protocol (CoAP) are lightweight connectivity protocols for Machine-to-Machine (M2M) communication and devices that are constrained in terms of resources such as memory, power availability, bandwidth restrictions etc.
Both MQTT and CoAP are protocols in the upper communications stack above radio protocols and IP protocols. They offer end-to-end handling of device communication and adhere to a Publish/Subscribe (Pub/Sub) based system. With Pub/Sub devices can publish messages, other devices can subscribe to message feeds.
Click on picture for larger version
A typical example might be lights in an auditorium subscribing to messages that are published by the light switch in that auditorium for control of the lighting.
It’s always rewarding when a company choose Nordic products to demonstrate their technology and products, especially so when it is a tech-industry titan such as Google. At Google I/O, they used the nRF52840 and nRF52840 Dongle as the basis for this Thread demo.
As a quick aside, the nRF52840 is a highly capable multiprotocol SoC that supports not only Thread but Zigbee, all Bluetooth 5 features, Bluetooth mesh, ANT and proprietary. It has 1MB flash, 256kB RAM around an Arm Cortex M4F processor and has stacks of peripherals including NFC, USB and Arm CryptoCell.
Anyway, back to the demo. It was based on MQTT which uses TCP/IP and mbed TLS for security.
Click on picture for larger version
Jonathan Hui, a Principle Software Engineer at Google Nest and VP of Technology, Thread Group, led the first part of the show. Through code examples, he showed how to build a real end-to-end system from cloud to device using MQTT on a Thread network using two nRF52840 DKs and an nRF52840 dongle connected to a Raspberry Pi. It was a good explanation and it was obvious that a system could be created to monitor and control between devices across an office, or across the globe, with a relatively small amount of simple code.
If you would like to see how the demo was set up, please read this article.
As a TCP/IP messaging system, MQTT offers great reliability and robustness. It ensures everything gets acknowledged so you know messages have been received, amongst other things. However, it comes at a cost in terms of processing and associated power consumption. So it's perfect for many scenarios, but not all.
Next up, Google gave us a demo on CoAP with Thread, again using nRF52840 kits as the network edge devices. CoAP really comes into its own when used with devices running from limited power supplies such as small batteries. CoAP uses the ReST model as does HTTP with the GET, PUT, POST, DELETE operations. CoAP is quite easy for developers to familiarise themselves with as it's so similar in use to HTTP.
Click on picture for larger version
The whole end-to-end solution has a huge amount to offer across a broad spectrum of services and features, including a Machine Learning (ML) engine in the Google cloud.
Thread has demonstrated itself a very robust and fit-for-purpose networking protocol. With the differing constraints of powered and battery-driven products the ability to run MQTT or CoAP is a real boon.
Last, but not least, all these demos ran on Nordic technology, the nRF52840 multiprotocol SoC, and it is satisfying to see a company like Google choose Nordic technology when wanting to demonstrate their own products to the world at such a prestigious event as Google I/O.
You can read more about Nordic Thread solution and its dedicated SDK here, and watch the full Google I/O presentation here.