Wednesday, November 9, 2016

IoT and coding : The most important IoT programming languages

The Internet of Things (IoT) is an entirely new platform for developers and engineers, but one thing should remain consistent as we move into this new world, the programming languages. From our limited time checking out IoT projects, developers seem to be utilizing the same languages for their projects, while also integrating some specific changes for IoT.

What languages are the best for IoT?

From speaking2 to industry folks that have worked on IoT devices and systems before, C, C++, and Java are the most popular choices for general purpose projects. C is one of the first programming languages and is popular for low-level projects, C++ expands on the capabilities of C. There’s another language called C#, Microsoft’s own higher level version, but not many developers use it. Better explanations for the differences between the three C’s can be found here,here, and here.
C is considered the most useful for IoT devices because it doesn’t require a lot of processing power.1 C++ is an alternative if the IoT device requires more complex tasks, think thermostats and smart toasters rather than devices that detect moisture or heat. Java is another general purpose language that is useful for IoT devices that require a lot of interfacing and calculation, since it is more portable than C++, lightweight (for a high level language), and more commonly taught.
Python is another programming language frequently mentioned by developers. It is more flexible than C or Java, which have a lot of requirements and rules built up over the decades. Python has become a valuable resource for Web application developers, but some don’t see it transitioning to IoT anytime soon. JavaScript is another popular Web application language, but developers see Python as superior for IoT projects, due to its support for embedded programming.

Other programming languages are more specific

If you don’t want to go with C, there are some other low-level programming languages that may suit your needs. B# is one of those, a language built from the ground up for very low power devices. It is similar to C#, but stripped of the hand holding and fitted with real-time control functions.
Assembler is the king of low-level languages, capable of running on just about anything. The downside is there’s no hand holding at all, if you code doesn’t work, too bad, if a new processor doesn’t accept Assembler code, too bad.
Google and Nest’s language, Weave, could become popular if it receives more support from developers inside and outside Mountain View. Google also has Brillo, an all encompassing platform for IoT devices, which could promote Weave use if it becomes popular. Apple is a contender with its open source language Swift, currently marketed at iOS and Mac OS developers.
For now, IoT developers should look at the programming languages we have used for decades, before venturing into the niche and new.

Google solidifies its IoT strategy with its Brillo OS

Google's Brillo, announced at the 2015 I/O conference, is a minimal IoT operating system. Here's what it means for the future of the IoT market.

Based on its premise of connecting everyday objects, the Internet of Things (IoT) has the potential for massive growth of its market size. Wearables and the connected home are merely the beginning for what is bound to be one of the next big things in tech.
But like so many emerging markets, its innovators have all taken off in their own directions, blazing many small trails that rarely converge. This spells out the need for standardization in both platforms and protocols to make sure all these connected "things" can make use of their connections.
Google is one of the companies taking a stab at unifying the system with its new IoT operating system, Brillo, and its IoT protocol, Weave. Both were announced in late May at the 2015 I/O developer conference and have big implications for Google's IoT play.
The potential impact for IoT on the daily lives of consumers is huge, but the experience still isn't optimal. Also, the lack of a cohesive platform makes it difficult for developers to get on board. According to a Google spokesperson, Google has been working with the Nest team to help solve those problems.
"The result we're aiming towards with Brillo and Weave is a consistent, easy experience for users with devices that work well together," a Google spokesperson said. "Developers can use a complete solution, or pick and choose pieces that make developing connected products easier."
Brillo as an OS is based on the foundational Android kernel, like the full OS has been scrubbed down by a Brillo pad. It also includes a hardware abstraction layer, connectivity, and a few other features.
Gartner analyst Ken Dulaney said that the minimal nature of Brillo is by design. According to Dulaney, there will be many devices, such as Bluetooth beacons and sensors, that need extremely low power because they will likely be operating on battery power for weeks or months or even years at a time.
Another key to the potential success of Brillo and its ability to advance the industry will be how Google offers Brillo to developers.
"I'm sure that Google will follow the method that's been so successful with Android and make it open source, focus on developers — all that things that have done well for Android," Dulaney said. "And, Brillo probably has a reasonably good shot of being successful in IoT."
Of course many different devices will be built by lots of people, and some legacy systems may even be included, and Weave will help with those integrations. These devices all need a common framework so applications can use them, Dulaney said, because developers can't be expected to build apps that know the protocols of every device on the market. Weave is the middle layer that homogenizes the information these systems are producing.
The ultimate goal is to move the industry forward, the Google spokesperson said. Google is working with partner companies on Weave-compatible devices and Weave APIs for Android and iOS. According to a Google spokesperson, a developer platform supporting Brillo and Weave will be available later this summer, as well as a developer preview of the Weave API.
Both Brillo and Weave show that Google is serious about IoT. It's not clear whether or not Google knew its potential when they bought Nest in early 2014, but it definitely paid off for Google in the long run.
While IoT has been a good bet for Google, Brillo and Weave aren't the final step in the process. Dulaney said that Google must continue promoting its IoT ecosystem, potentially with a developer conference, and work on getting more people using these tools. Creative marketing will play a major role in getting more people on board, but Dulaney also said Google should make cheap developer kits available to encourage more people to build on the platform.
Forrester analyst Jeffrey Hammond said that much of the success of Brillo will depend on the licensing strategy for the platform. If they use a permissive free software licence, like the one used by Apache, it could be a good move for Google.
Google playing the open source card with Brillo stands in complete contention with Apple's HomeKit, which is a closed system with strict requirements to guarantee the Apple experience to users.
And the open source strategy has worked well for Google when it comes to Android. With that model Google has been able to get a huge number of OEMs to adopt Android in their smartphones, and used that strategy to dominate in terms of global market share. And Hammond said that strategy could work well with Brillo and Weave.
"There's no reason they couldn't do the same thing again, hopefully without the level of fragmentation we see in the Android phone market as the desire to customize UX should be lower," Hammond said.
It's too early to tell how IoT will fully shape up, or who will win out, but Dulaney said it's important to remember one things about the IoT industry:
"It's the Wild West."

