The HTTP protocol has used rarely in the devices to cloud in the IoT industry. Professionals usually consider MQTT as the standard of messaging protocol used in the Internet of Things (IoT). Few articles have mentioned using HTTP for devices transmission protocols.
This article investigates AWS Rest API and conducts the study about the feasibility of the HTTP protocol used from devices to cloud.
- Understand how AWS HTTP REST API work
- propose a way to post devices information by using the HTTP protocol
- Create a simulator by using this protocol
- AWS IoT Core
- A working PC (Used to simulate the physical devices)
AWS provides mainly 2 type of protocol choice, MQTT and HTTP. both of them should theoretically work on their platform. however, since the MQTT is the industry standard way of connecting the hardware into the IoT platform. thus there are fewer resources about the use of HTTP protocol.
Device Shadow REST API is introduced to provides the messaging interface between the device to the cloud. according to the official document the URL was defined in the flowing format:
A shadow exposes the following URI for updating state information:
The endpoint is specific to your AWS account. To find your endpoint, you can:
- Use the describe-endpoint command from the AWS CLI.
- Use the AWS IoT console settings. In Settings, the endpoint is listed under Custom endpoint
- Use the AWS IoT console thing details. Open Manage. Under Manage, choose Things and, in the list of things, select and open a thing. In the left nav of the Thing detail page, choose to Interact and view the endpoint URI in the HTTPS section of the page.
The endpoint definitions:
- URI/URL for shadow REST APIs
- REST API authentications
- Create IAM User (With API Access privileged)
- Signature Version 4 process (Obtain the authentication keys)
- Encode Auth information into HTTP headers
Start from simplest, the first aim is to establish an HTTP Post request containing the dummy sensor values to the cloud. in order to do that in AWS IoT, The following stuff needs to ready before we can start to establish the request.