(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[category:ESP32 BareMetal]]
 
[[category:ESP32 BareMetal]]
In this tutorial we will discuss how to configure the AWS for amazon user account and later we will see how to setup a new '''things''' and generate '''certificates''' to communicate with your IOT device using AWS MQTT services.
+
[[category:ESP32 Arduino]]
 +
Security of connected devices is of paramount concern. There are several possible ways to make the devices secure. One of the most essential and widely used options is to use end to end encryption. The widely used Transport Layer Security (TLS) version 1.2 is the latest standard used on web for secure connections including banking.  There are very few micro-controller based solutions that implement TLS 1.2 due to lack of resources. ESP32 is one of the most affordable options out there. So let’s look at securely connecting Hornbill ESP32 Dev board to Amazon web services (AWS) IOT.  
  
=AWS User Account=
+
We will start with configuring AWS account, setting up the '''thing''', generating the security certificates, testing with a MQTT desktop client and then communicating with the hardware.  
For using the AWS services you need to have a user account and login using the [https://www.amazon.com/ap/signin?openid.assoc_handle=aws&openid.return_to=https%3A%2F%2Fsignin.aws.amazon.com%2Foauth%3Fresponse_type%3Dcode%26client_id%3Darn%253Aaws%253Aiam%253A%253A015428540659%253Auser%252Fhomepage%26redirect_uri%3Dhttps%253A%252F%252Fconsole.aws.amazon.com%252Fconsole%252Fhome%253Fstate%253DhashArgs%252523%2526isauthcode%253Dtrue%26noAuthCookie%3Dtrue&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&action=&disableCorpSignUp=&clientContext=&marketPlaceId=&poolName=&authCookies=&pageId=aws.ssop&siteState=unregistered%2Cen_US&accountStatusPolicy=P1&sso=&openid.pape.preferred_auth_policies=MultifactorPhysical&openid.pape.max_auth_age=120&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&server=%2Fap%2Fsignin%3Fie%3DUTF8&accountPoolAlias=&forceMobileApp=0&language=en_US&forceMobileLayout=0 AWS Login link]
+
  
  
  
Existing users can directly login and directly jump to next.  New users should register following the below steps.
+
=AWS User Account=
[[File:AwsIOT Login page.JPG]]
+
For using the AWS services you need to have a user account and login using the [https://www.amazon.com/ap/signin?openid.assoc_handle=aws&openid.return_to=https%3A%2F%2Fsignin.aws.amazon.com%2Foauth%3Fresponse_type%3Dcode%26client_id%3Darn%253Aaws%253Aiam%253A%253A015428540659%253Auser%252Fhomepage%26redirect_uri%3Dhttps%253A%252F%252Fconsole.aws.amazon.com%252Fconsole%252Fhome%253Fstate%253DhashArgs%252523%2526isauthcode%253Dtrue%26noAuthCookie%3Dtrue&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&action=&disableCorpSignUp=&clientContext=&marketPlaceId=&poolName=&authCookies=&pageId=aws.ssop&siteState=unregistered%2Cen_US&accountStatusPolicy=P1&sso=&openid.pape.preferred_auth_policies=MultifactorPhysical&openid.pape.max_auth_age=120&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&server=%2Fap%2Fsignin%3Fie%3DUTF8&accountPoolAlias=&forceMobileApp=0&language=en_US&forceMobileLayout=0 AWS Login link]
<br><br>
+
  
Provide the valid mail id, user name and password to create an AWS account.
+
Existing users can directly login and directly jump to next.  New users should register first and link the credit card for payments. Basic plan is free for first Year, other plans are chargeable. Check [https://aws.amazon.com/iot-platform/pricing/ this link] for available plans.
[[File:AwsIOT NewUser.JPG]]
+
[[File:AwsIOT_Login_page.JPG]]
 
<br><br>
 
<br><br>
  
Enter the Company/Personnel contact Details
+
= Creating a new thing=
[[File:AwsIOT contact info.JPG]]
+
After Login, click on '''Signin To Console''' to go to AWS dash board.
<br><br>
+
 
+
Provide the CreditCard details for payment.
+
Basic plan is free for first Year, other plans are chargeable.
+
We will look into the different plans as we proceed.
+
[[File:AwsIOT Payment Details.JPG]]
+
<br><br>
+
 
+
 
+
Here the Amazon will verify the details provided by you through phone call.
+
[[File:AwsIOT Identity Verfication.JPG]]
+
<br><br>
+
 
+
You will receive a verification call for the registered number and will be asked to entry the 4-digit verification code which is currently displayed on the screen. Once you enter the 4-digit code, verification should be completed as shown below.
+
[[File:AwsIOT Identity Verfication SuccessFul.JPG]]
+
<br><br>
+
 
+
 
+
Click the link that is '''marked with red box''' to view the plans and select according to your requirement. We will go with basic.
+
[[File:AwsIOT Plan Selection.JPG]]
+
<br><br>
+
 
+
We are done with the registration, wait for couple of minutes to receive the registration confirmation mail.
+
[[File:AwsIOT registConfirmation.JPG]]
+
<br><br>
+
 
+
= Temp=
+
After Login, click on Signin To Console to go to AWS dash board.
+
 
Now type AWS IOT and Select the AWS IOT (Connect Devices to Cloud) from drop down as shown below.
 
Now type AWS IOT and Select the AWS IOT (Connect Devices to Cloud) from drop down as shown below.
 
[[File:AwsIOT Start.png]]
 
[[File:AwsIOT Start.png]]
Line 57: Line 28:
 
<br><br>
 
<br><br>
  
Now click on Create to create a new '''Thing'''.
+
Click on Create to create a new '''Thing'''.
 
[[File:AwsIOT ThingCreate.jpg]]
 
[[File:AwsIOT ThingCreate.jpg]]
 
<br><br>
 
<br><br>
 
   
 
   
 
Provide a unique '''Thing''' name and click on Create to proceed.
 
Provide a unique '''Thing''' name and click on Create to proceed.
[[File:AwsIOT ThingCreate.jpg]]
+
[[File:AwsIOT TestThingName.jpg]]
 
<br><br>
 
<br><br>
  
Line 69: Line 40:
 
<br><br>
 
<br><br>
  
Get the MQTT HOST name and thing name from Interact menu. These will be used to connect with AWS MQTT and also for subscribe/publish the topics.
+
Get the MQTT HOST name and thing name from Interact menu. These will be used to connect with AWS MQTT and also to subscribe/publish the topics.
 
[[File:AwsIOT ThingInteract.jpg]]
 
[[File:AwsIOT ThingInteract.jpg]]
 
<br><br>
 
<br><br>
  
 +
=Generate certificates for new thing=
 
Go to Security menu and click on Create Certificate to register the certificates.
 
Go to Security menu and click on Create Certificate to register the certificates.
 
[[File:AwsIOT ThingCreateCertificate.jpg]]
 
[[File:AwsIOT ThingCreateCertificate.jpg]]
Line 84: Line 56:
 
<br><br>
 
<br><br>
  
 +
=Define and Attach Policies=
 
Go do AWS dash board and select the Security-->Policies and click on '''Create a Policy''' as shown below.
 
Go do AWS dash board and select the Security-->Policies and click on '''Create a Policy''' as shown below.
 
[[File:AwsIOT ThingPolicyCreate.jpg]]
 
[[File:AwsIOT ThingPolicyCreate.jpg]]
Line 99: Line 72:
 
[[File:AwsIOT ThingPolicyAttach 1.jpg]]
 
[[File:AwsIOT ThingPolicyAttach 1.jpg]]
  
 +
<br>
 +
 +
=Verify the Attached Policies=
 
Now verify whether the policies are attached to newly created thing as shown below.
 
Now verify whether the policies are attached to newly created thing as shown below.
 
[[File:AwsIOT VerifyPolicy.jpg]]
 
[[File:AwsIOT VerifyPolicy.jpg]]
 +
 +
 +
=Testing Using MQTT Fx tool=
 +
As we have a test thing and also the certificates assigned with required policies. We can test it using the MQTT Fx broker tool. Lets list all the info we had while creating the thing and it certificates.
 +
 +
Broker Address / HOST Name:  a3jzsmkecjw9hn.iot.us-west-2.amazonaws.com <br>
 +
Broker Port : 8883
 +
 +
Certificates:<br>
 +
aws-root-ca.pem <br>
 +
certificate.pem.crt <br>
 +
private.pem.key<br>
 +
[[File:MqttFx Setup.jpg]]
 +
<br><br>
 +
 +
After doing the above setting, connect to the AWS.
 +
[[File:Mqtt Connect.jpg]]
 +
<br><br>
 +
 +
Subscribe to the thing that we created in the above tutorial.
 +
[[File:Mqtt Subscribe.JPG]]
 +
<br><br>
 +
 +
Successfully subscribed to the myTestThing.
 +
[[File:Mqtt SubscribeSucess.JPG]]
 +
<br><br>
 +
 +
Now select the myTestThing topic and publish a message.
 +
[[File:Mqtt Publish.JPG]]
 +
<br><br>
 +
 +
The published message is successfully received.
 +
[[File:Mqtt SubscribeTopicRcvd.JPG]]
 +
 +
=Industrial data Logger=
 +
Below is the sample code for logging the temperature and Current using HornBill ESP32.
 +
<html>
 +
<script src="https://gist.github.com/SaheblalBagwan/793a1bb6c8d55d454436508c0fba2d7b.js"></script>
 +
</html>
 +
 +
Download the complete IDF project from [https://github.com/ExploreEmbedded/Hornbill-Examples/tree/master/esp-idf/Hornbill-Industrial-Data-Logger this link].
 +
<br>
 +
 +
Have an opinion, suggestion , question or feedback about the article let it out here!
 +
{{DISQUS}}

Latest revision as of 21:03, 12 April 2017

Security of connected devices is of paramount concern. There are several possible ways to make the devices secure. One of the most essential and widely used options is to use end to end encryption. The widely used Transport Layer Security (TLS) version 1.2 is the latest standard used on web for secure connections including banking. There are very few micro-controller based solutions that implement TLS 1.2 due to lack of resources. ESP32 is one of the most affordable options out there. So let’s look at securely connecting Hornbill ESP32 Dev board to Amazon web services (AWS) IOT.

We will start with configuring AWS account, setting up the thing, generating the security certificates, testing with a MQTT desktop client and then communicating with the hardware.


AWS User Account

For using the AWS services you need to have a user account and login using the AWS Login link

Existing users can directly login and directly jump to next. New users should register first and link the credit card for payments. Basic plan is free for first Year, other plans are chargeable. Check this link for available plans. AwsIOT Login page.JPG

Creating a new thing

After Login, click on Signin To Console to go to AWS dash board. Now type AWS IOT and Select the AWS IOT (Connect Devices to Cloud) from drop down as shown below. AwsIOT Start.png

Now the AWS GetStarted Window will open only for the first time. Click on GetStarted to go to dash board. AwsIOT GetStarted.jpg

Click on Register-->Things for registering a new Thing as shown below. AwsIOT registerThing.jpg

Click on Create to create a new Thing. AwsIOT ThingCreate.jpg

Provide a unique Thing name and click on Create to proceed. AwsIOT TestThingName.jpg

myTestThing is SuccessFul created as shown below. AwsIOT ThingCreatedSuccessfully.jpg

Get the MQTT HOST name and thing name from Interact menu. These will be used to connect with AWS MQTT and also to subscribe/publish the topics. AwsIOT ThingInteract.jpg

Generate certificates for new thing

Go to Security menu and click on Create Certificate to register the certificates. AwsIOT ThingCreateCertificate.jpg

Click on the activate button to activate the certificates and download the certificate,private key and root CA as name them as below.

 aws-root-ca.pem 
certificate.pem.crt
private.pem.key

AwsIOT ThingCertActivateSuccess.jpg

Define and Attach Policies

Go do AWS dash board and select the Security-->Policies and click on Create a Policy as shown below. AwsIOT ThingPolicyCreate.jpg

Define the policy for myTestThing as shown below AwsIOT ThingPolicyDefine.jpg

Now go back to Certificates and attach the policy that was defined above AwsIOT ThingPolicyAttach.jpg

Select the thing and attach the policies define above. AwsIOT ThingPolicyAttach 1.jpg


Verify the Attached Policies

Now verify whether the policies are attached to newly created thing as shown below. AwsIOT VerifyPolicy.jpg


Testing Using MQTT Fx tool

As we have a test thing and also the certificates assigned with required policies. We can test it using the MQTT Fx broker tool. Lets list all the info we had while creating the thing and it certificates.

Broker Address / HOST Name: a3jzsmkecjw9hn.iot.us-west-2.amazonaws.com
Broker Port : 8883

Certificates:
aws-root-ca.pem
certificate.pem.crt
private.pem.key
MqttFx Setup.jpg

After doing the above setting, connect to the AWS. Mqtt Connect.jpg

Subscribe to the thing that we created in the above tutorial. Mqtt Subscribe.JPG

Successfully subscribed to the myTestThing. Mqtt SubscribeSucess.JPG

Now select the myTestThing topic and publish a message. Mqtt Publish.JPG

The published message is successfully received. Mqtt SubscribeTopicRcvd.JPG

Industrial data Logger

Below is the sample code for logging the temperature and Current using HornBill ESP32.

Download the complete IDF project from this link.

Have an opinion, suggestion , question or feedback about the article let it out here!