Skip to content

AWS IoT Core Connector

NEW: Federation Support

An integration with AWS IoT is now easier using Exosite's Device Cloud Federation API.

Device Cloud Federation

Contact Exosite support for more information.

Prerequisite

  • Own an AWS IoT account
  • Own devices compatible with AWS IoT connectivity
  • Have devices connecting & reporting to AWS IoT cloud

Set Up

Create an IoT connector from AWS IoT Connector template

Go to your newly created connector and click on 'Services' tab

Click MQTT Service > Start filling in all the required information

Title Content
Host <The endpoint of AWS IoT Core>
Port 8883
Username/Password <Empty>
sslOption/Private key pem the xxx.private.key you downloaded previously
sslOption/Certificate pem the xxx.cert.pem you downloaded previously
sslOption/Root CA Certificate the root CA download from AWS
topics pm/+/sense/environmental
advanced <Empty>

Info

For Private key pem/Certificate pem/Root CA, please make sure the format is a one-liner string joined with new line character, "n". Example shown below.

Original Format

Expected Format

Click 'Modules' Tab and custom the "vendor.configIO" and parser "vendor.c2c.transform" by your design. Please note, the example here is for creating "temperature" & "humidity" channel.

local config_io = [[
{
  "channels": {
    "temperature": {
      "display_name": "Temperature",
      "description": "Temperature Sensor Reading",
      "properties": {
        "data_type": "TEMPERATURE",
        "primitive_type": "NUMERIC",
        "data_unit": "DEG_CELSIUS"
      },
      "protocol_config": {
        "app_specific_config": {}
      }
    },
    "humidity": {
      "display_name": "Humidity",
      "description": "Humidity Sensor Reading",
      "properties": {
        "data_type": "HUMIDITY",
        "primitive_type": "NUMERIC",
        "data_unit": "PERCENT"
      },
      "protocol_config": {
        "app_specific_config": {}
      }
    }
  }
}
]]
return {
  set_to_device = false, -- If set to true, the config_io will be saved & duplicated in each device state
  -- This enables to define a different data schema per device.
  -- By default (false) the above config IO is injected on the fly to the application
  timestamp = 1563939215, -- Unix timestamp of this schema version update
  config_io = config_io
}
-- Defines a decoding function
local function decoder(cloud_data)
   return to_json({
    ["temperature"]=cloud_data.Temperature,
    ["humidity"] = cloud_data.Humidity
 })
end

transform.uplink_decoding = {
  -- keys MUST match the pattern of an uplink topic, to route to specific decoding logic ("+" character is ignored).
  ["pm/+/sense/environmental"] = decoder
  -- Other Cases for other topics must be imp

Note

Take channel "temperature" as an example.

["temperature"]=cloud_data.Temperature
temperature at the left side represents the channel ID defined in Murano. For the right hand side "cloud_data.Temperature", "Temperature" indicates the channel ID defined in AWS IoT Core. Please define your your custom parser in "vendor.c2c.transform" section accordingly.

Go to the Device tab, you will find your device is being created automatically.