Get access to the new Intel® IoT Developer Kit, a complete hardware and software solution that allows developers to create exciting new solutions with the Intel® Galileo and Intel® Edison boards. Visit the Intel® Developer Zone for IoT.
This tutorial will walk you through the process of installing the AWS IoT SDK and show you how to make basic MQTT calls. Before you begin connecting your Intel® Edison board, you will need to ensure the latest OS image has been installed. To do that, follow the getting started instructions based on your host machine: Windows, Mac, or Linux. After following the standard Intel® Edison setup instructions, you will need to establish a serial connection to your device from your machine. Once you have established a serial connection (command line) to your Intel® Edison board, you can proceed to install the AWS IoT SDK using the below instructions.
Before you begin…
- Make sure you have run the configure_edison --setup command to set up your board
- Make sure your Intel® Edison board is online via your local Wi-Fi network (should occur during configure_edison setup)
Install AWS CLI
The AWS CLI is a way to manage your AWS services from your board. You need this first in order to download the SDK.
First, you need to install pip (Python package manager):
curl https://bootstrap.pypa.io/ez_setup.py -o - | python
easy_install pip
Next, install the AWS CLI with pip:
pip install awscli
Note: In order to view the help files ("aws iot help") you need to install Groff and a non-BusyBox version of less.
For Groff:
wget http://ftp.gnu.org/gnu/groff/groff-1.22.3.tar.gz
tar -zxvf groff-1.22.3.tar.gz
cd groff-1.22.3
./configure
make
make install
export PATH=$PATH:/usr/local/bin/
cd ~
For Less:
First rename the old version of less
mv /usr/bin/less /usr/bin/less-OLD
Then install the new version of less
wget http://www.greenwoodsoftware.com/less/less-458.zip
upzip less-458.zip
cd less-458.zip
chmod 777 /*
./configure
make
make install
cd ~
To make sure everything has installed correctly, run the iot help file:
aws iot help
Get AWS credentials:
At this point, you should have AWS CLI installed. Make new user and get credentials from the AWS console following instructions at: http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html#cli-signup. Once you have an Access ID and Key you can configure AWS and enter the ID and Key with:
aws configure
NOTE: for default region you must enter us-east-1 in order to be able to configure the AWS IoT. The default format can be left as json.
In order to get permission to download the AWS IoT tools you need to associate the administrator account policy to the user that you created. To do this go to the users panel in the IAM console, select the user you created, attach policy, and select administrator account.
Generate Certificates:
First create a folder to store your certificates in:
mkdir aws_certs
cd aws_certs
Generate a private key with open ssl:
openssl genrsa -out privateKey.pem 2048
openssl req -new -key privateKey.pem -out cert.csr
Fill out the fields with your info.
Run the following to activate the certificate:
aws iot --endpoint-url https://i.us-east-1.pb.iot.amazonaws.com create-certificate --certificate-signing-request file://cert.csr --set-as-active > certOutput.txt
Run the following to save the certificate into a cert.pem file:
aws iot --endpoint-url https://i.us-east-1.pb.iot.amazonaws.com describe-certificate --certificate-id <certificate ID> --output text --query certificateDescription.certificatePem > cert.pem
NOTE: Replace <certificate ID> with the ID stored in the "certificateId" field in certOutput.txt. To view the file enter: more certOutput.txt
Create a Json policy document for AWS IoT SDK:
Copy the following text (ctrl-c):
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action":["iot:*"],
"Resource": ["*"]
}]
}
Enter vi policy.doc hit a and right click to paste the text
Hit escape and type in :wq to save and quit
First enter:
aws iot --endpoint-url https://i.us-east-1.pb.iot.amazonaws.com create-policy --policy-name PubSubToAnyTopic --policy-document file://policy.doc
Then attach the policy to the certificate with:
aws iot --endpoint-url https://i.us-east-1.pb.iot.amazonaws.com attach-principal-policy --principal-arn <principal arn> --policy-name "PubSubToAnyTopic"
NOTE: replace <principal arn> with the value stored in "certifcateArn" in the outputCert.txt file.
Use MQTT to subscribe and publish to AWS
Now that the certificates are in order we can use MQTT to subscribe and publish to the cloud.
First get the root CA pem file:
curl https://www.symantec.com/cerisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem > rootCA.pem
Use the moquitto client to subscribe to a topic:
mosquitto_sub --cafile rootCA.pem --cert certs\cert.pem --
key privateKey.pem -h g.us-east-1.pb.iot.amazonaws.com -p 8883
-q 1 -d -t <topic> -i <client_id>
NOTE: replace <topic> and <client_id> with the topic you wish to subscribe to and the id you wish to have.
Use mosquitto to publish to a topic:
mosquitto_pub --cafile crootCA.pem --cert certs\cert.pem --
key privateKey.pem -h g.us-east-1.pb.iot.amazonaws.com -p 8883
-q 1 -d -t <topic> -i <client_id> -m <"message">
NOTE: Replace <topic>, <client_id>, and <"message"> with the topic, client id and message you wish to publish. the message must be in quotes.
For tutorials showing how to use various features within the AWS IoT SDK on your Intel Edison Board, see https://github.com/intel-iot-devkit/aws-iot-intel