How Google Cloud Platform supports IoT development

When considering Google Cloud Platform, most people will think about how companies are building out websites and backend infrastructure. However, Google is increasingly targeting another kind of development on its platform—IoT.
On Wednesday, at the Google Cloud Platform Next conference, Google's head of IoT solutions, Preston Holmes, lead a breakout session explaining how Google approached IoT development and how it wants to support the infrastructure.
Holmes began by giving his working definition of IoT. While there's no definitive definition of IoT just yet, he said, "IoT is a period of transformation." And, once all these devices get connected, they will no longer be the IoT, they will simply be what we use in our everyday, connected lives.
 The goal for most companies, and Google is no exception, is to collect and use the data that these smart things produce. And, IoT is the set of technologies that are the means to that end.
People have been held back from experimenting with IoT because of the complexity involved, Holmes said. For starters, you have to choose a hardware provider, whether you're going to run an OS, and if so which one, among many other nuances.
To break it down, Holmes said IoT architecture is made up of three core components:
  1. Device
  2. Gateway
  3. Cloud
IoT devices are composed of both hardware and software. Each device provides four foundational pieces of data:
  1. Metadata, or data about the data.
  2. State, or the condition of the device.
  3. Commands indicate an action to be taken by a device.
  4. Telemetry, which is environmental data around the device.
Because of the centrality of the device in an IoT deployment, device management becomes critical. Key functions of device management are network provisioning, device registration, device authorization, fleet operations, and software updates. Google handles device management through its Brillo and Weave products, platform partners, and open source.
Brillo is an IoT OS that is maintained by Google, based on the Android kernel. It offers analytics, OTA updates, Weave integration, and telemetry data. Adoption of Brillo could end up being beneficial for the greater Android ecosystem, due to the connectivity implications.
Weave is Google's open communications platform for IoT. It is focused on standardizing device commands, and helps ease user interaction with the devices from mobile devices. It also provides integration with Google services.
Jeff Chen, product manager for Brillo and Weave, said that Google built the two products, which it debuted at the 2015 I/O developer conference, for three reasons:
  1. Help device makers build for IoT
  2. Create open ecosystems
  3. Create opportunity for services
To address the gateway component, Google has partnered with companies like Intel to better connect devices to the Google Cloud Platform. Devices like Google's open Eddystone beacon benefit from a strong gateway component.

Saturday, November 5, 2016

The Intel® Edison Board Made for Brillo

Brillo* is a solution from Google* for building connected devices. Incorporating aspects of the Android* platform, Brillo brings security, local and inter-device service compatibility, and a modular approach to system components to your Intel IoT technology. Verified functionality with Brillo for the Intel® Edison board results in a versatile and speedy time-to-market platform for scaling your projects beyond proofs of concept.