Category: Amazon Internet of Things
Introducing the AWS IoT Button Enterprise Program
The AWS IoT Button first made its appearance on the IoT scene in October of 2015 at AWS re:Invent with the introduction of the AWS IoT service. That year all re:Invent attendees received the AWS IoT Button providing them the opportunity to get hands-on with AWS IoT. Since that time AWS IoT button has been made broadly available to anyone interested in the clickable IoT device.
During this past AWS re:Invent 2016 conference, the AWS IoT button was launched into the enterprise with the AWS IoT Button Enterprise Program. This program is intended to help businesses to offer new services or improve existing products at the click of a physical button. With the AWS IoT Button Enterprise Program, enterprises can use a programmable AWS IoT Button to increase customer engagement, expand applications and offer new innovations to customers by simplifying the user experience. By harnessing the power of IoT, businesses can respond to customer demand for their products and services in real-time while providing a direct line of communication for customers, all via a simple device.
AWS IoT Button Enterprise Program
Let’s discuss how the new AWS IoT Button Enterprise Program works. Businesses start by placing a bulk order of the AWS IoT buttons and provide a custom label for the branding of the buttons. Amazon manufactures the buttons and pre-provisions the IoT button devices by giving each a certificate and unique private key to grant access to AWS IoT and ensure secure communication with the AWS cloud. This allows for easier configuration and helps customers more easily get started with the programming of the IoT button device.
Businesses would design and build their IoT solution with the button devices and creation of device companion applications. The AWS IoT Button Enterprise Program provides businesses some complimentary assistance directly from AWS to ensure a successful deployment. The deployed devices then would only need to be configured with Wi-Fi at user locations in order to function.
For enterprises, there are several use cases that would benefit from the implementation of an IoT button solution. Here are some ideas:
- Reordering services or custom products such as pizza or medical supplies
- Requesting a callback from a customer service agent
- Retail operations such as a call for assistance button in stores or restaurants
- Inventory systems for capturing products amounts for inventory
- Healthcare applications such as alert or notification systems for the disabled or elderly
- Interface with Smart Home systems to turn devices on and off such as turning off outside lights or opening the garage door
- Guest check-in/check-out systems
AWS IoT Button
At the heart of the AWS IoT Button Enterprise Program is the AWS IoT Button. The AWS IoT button is a 2.4GHz Wi-Fi with WPA2-PSK enabled device that has three click types: Single click, Double click, and Long press. Note that a Long press click type is sent if the button is pressed for 1.5 seconds or longer. The IoT button has a small LED light with color patterns for the status of the IoT button. A blinking white light signifies that the IoT button is connecting to Wi-Fi and getting an IP address, while a blinking blue light signifies that the button is in wireless access point (AP) mode. The data payload that is sent from the device when pressed contains the device serial number, the battery voltage, and the click type.
Currently, there are 3 ways to get started building your AWS IoT button solution. The first option is to use the AWS IoT Button companion mobile app. The mobile app will create the required AWS IoT resources, including the creation of the TLS 1.2 certificates, and create an AWS IoT rule tied to AWS Lambda. Additionally, it will enable the IoT button device via AWS IoT to be an event source that invokes a new AWS Lambda function of your choosing from the Lambda blueprints. You can download the aforementioned mobile apps for Android and iOS below.
![]() |
![]() |
The second option is to use the AWS Lambda Blueprint Wizard as an easy way to start using your AWS IoT Button. Like the mobile app, the wizard will create the required AWS IoT resources for you and add an event source to your button that invokes a new Lambda function.
The third option is to follow the step by step tutorial in the AWS IoT getting started guide and leverage the AWS IoT console to create these resources manually.
Once you have configured your IoT button successfully and created a simple one-click solution using one of the aforementioned getting started guides, you should be ready to start building your own custom IoT button solution. Using a click of a button, your business will be able to build new services for customers, offer new features for existing services, and automate business processes to operate more efficiently.
The basic technical flow of an AWS IoT button solution is as follows:
- A button is clicked and secure connection is established with AWS IoT with TLS 1.2
- The button data payload is sent to AWS IoT Device Gateway
- The rules engine evaluates received messages (JSON) published into AWS IoT and performs actions or trigger AWS Services based defined business rules.
- The triggered AWS Service executes or action is performed
- The device state can be read, stored and set with Device Shadows
- Mobile and Web Apps can receive and update data based upon action
Now that you have general knowledge about the AWS IoT button, we should jump into a technical walk-through of building an AWS IoT button solution.
AWS IoT Button Solution Walkthrough
We will dive more deeply into building an AWS IoT Button solution with a quick example of a use case for providing one-click customer service options for a business.
To get started, I will go to the AWS IoT console, register my IoT button as a Thing and create a Thing type. In the console, I select the Registry and then Things options in console menu.
The name of my IoT thing in this example will be TEW-AWSIoTButton. If you desire to categorize the IoT things, you can create a Thing type and assign a type to similar IoT ‘things’. I will categorize my IoT thing, TEW-AWSIoTButton, as an IoTButton thing type with a One-click-device attribute key and select Create thing button.
After my AWS IoT button device, TEW-AWSIoTButton, is registered in the Thing Registry, the next step is to acquire the required X.509 certificate and keys. I will have AWS IoT generate the certificate for this device, but the service allows for to use your own certificates. Authenticating the connection with the X.509 certificates helps to protect the data exchange between your device and AWS IoT service.
When the certificates are generated with AWS IoT, it is important that you download and save all of the files created since the public and private keys will not be available after you leave the download page. Additionally, do not forget to download the root CA for AWS IoT from the link provided on the page with your generated certificates.
The newly created certificate will be inactive, therefore, it is vital that you activate the certificate prior to use. AWS IoT uses the TLS protocol to authenticate the certificates using the TLS protocol’s client authentication mode. The certificates enable asymmetric keys to be used with devices, and AWS IoT service will request and validate the certificate’s status and the AWS account against a registry of certificates. The service will challenge for proof of ownership of the private key corresponding to the public key contained in the certificate. The final step in securing the AWS IoT connection to my IoT button is to create and/or attach an IAM policy for authorization.
I will choose the Attach a policy button and then select Create a Policy option in order to build a specific policy for my IoT button. In Name field of the new IoT policy, I will enter IoTButtonPolicy for the name of this new policy. Since the AWS IoT Button device only supports button presses, our AWS IoT button policy will only need to add publish permissions. For this reason, this policy will only allow the iot:Publish action.
For the Resource ARN of the IoT policy, the AWS IoT buttons typically follow the format pattern of: arn: aws: iot: TheRegion: AWSAccountNumber: topic/ iotbutton /ButtonSerialNumber. This means that the Resource ARN for this IoT button policy will be:
I should note that if you are creating an IAM policy for an IoT device that is not an AWS IoT button, the Resource ARN format pattern would be as follows: arn: aws: iot: TheRegion: AWSAccountNumber: topic/ YourTopic/ OptionalSubTopic/
The created policy for our AWS IoT Button, IoTButtonPolicy, looks as follows:
The next step is to return to the AWS IoT console dashboard, select Security and then Certificates menu options. I will choose the certificate created in the aforementioned steps.
Then on the selected certificate page, I will select the Actions dropdown on the far right top corner. In order to add the IoTButtonPolicy IAM policy to the certificate, I will click the Attach policy option.
I will repeat all of the steps mentioned above but this time I will add the TEW-AWSIoTButton thing by selecting the Attach thing option.
All that is left is to add the certificate and private key to the physical AWS IoT button and connect the AWS IoT Button to Wi-Fi in order to have the IoT button be fully functional.
Important to note: For businesses that have signed up to participate in the AWS IoT Button Enterprise Program, all of these aforementioned steps; Button logo branding, AWS IoT thing creation, obtaining certificate & key creation, and adding certificates to buttons, are completed for them by Amazon and AWS. Again, this is to help make it easier for enterprises to hit the ground running in the development of their desired AWS IoT button solution.
Now, going back to the AWS IoT button used in our example, I will connect the button to Wi-Fi by holding the button until the LED blinks blue; this means that the device has gone into wireless access point (AP) mode.
In order to provide internet connectivity to the IoT button and start configuring the device’s connection to AWS IoT, I will connect to the button’s Wi-Fi network which should start with Button ConfigureMe. The first time the connection is made to the button’s Wi-Fi, a password will be required. Enter the last 8 characters of the device serial number shown on the back of the physical AWS IoT button device.
The AWS IoT button is now configured and ready to build a system around it. The next step will be to add the actions that will be performed when the IoT button is pressed. This brings us to the AWS IoT Rules engine, which is used to analyze the IoT device data payload coming from the MQTT topic stream and/or Device Shadow, and trigger AWS Services actions. We will set up rules to perform varying actions when different types of button presses are detected.
Our AWS IoT button solution will be a simple one, we will set up two AWS IoT rules to respond to the IoT button being clicked and the button’s payload being sent to AWS IoT. In our scenario, a single button click will represent that a request is being sent by a customer to a fictional organization’s customer service agent. A double click, however, will represent that a text will be sent containing a customer’s fictional current account status.
The first AWS IoT rule created will receive the IoT button payload and connect directly to Amazon SNS to send an email only if the rule condition is fulfilled that the button click type is SINGLE. The second AWS IoT rule created will invoke a Lambda function that will send a text message containing customer account status only if the rule condition is fulfilled that the button click type is DOUBLE.
In order to create the AWS IoT rule that will send an email to subscribers of an SNS topic for requesting a customer service agent’s help, we will go to Amazon SNS and create a SNS topic.
I will create an email subscription to the topic with the fictional subscribed customer service email, which in this case is just my email address. Of course, this could be several customer service representatives that are subscribed to the topic in order to receive emails for customer assistance requests.
Now returning to the AWS IoT console, I will select the Rules menu and choose the Create rule option. I first provide a name and description for the rule.
Next, I select the SQL version to be used for the AWS IoT rules engine. I select the latest SQL version, however, if I did not choose to set a version, the default version of 2015-10-08 will be used. The rules engine uses a SQL-like syntax with statements containing the SELECT, FROM, and WHERE clauses. I want to return a literal string for the message, which is not apart of the IoT button data payload. I also want to return the button serial number as the accountnum, which are not apart of the payload. Since the latest version, 2016-03-23, supports literal objects, I will be able to send a custom payload to Amazon SNS.
I have created the rule, all that is left is to add a rule action to perform when the rule is analyzed. As I mentioned above, an email should be sent to customer service representatives when this rule is triggered by a single IoT button press. Therefore, my rule action will be the Send a message as an SNS push notification to the SNS topic that I created to send an email to our fictional customer service reps aka me. Remember that the use of an IAM role is required to provide access to SNS resources; if you are using the console you have the option to create a new role or update an existing role to provide the correct permissions. Also, since I am doing a custom message and pushing to SNS, I select the Message format type to be RAW.
Our rule has been created, now all that is left is for us to test that an email is successfully sent when the AWS IoT button is pressed once, and therefore the data payload has a click type of SINGLE.
A single press of our AWS IoT Button and the custom message is published to the SNS Topic, and the email shown below was sent to the subscribed customer service agents email addresses; in this example, to my email address.
In order to create the AWS IoT rule that will send a text via Lambda and a SNS topic for the scenario in which customers request account status to be sent when the IoT Button is pressed twice. We will start by creating an AWS IoT rule with an AWS Lambda action. To create this IoT rule, we first need to create a Lambda function and the SNS Topic with a SNS text based subscription.
First, I will go to the Amazon SNS console and create a SNS Topic. After the topic is created, I will create a SNS text subscription for our SNS topic and add a number that will receive the text messages. I will then copy the SNS Topic ARN for use in my Lambda function. Please note, that I am creating the SNS Topic in a different region than previously created SNS topic to use a region with support for sending SMS via SNS. In the Lambda function, I will need to ensure the correct region for the SNS Topic is used by including the region as a parameter of the constructor of the SNS object. The created SNS topic, aws-iot-button-topic-text is shown below.
We now will go to the AWS Lambda console and create a Lambda function with an AWS IoT trigger, an IoT Type as IoT Button, and the requested Device Serial Number will be the serial number on the back of our AWS IoT Button. There is no need to generate the certificate and keys in this step because the AWS IoT button is already configured with certificates and keys for secure communication with AWS IoT.
The next is to create the Lambda function, IoTNotifyByText, with the following code that will receive the IoT button data payload and create a message to publish to Amazon SNS.
'use strict';
console.log('Loading function');
var AWS = require("aws-sdk");
var sns = new AWS.SNS({region: 'us-east-1'});
exports.handler = (event, context, callback) => {
// Load the message as JSON object
var iotPayload = JSON.stringify(event, null, 2);
// Create a text message from IoT Payload
var snsMessage = "Attention: Customer Info for Account #: " + event.accountnum + " Account Status: In Good Standing " +
"Balance is: 1234.56"
// Log payload and SNS message string to the console and for CloudWatch Logs
console.log("Received AWS IoT payload:", iotPayload);
console.log("Message to send: " + snsMessage);
// Create params for SNS publish using SNS Topic created for AWS IoT button
// Populate the parameters for the publish operation using required JSON format
// - Message : message text
// - TopicArn : the ARN of the Amazon SNS topic
var params = {
Message: snsMessage,
TopicArn: "arn:aws:sns:us-east-1:xxxxxxxxxxxx:aws-iot-button-topic-text"
};
sns.publish(params, context.done);
};
All that is left is for us to do is to alter the AWS IoT rule automatically created when we created a Lambda function with an AWS IoT trigger. Therefore, we will go to the AWS IoT console and select Rules menu option. We will find and select the IoT button rule created by Lambda which usually has a name with a suffix that is equal to the IoT button device serial number.
Once the rule is selected, we will choose the Edit option beside the Rule query statement section.
We change the Select statement to return the serial number as the accountnum and click Update button to save changes to the AWS IoT rule.
Time to Test. I click the IoT button twice and wait for the green LED light to appear, confirming a successful connection was made and a message was published to AWS IoT. After a few seconds, a text message is received on my phone with the fictitious customer account information.
This was a simple example of how a business could leverage the AWS IoT Button in order to build business solutions for their customers. With the new AWS IoT Button Enterprise Program which helps businesses in obtaining the quantities of AWS IoT buttons needed, as well as, providing AWS IoT service pre-provisioning and deployment support; Businesses can now easily get started in building their own customized IoT solution.
Available Now
The original 1st generation of the AWS IoT button is currently available on Amazon.com, and the 2nd generation AWS IoT button will be generally available in February. The main difference in the IoT buttons are the amount of battery life and/or clicks available for the button. Please note that right now if you purchase the original AWS IoT button, you will receive $20 in AWS credits when you register.
Businesses can sign up today for the AWS IoT Button Enterprise Program currently in Limited Preview. This program is designed to enable businesses to expand their existing applications or build new IoT capabilities with the cloud and a click of an IoT button device. You can read more about the AWS IoT button and learn more about building solutions with a programmable IoT button on the AWS IoT Button product page. You can also dive deeper into the AWS IoT service by visiting the AWS IoT developer guide, the AWS IoT Device SDK documentation, and/or the AWS Internet of Things Blog.
– Tara
AWS Greengrass – Ubiquitous, Real-World Computing
Computing and data processing within the confines of a data center or office is easy. You can generally count on good connectivity and a steady supply of electricity, and you have access to as much on-premises or cloud-based storage and compute power as you need. The situation is much different out in the real world. Connectivity can be intermittent, unreliable, and limited in speed and scale. Power is at a premium, putting limits on how much storage and compute power can be brought in to play.
Lots of interesting and potentially valuable data is present out in the field, if only it could be collected, processed, and turned into actionable intelligence. This data could be located miles below the surface of the Earth in a mine or an oil well, in a sensitive & safety-critical location like a hospital or a factory, or even on another planet (hello, Curiosity).
Our customers are asking for a way to use the scale and power of the AWS Cloud to help them to do local processing under these trying conditions. First, they want to build systems that measure, sense, and act upon the data locally. Then they want to bring cloud-like, local intelligence to bear on the data, implementing local actions that are interdependent and coordinated. To make this even more challenging they want to make use of any available local processing and storage resources, while also connecting to specialized sensors and peripherals.
Introducing AWS Greengrass
I’d like to tell you about AWS Greengrass. This new service is designed to allow you to address the challenges that I outlined above by extending the AWS programming model to small, simple, field-based devices.
Greengrass builds on AWS IoT and AWS Lambda, and can also access other AWS services. it is built for offline operation and greatly simplifies the implementation of local processing. Code running in the field can collect, filter, and aggregate freshly collected data and then push it up to the cloud for long-term storage and further aggregation. Further, code running in the field can also take action very quickly, even in cases where connectivity to the cloud is temporarily unavailable.
If you are already developing embedded systems for small devices, you will now be able to make use of modern, cloud-aware development tools and workflows. You can write and test your code in the cloud and then deploy it locally. You can write Python code that responds to device events and you can make use of MQTT-based pub/sub messaging for communication.
Greengrass has two constituent parts, the Greengrass Core (GGC) and the IoT Device SDK. Both of these components run on your own hardware, out in the field.
Greengrass Core is designed to run on devices that have at least 128 MB of memory and an x86 or ARM CPU running at 1 GHz or better, and can take advantage of additional resources if available. It runs Lambda functions locally, interacts with the AWS Cloud, manages security & authentication, and communicates with the other devices under its purview.
The IoT Device SDK is used to build the applications that run on the devices that connect to the device that hosts the core (generally via a LAN or other local connection). These applications will capture data from sensors, subscribe to MQTT topics, and use AWS IoT device shadows to store and retrieve state information.
Using AWS GreenGrass
You will be able to set up and manage many aspects of Greengrass through the AWS Management Console, the AWS APIs, and the AWS Command Line Interface (CLI).
You will be able to register new hub devices, configure the desired set of Lambda functions, and create a deployment package for delivery to the device. From there, you will associate the lightweight devices with the hub.
Now in Preview
We are launching a limited preview of AWS Greengrass today and you can sign up now if you would like to participate.
Each AWS customer will be able to use up 3 devices for one year at no charge. Beyond that, the monthly cost for each active Greengrass Core is $0.16 ($1.49 per year) for up to 10,000 devices.
We have a webinar for you if you’d like to learn more. It is on January 19th and you can sign up for it here.
— Jeff;
New – Just-in-Time Certificate Registration for AWS IoT
We launched AWS IoT at re:Invent (read AWS IoT – Cloud Services for Connected Devices for an introduction) and made it generally available last December.
Earlier this year my colleague Olawale Oladehin showed you how to Use Your Own Certificate with AWS IoT. Before that, John Renshaw talked about Predictive Maintenance with AWS IoT and Amazon Machine Learning.
Just-in-Time Registration
Today we are making AWS IoT even more flexible by giving you the ability to do Just-in-Time registration of device certificates. This expands on the feature described by Olawale, and simplifies the process of building systems that make use of millions of connected devices. Instead of having to build a separate database to track the certificates and the associated devices, you can now arrange to automatically register new certificates as part of the initial communication between the device and AWS IoT.
In order to do this, you start with a CA (Certificate Authority) certificate that you later use to sign the per-device certificates (this is a great example of the chain of trust model that is fundamental to the use of digital certificates).
Putting this new feature to use is pretty easy, but you do have to take care of some important details. Here are the principal steps:
- Register & activate the CA certificate that will sign the other certificates.
- Use the certificate to generate and sign certificates for each device.
- Have the device present the certificate to AWS IoT and then activate it.
The final step can be implemented using a AWS Lambda function. The function simply listens on a designated MQTT topic using an AWS IoT Rule Engine Action. A notification will be sent to the topic each time a new certificate is presented to AWS IoT. The function can then activate the device certificate and take care of any other initialization or registration required by your application.
Learn More
To learn more about this important new feature and to review all of the necessary steps in detail, read about Just in Time Registration of Device Certificates on AWS IoT on The Internet of Things on AWS Blog.
— Jeff;
Arduino Web Editor and Cloud Platform – Powered by AWS
Last night I spoke with Luca Cipriani from Arduino to learn more about the new AWS-powered Arduino Web Editor and Arduino Cloud Platform offerings. Luca was en-route to the Bay Area Maker Faire and we had just a few minutes to speak, but that was enough time for me to learn a bit about what they have built.
If you have ever used an Arduino, you know that there are several steps involved. First you need to connect the board to your PC’s serial port using a special cable (you can also use Wi-Fi if you have the appropriate add-on “shield”), ensure that the port is properly configured, and establish basic communication. Then you need to install, configure, and launch your development environment, make sure that it can talk to your Arduino, tell it which make and model of Arduino that you are using, and select the libraries that you want to call from your code. With all of that taken care of, you are ready to write code, compile it, and then download it to the board for debugging and testing.
Arduino Code Editor
Luca told me that the Arduino Code Editor was designed to simplify and streamline the setup and development process. The editor runs within your browser and is hosted on AWS (although we did not have time to get in to the details, I understand that they made good use of AWS Lambda and several other AWS services).
You can write and modify your code, save it to the cloud and optionally share it with your colleagues and/or friends. The editor can also detect your board (using a small native plugin) and configure itself accordingly; it even makes sure that you can only write code using libraries that are compatible with your board. All of your code is compiled in the cloud and then downloaded to your board for execution.
Here’s what the editor looks like (see Sneak Peek on the New, Web-Based Arduino Create for more):
Arduino Cloud Platform
Because Arduinos are small, easy to program, and consume very little power, they work well in IoT (Internet of Things) applications. Even better, it is easy to connect them to all sorts of sensors, displays, and actuators so that they can collect data and effect changes.
The new Arduino Cloud Platform is designed to simplify the task of building IoT applications that make use of Arduino technology. Connected devices will be able to be able to connect to the Internet, upload information derived from sensors, and effect changes upon command from the cloud. Building upon the functionality provided by AWS IoT, this new platform will allow devices to communicate with the Internet and with each other. While the final details are still under wraps, I believe that this will pave the wave for sensors to activate Lambda functions and for Lambda functions to take control of displays and actuators.
I look forward to learning more about this platform as the details become available!
— Jeff;
Congratulations to the Winners of the Hackster AWS IoT Mega Contest
Earlier this year I told you about the AWS IoT Mega Contest. The contest closed at the end of January, the judges retired to our secret lair deep in the heart of Seattle, and we have chosen the winners. There were an impressive number of equally impressive projects and it was not easy to evaluate them against our criteria and to pick our favorites. After extended deliberation, we managed to choose ten projects. With no further fanfare, here we go!
First Prize
The following two entrants will receive the first prize, a Kindle Fire HD 10:
- Chris Synan – Voice Controlled Drone with Amazon Echo and 3DR IRIS+.
- Marian Mihailescu – Baby NAP (Night Activity Program).
Second Prize
The following three entrants will receive the second prize, an Amazon Echo:
- Arlo Carreon – Magic Mirror – Amazon Echo and AWS IoT.
- Kittitouch Areerob – Automatic Vehicle Accident Alert System using AWS IoT.
- Tan See Youu – Crying AED.
Third Prize
The following five entrants will receive the third prize, Amazon Fire TV Gaming Edition:
- Daniel Porrey – AWS IoT Button for LIFX.
- Demirhan Aydin – WaterPi: Houseplant Remote Watering and Monitoring System.
- truthkos – Ambient Light Sensor for Philips Hue.
- Aaron Parecki – Magic Checkin Clock.
- Carmelito Andrade – Plant Monitoring System using AWS IoT.
What I Learned
After spending time examining the entries in detail, I came away impressed by a couple of things. To wit:
- There are lots of creative people out there! The initial ideas and the resulting projects were literally all over the map.
- IoT is here now. People are building devices, sites, and applications that are sophisticated and useful.
- Connecting to and working within the real world is a lot harder than running within the clean, abstract confines of a virtual machine. A successful IoT application must be prepared to deal with erroneous or missing data, intermittent connections, and more.
- Building these applications requires and exercises a diverse set of skills. In addition to creativity, a successful IoT project can require theoretical & practical electronics skills (both analog and digital), 3D modeling & printing, along with the ability to write code that runs on small devices and in the cloud, generally using multiple languages, frameworks, and cloud services! If you currently have a subset of these skills, jumping in to IoT is a great way to put them to use.
Congratulations & Thanks
Congratulations to all of the winners, and thank you to everyone who entered! Also, a big thank-you to our device partners and to the team at Hackster.
— Jeff;
Hackster AWS IoT Mega Contest
The AWS IoT Mega Contest (brought to you by AWS and the great team at Hackster) has been extended until January 31, 2016. We already have over 850 participants, nearly 300 project ideas, and 45 projects, but there’s still time (and room) for more.
As the name suggests, we’re looking for Internet of Things projects that make use of the new AWS IoT service.
Goodies!
Everyone who posts a completed project receives $880 worth of goodies including AWS credits, a month of AWS Support, AWS Technical Professional Training, $80 of credit for Self-Paced Labs.
The first 50 projects receive $100 in cash.
The top 10 projects (based on documentation, creativity, and practicality) will win prizes that include an Amazon Kindle Fire HD, Amazon Echo devices, and the Amazon Fire TV Gaming Edition.
Getting Started
If you were lucky enough to pick up an AWS IoT Button at AWS re:Invent, you can use it as part of your project. If not, you can purchase an AWS IoT Starter Kit from one of our partners or use an Arduino, Raspberry Pi, UDOO, Teensy, or FRDM that you already own.
Now you can build your project based on one of the project ideas. Take good notes as you build it, and be sure that your submission includes high-quality images, clear instructions, a bill of materials, schematics, source code, and CAD files, as appropriate.
Some Cool Ideas
The existing participants have generated hundreds of really cool ideas. As you can see, this is not simply technology for technology’s sake. Instead, people are using AWS to solve problems that are personal and meaningful to them. They are thinking about ways to create a better, healthier environment, focusing on personal safety, and agriculture. In the best Maker fashion, people are scratching their own itch, in ways that will improve life for them, their families, and their neighbor!
Here are some of our favorite ideas:
Allergen Levels Sensory Network by Kevin Kingsbury – Create a network of air quality sensor to monitor pollen, pollution and mold in cities everywhere, processing location and data in real time.
IoT Radiation Monitor by David Fowler – IoT enabled Geiger Counter small enough to be carried in a pocket or mounted to a vehicle and used to monitors radiation levels. The device will collect data and report radiation counts with position and time stamps.
IFTTT Anything with the AWS IoT Button by Drew Alend – Trigger any IFTTT action with a click of the AWS IoT Button. If clicked than that!
Computer Control with AWS ioT by Alex Merchen – Turn your computer BEFORE you come to work with a simple AWS IoT Button push, and save yourself time wasted on reboot and updates.
Hello & Good Night! by Dave Mathews – The smart home has been a dream of geeks since the lightbulb was created. Now, with dozens of apps in the stores controlling vastly different “so called smart” hardware interfaces, you can have a puzzle of connectivity. We are going to take the AWS IoT button and turn it into a one-touch off button for ALL of our smart home services – Hue, Wemo and Sonos. The key here is that we will not need another smart home controller, but leverage the power of the AWS Cloud and software APIs for the devices!
Monitoring Food/Water Intake for Dementia Patients by Leigh Carpenter – Caring for patients suffering from dementia who don’t to keep up with consistent eating and drinking habits which hey often neglect.
Some Cool Projects
Here are some projects that have been developed around the ideas:
AWS IoT Button and Sonos by Paul Wakeford – Use the AWS IoT Button to control a Sonos music system.
Summon Uber with the new AWS IoT Dash Button – Press the button and watch for the Uber App on your phone.
AWS IoT Button for LIFX by Daniel Porrey – Use the AWS IoT Button to control a LIFX light bulb with immediacy and efficiency.
One Button Click Artificial Intelligence Based Home Monitor by Geeve George – Build a voice assistant for home security and monitoring while while you’re away.
Magic Mirror – Use Amazon Echo to run an image search on the web.
Real Time Crop Monitoring by Sarthak Sethi – Help farmers monitor the health of crops by tapping data and sensors, across seasons and geographies.
Some Resources
Here are some great tutorials to get you started with AWS IoT:
- Beginner’s Guide to Using Your AWS IoT Button.
- Getting Started With the AWS IoT Button (video).
- Try to connect AWS IoT Button to kintone via AWS IoT.
- Using AWS IoT Button (Japanese).
20 Days To Go
With just 20 days to go, you’ll have to hustle if you plan to create and submit a project. Go for it! Be sure to read the FAQ and the official rules (scroll down).
— Jeff;
AWS IoT – Now Generally Available
A few months ago, I wrote about AWS IoT (see AWS IoT – Cloud Services for Connected Devices) and talked about how we are working to make sure that AWS is well-equipped to support many different types of IoT devices and applications. At that time we launched AWS IoT in beta form and invited interested developers to sign up and to start getting experience with the service.
We built AWS IoT because connected devices are proliferating. They are in your house, your car, your office, your school, and perhaps even in your body! Like some of our more advanced customers, we have been building systems around connected devices for quite some time. Our experience with Amazon Robotics, drones (Amazon Prime Air), the Amazon Echo, the Dash Button, and multiple generations of Kindles has given us a well-informed perspective on how to serve this really important emerging market. Behind the scenes, AWS services such as AWS Lambda, Amazon API Gateway, Amazon DynamoDB, Amazon Kinesis, Amazon Simple Storage Service (S3), and Amazon Redshift provide the responsive, highly scalable infrastructure needed to build a robust IoT application.
When we talked to our customers and to our own engineers, we learned quite a bit about the pain points that add complexity and development time to IoT applications. They told us that connecting devices to the cloud is overly complex due to the variety of SDKs and protocols that they need to support in a secure and scalable fashion. Making this even more difficult is the fact that many devices “feature” intermittent connectivity to the Internet, even as application logic shifts from the device to the cloud. Finally, the sheer volume of data generated by the sensors attached to the devices mandates a Big Data approach to storage, analytics, and visualization.
These are, to be sure, some steep requirements. As you can read in my post above, we have designed AWS IoT with all of them in mind.
Now Available
I am happy to be able to announce that the beta period is over and that AWS IoT is now generally available. Many AWS customers are already building apps and creating new businesses around IoT. Here are a couple of examples:
- The Philips HealthSuite digital platform collects, analyzes, and stores 15 petabytes of patient data (case study).
- Scout Alarm uses AWS IoT to support an ever-growing set of self-installed, wireless home security systems, allowing them to focus on the user experience instead of on the infrastructure.
During the beta, we added a pair of important features to AWS IoT:
- AWS Mobile SDK for iOS now supports AWS IoT (Android support is in the works).
- IPv6 support for exchanging messages between devices and the AWS IoT Device Gateway.
IoT Use Cases
Earlier this week I sat down with a couple of members of the IoT team. They told me that our customers are planning to use AWS IoT to support many industries and use cases! Here’s a sampling:
Agriculture
- Cars & trucks
- Consumer devices
- Gaming
- Home automation
- Logistics
- Medical
- Municipal infrastructure
- Oil & gas
- Robotics
Get Started Today
To learn more about AWS IoT and how you can put it to use in your environment, hop on over to the Getting Started page. You may also want to read the AWS IoT FAQs and study the AWS IoT Documentation.
— Jeff;
Learn About the newest AWS Services – Attend our October Webinars
If you attended AWS re:Invent, you were among the first to know about Amazon QuickSight, AWS IoT, Kinesis Firehose, and our other new offerings. Perhaps you had time to attend a session to learn more about the new service or services that were of interest to you. If you didn’t attend re:Invent or missed a session or two and are ready to learn more, I’ve got you covered. We will be running nine new-product webinars later this month. Each webinar is designed to provide you with the information that you need to have in order to be up and running as quickly as possible.
Here’s what we have for you! The webinars are free but “seating” is limited and you should definitely sign up ahead of time if you want to attend (all times are Pacific):
Tuesday, October 27
QuickSight is a fast, cloud-powered business intelligence tool. You can build visualizations, perform ad-hoc analysis, and get business insights from your data.
- Webinar: Introducing Amazon QuickSight (9 – 10 AM).
- Blog Post: Amazon QuickSight – Fast & Easy to Use Business Intelligence for Big Data at 1/10th the Cost of Traditional Solutions.
AWS IoT is a managed cloud platform that lets connected devices easily and securely interact with cloud applications and other devices.
- Webinar: Getting Started with AWS IoT (10:30 – 11:30 AM).
- Blog Post: AWS IoT – Cloud Services for Connected Devices.
Amazon Kinesis Firehose is the easiest way to load streaming data into AWS.
- Webinar: Introducing Amazon Kinesis Firehose (Noon – 1 PM).
- Blog Post: Amazon Kinesis Firehose – Simple & Highly Scalable Data Ingestion.
Wednesday, October 28
Spot Blocks allow you to launch Spot instances that will run for a finite duration (1 to 6 hours).
- Webinar: Introducing Spot Blocks (9 – 10 AM).
- Blog Post: New – EC2 Spot Blocks for Defined-Duration Workloads.
AWS WAF is a web application firewall that helps protect your web applications from common exploits.
- Webinar: Introducing AWS WAF (10:30 – 11:30 AM).
- Blog Post: New AWS WAF.
Amazon Elasticsearch Service is a managed service that makes it easy to deploy, operate, and scale Elasticsearch in the AWS Cloud.
- Webinar: Introducing Amazon Elasticsearch Service (Noon – 1 PM).
- Blog Post: New – Amazon Elasticsearch Service.
Thursday, October 29
AWS Lambda lets you run code in the cloud without provisioning or managing servers.
- Webinar: AWS Lambda Best Practices: Python, Scheduled Jobs, and More (9 – 10 AM).
- Blog Post: AWS Lambda Update – Python, VPC, Increased Function Duration, Scheduling, and More.
AWS Mobile Hub provides an integrated console that helps you build, test, and monitor your mobile apps.
- Webinar: Introducing AWS Mobile Hub (10:30 – 11:30 AM).
- Blog Post: AWS Mobile Hub – Build, Test, and Monitor Mobile Applications.
AWS Import/Export Snowball is a petabyte-scale data transport solution that uses secure appliances to transfer large amounts of data into and out of AWS.
- Webinar: Introducing AWS Import/Export Snowball (Noon – 1 PM).
- Blog Post: AWS Import/Export Snowball – Transfer 1 Petabyte Per Week Using Amazon-Owned Storage Appliances.
— Jeff;
AWS IoT – Cloud Services for Connected Devices
Have you heard about the Internet of Things (IoT)? Although critics sometimes dismiss it as nothing more than “put a chip in it,” I believe that the concept builds upon some long-term technology trends and that there’s something really interesting and valuable going on.
To me, the most relevant trends are the decreasing cost of mass-produced compute power, the widespread availability of IP connectivity, and the ease with which large amounts of information can be distilled into intelligence using any number of big data tools and techniques:
- Mass-produced compute power means that it is possible to crank out powerful processors that consume modest amounts of power, occupy very little space, and cost very little. These attributes allow the processors to be unobtrusively embedded in devices of all shapes and sizes.
- Widespread IP connectivity (wired or wireless) lets these processors talk to each other and to the cloud. While this connectivity is fairly widespread, it is definitely not ubiquitous.
- Big data allows us to make sense of the information measured, observed, or collected, by the processors running in these devices.
We could also add advances in battery & sensor technology to the list of enabling technologies for the Internet of Things. Before too long, factory floors, vehicles, health care systems, household appliances, and much more will become connected “things.” Two good introductory posts on the topic are 20 Real World Problems Solved by IoT and Smart IoT: IoT as a Human Agent, Human Extension, and Human Complement. My friend Sudha Jamthe has also written on the topic; her book IoT Disruptions focuses on new jobs and careers that will come about as IoT becomes more common.
Taking all of these trends as givens, it should not come as a surprise that we are working to make sure that AWS is well-equipped to support many different types of IoT devices and applications. Although I have described things as connected devices, they can also take the form of apps running on mobile devices.
New AWS IoT
Today we are launching AWS IoT (Beta).
This new managed cloud service provides the infrastructure that allows connected cars, factory floors, aircraft engines, sensor grids, and the like (AWS IoT refers to them as “things”) to easily and securely interact with cloud services and with other devices, all at world-scale. The connection to the cloud is fast and lightweight (MQTT or REST), making it a great fit for devices that have limited memory, processing power, or battery life.
Let’s take a look at the components that make up AWS IoT:
- Things are devices of all types, shapes, and sizes including applications, connected devices, and physical objects. Things measure and/or control something of interest in their local environment. The AWS IoT model is driven by state and state changes. This allows things to work properly even when connectivity is intermittent; applications interact with things by way of cloud-based Thing Shadows. Things have names, attributes, and shadows.
- Thing Shadows are virtual, cloud-based representations of things. They track the state of each connected device, and allow that state to be tracked even if the thing loses connectivity for an extended period of time.
- The real-time Rules Engine transforms messages based on expressions that you define, and routes them to AWS endpoints (Amazon DynamoDB, Amazon Simple Storage Service (S3), AWS Lambda, Amazon Simple Notification Service (SNS), Amazon Simple Queue Service (SQS), Amazon Kinesis, and Amazon Kinesis Firehose) all expressed using a SQL-like syntax. Routing is driven by the contents of individual messages and by context. For example, routine readings from a temperature sensor could be tracked in a DynamoDB table; an aberrant reading that exceeds a value stored in the thing shadow can trigger a Lambda function .
- The Message Broker speaks MQTT (and also HTTP 1.1) so your devices can take advantage of alternative protocols even if your cloud backend does not speak them. The Message Broker can scale to accommodate billions of responsive long-lived connections between things and your cloud applications. Things use a topic-based pub/sub model to communicate with the broker, and can also publish via HTTP request/response. They can publish their state and can also subscribe to incoming messages. The pub/sub model allows a single device to easily and efficiently share its status with any number of other devices (thousands or even millions).
- Device SDKs are client libraries that are specific to individual types of devices. The functions in the SDK allow code running on the device to communicate with the AWS IoT Message Broker over encrypted connections. The devices identify themselves using X.509 certificates or Amazon Cognito identities. The SDK also supports direct interaction with Thing Shadows.
- The Thing Registry assigns a unique identity to each thing. It also tracks descriptive metadata such as the attributes and capabilities for each thing.
All of these components can be created, configured, and inspected using the AWS Management Console, the AWS Command Line Interface (CLI), or through the IoT API.
AWS IoT lets billions of things keep responsive connections to the cloud, and lets cloud applications interact with things (works in device shadows, rules engine, and the real-time functionality). It receives messages from things and filters, records, transforms, augments, or routes them to other parts of AWS or to your own code.
Getting Started with AWS IoT
We have been working with a large group of IoT Partners to create AWS-powered starter kits:
Beaglebone Green and Grove IoT Starter Kit Powered by AWS.
- Dragonboard IoT Starter Kit Powered by AWS.
- Intel Edison and Grove IoT Starter Kit Powered by AWS.
- Marvel EZ-Connect MW300 IoT Starter Kit Powered by AWS.
- MediaTek Linkit One IoT Starter Kit Powered by AWS.
- Microchip IoT Starter Kit Powered by AWS.
- Renasas IoT Starter Kit Powered by AWS.
- Seeeduino Cloud and Grove IoT Starter Kit Powered by AWS.
- TI LaunchPad IoT Starter Kit Powered by AWS.
- WICED B4343W IoT Starter Kit Powered by Broadcom and AWS.
Once you have obtained a kit and connected it to something interesting, you are ready to start building your first IoT application using AWS IoT. You will make use of several different SDKs during this process:
- The Device SDK (C, JavaScript, and Arduino Yún) runs on the device.
- The AWS SDKs give you access to AWS from your web or mobile app.
The AWS IoT Console will help you get started. With a few clicks you can create your first thing, and then download the SDK, security credentials, and sample code you will need to connect a device to AWS IoT.
You can also build AWS IoT applications that communicate with an Amazon Echo via the Alexa Skills Kit. AWS IoT can trigger an Alexa Skill via a Lambda function and Alexa Skills can interact with thing shadows. Alexa Skills can also take advantage of AWS IoT’s bidirectional messaging capability (which traverses NAT and firewalls found in home networks) to wake devices with commands from the cloud. Manufacturers can use thing shadows to store responses to application-specific messages.
AWS IoT in the Console
The Console includes an AWS IoT tutorial to get you started:
It also provides complete details on each thing, including the thing’s API endpoint, MQTT topic, and the contents of its shadow:
AWS IoT Topics, Messages, and Rules
All of the infrasructure that I described can be seen as a support system for the message and rule system that forms the heart of AWS IoT. Things disclose their state by publishing messages to named topics. Publishing a message to a topic will create the topic if necessary; you don’t have to create it in advance. The topic namespace is hierarchical (“myfactories/seattle/sensors/door”)
Rules use a SQL-like SELECT
statement to filter messages. In the IoT Rules Engine, the FROM
clause references an MQTT topic and the WHERE
clause references JSON properties in the message. When a rule matches a message, it can invoke one or more of the following actions:
- Insert, update, or query a DynamoDB table.
- Invoke a Lambda function.
- Write to an S3 bucket.
- Publish to an SNS topic or endpoint.
- Publish to an SQS queue.
- Publish to a Amazon Kinesis stream.
- Publish to an Amazon Kinesis Firehose.
- Republish to another topic.
The SELECT statement can use all (*) or specifically chosen fields of the message in the invocation.
The endpoints above can be used to reach the rest of AWS. For example, you can reach Amazon Redshift via Kinesis, and external endpoints via Lambda, SNS, or Kinesis.
Thing Shadows also participate in the message system. Shadows respond to HTTP GET requests with JSON documents (the documents are also accessible via MQTT for environments that don’t support HTTP). Each document contains the thing state, its metadata, and a version number for the state. Each piece of state information is stored in both “reported” (what the device last said), and “desired” (what the application wants it to be). Each shadow accepts changes to the desired state (HTTP) post, and publishes “delta” and “accepted” messages to topics associated with the thing shadow. The device listens on these topics and changes its state accordingly.
IoT at re:Invent
If you are at re:Invent, be sure to check out our Mobile Developer & IoT track. Here are some of the sessions we have in store:
- MBL203 – From Drones to Cars: Connecting the Devices in Motion to the Cloud.
- MBL204 -Connecting the Unconnected – State of the Union – Internet of Things Powered by AWS.
- MBL303 -Build Mobile Apps for IoT Devices and IoT Apps for Mobile Devices.
- MBL305 – You Have Date from the Devices, Now What? Getting Value of the IoT.
- WRK202 – Build a Scalable Mobile App on Serverless, Event-Triggered, Back-End Logic.
More to Come
There’s a lot more to talk about and I have barely scratched the surface with this introductory blog post. Once I recover from AWS re:Invent, I will retire to my home lab and cook up a thing or two of my own and share the project with you. Stay tuned!
— Jeff;
PS – Check out the AWS IoT Mega Contest!
New Internet of Things (IoT) Hack Series at the AWS Loft – Sign up Now!
Are you familiar with the Internet of Things (IoT) concept? Compact, low-cost, Internet-connected devices are now embedded in cars, buildings, factories, appliances, and so forth. The devices collect light, weight, temperature, humidity, vibration, location, or pressure data and then forward it to another location for storage, processing, analysis, and action.
New Challenges
The low-cost nature of the devices and the value that they can bring to consumers, manufacturers, forecasters, and governments all but guarantees that there will be millions or billions of them deployed in the coming years.
Of course, the existence large numbers of devices pumping out continuous streams of data creates an interest set of challenges; this is an area where you can make use of everything that you know about Big Data.
Data storage efficiency is paramount, since there’s a lot of it. Each data point is of modest value; the value emerges only after aggregation, processing, and detailed analysis. Fortunately, the AWS cloud makes a great host for IoT applications. Route the incoming data stream to Amazon Kinesis, store the raw data in Amazon Simple Storage Service (S3) or Amazon DynamoDB, and then do detailed analysis using Amazon Redshift.
IoT HackDay at re:Invent
In order to prepare developers for the new challenges brought about by the emergence of IoT, we conducted our first-ever IoT Hackday at AWS re:Invent. The teams used Intel Edison and Spark Core devices and all sorts of sensors to build cloud-powered IoT devices. Check out my brief interview with Jinesh Varia to learn more.
Here’s a picture from the event:
With support from our friends at Intel and Spark, 238 developers assembled into 52 teams and spent 16 hours learning how to build their very own IoT applications.
To learn how to connect and interact with AWS Cloud services from these devices, every team built the HelloWorld for AWS-IoT – The Connected Maraca – a device that when shaken sends data to Amazon Kinesis, authenticates via Amazon Cognito and stores data in Amazon DynamoDB. We were fascinated to see that all the teams built the connected maraca in less than an hour and started sending data to AWS.
Leaderboards and dashboards on the screen kept score and made for a fun and entertaining environment. Later, developers and hackers leveraged the “Sensor Bar” and used innovative sensors such as NFC, Infrared emitters, innovative LEDs, ultrasonic sensors to design and build their own dream machine. Over 18 teams presented their finished devices and applications. We were fascinated by the innovation and impressed by how quickly hackers were able to build these devices using the AWS Cloud resources.
It was fascinating to watch as the hackers built all sorts of innovative connected devices in less than 10 hours. This ranged from some real-world innovation like game controllers, climate control devices, smart house management products, a flood detection device, a real-time road traffic Analyzer, basement and backyard monitors to some funny but useful smart devices like a stall patrol for your office restroom and the self-explanatory “No More Empty Beer Mugs.”
At the end of the HackDay, 3 winners (Don’t Panic!, SenseiGrow, and Smarthouse) were selected! Here’s a video of the hackers and the winners:
IoT Hack Series at the AWS Pop-up Loft
In order to help even more developers to build IoT applications, we will be running a series of Hack Days at the AWS Pop-up Loft in San Francisco. Once a month, developers will have the opportunity to participate in an eight hour (10 AM to 6 PM) bootcamp that will make use of the materials that we developed for re:Invent. The first event takes place on Tuesday, February 17th and the second on Friday, March 13th. If you would like to attend one of these free (but space-limited) Hack Days events, please register now.
— Jeff;