Template to Create Asset Types

MQTT Connector

MQTT-Sample 1

{
  "name": "5919-MQTT",
  "connectionType": "MQTT",
  "config": {
    "secure": false,
    "username": "iotnms-admin@cisco.com",
    "password": "iot0D",
    "serverCertificate": null,
    "privateKey": null
  },
 
  "dataModel": {
    "temperatureInDegreeCelsius": {
      "label": "Temperature",
      "description": "Temperature in degrees celsius",
      "topic": "temp",
      "datatype": "Float",
      "category": "TELEMETRY"    
    },
    "relativeHumidityInPercent": {
      "label": "Humidity",
      "topic": "hum",
      "datatype": "Float",
         "category": "TELEMETRY"   
     },
    "airPressureInMillibar": {
      "label": "Air Pressure",
      "topic": "pressure",
      "datatype": "Float",
      "category": "TELEMETRY"    
    },
    "currentLocation": {
      "label": "Current Location",
      "topic": "location",
      "datatype": "String",
     "category": "TELEMETRY"     
    }
  }
}

MQTT-Sample2

{
    "name": "testMQTT",
    "connectionType": "MQTT",
    "config": {
        "secure": true,
        "username": "iotnms-admin@cisco.com",
        "password": "iot0D",
        "serverCertificate": null,
        "privateKey": null
    },
 
    "dataModel": {
        "test123": {
            "label": "test123",
            "description": "test",
            "datatype": "String",
            "required": false,
            "category": "ATTRIBUTE"
        },
        "test": {
            "label": "test",
            "description": "",
            "datatype": "String",
            "topic": "12",
            "category": "TELEMETRY"
        }
    }
}  

MQTT-samplewithCert

{
    "name": "sv-mqtt-api",
    "connectionType": "MQTT",
    "config": {
        "secure": false,
        "username": "iotnms-admin@cisco.com",
        "password": "iot0D",
        "serverCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURYRENDQWtRQ0ZCRGtQd2UwSTZjVmxqL1V5ZmN3eHJVQkdOTDFNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1HZ3gKQ3pBSkJnTlZCQVlUQWtSRk1RNHdEQVlEVlFRSURBVklaWE56WlRFUE1BMEdBMVVFQnd3R1MyRnpjMlZzTVE4dwpEUVlEVlFRS0RBWkpUMVFnUlVreEZqQVVCZ05WQkFzTURVbFVJRVJsY0dGeWRHMWxiblF4RHpBTkJnTlZCQU1NCkJrVkpMVWxQVkRBZUZ3MHlNekF5TVRZd05USTNNemhhRncweU5EQXlNVFl3TlRJM016aGFNRzB4Q3pBSkJnTlYKQkFZVEFrUkZNUTR3REFZRFZRUUlEQVZJWlhOelpURVBNQTBHQTFVRUJ3d0dTMkZ6YzJWc01ROHdEUVlEVlFRSwpEQVpKVDFRZ1JVa3hGakFVQmdOVkJBc01EVWxVSUVSbGNHRnlkRzFsYm5ReEZEQVNCZ05WQkFNTUMyMXhkSFF0CmMyVnlkbVZ5TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEweiswR0NubFhQazEKNzlKcWN0cG5sN2M0UnBRSnFLRWRnVG5TMnZUZzY0SWhTdm9GZVFjWUtLZ09tcmZtUGdZbWY2TTMvaFJXbVJPWQpNM0dVWW9KOEpnZ2FhWEFYYmJtT2NDemFPbVBicENFL0h6S1VCZ1J6MkxnZGsyN28wR2l5WnVxSStXMmMzSkFVClgvMlROR3FraHd5eTRQUVlOM2RqWFl2RjRnRFJhMWFRbG5uWFhvOUE4di9rc3lRc3dCQzRSUVF0OXZtYlJJNXcKbEdzTlhVZGcxN1ZRU2xiMkQwNlpmSzlDWnF3M0RsTnBtd3F5bzhkZ2d0a2VuYnZrOUxpQzNQemhPWGlnZ09YNgo0L0t3bDBzUnh2ZlNpOUFpSUNYSDUwdk4yTVcxNVo2dDFyN0pjOGFuWHRzalF5ZlgwY1o2QzRLTHBoQkxKaGo0Cmp3dTFjVGVDK1FJREFRQUJNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUURReFBWYTdRZTE3anRsYnNGUHFkOWQKNGNZSzdwQTluWEsrbk9GeFcva3RWK1pmZmk5VWRFRUFyaUtQR3JNUTF6NVo5cFB4cVVtaEFERWRZTVYyKzYrdwpVTHBnWngzOXIzT0lrSVdrZkVpekVxRjc5V2REL2lVNHMydU5VZ2pSVld0algrRWV6ZG5oRms4YkIwSFdEVFlJCnN4WFNVNmMzWC9IWkhqR3k4ei92bGRaR3Jad2krSVRnOVF5WDg4Yk5KWjg1ZXNUU2gxWXJHN3lIakZsWCt4bXkKUG85SHJseDVET21NOHo1V0g1NTc3YjRnM3BYQkxqK1Q1OHdGNHRUK0tvVHpEOWt0QTJvNDBBS1pXVElWdHYzUQpsSkp3cW5NOUZSRmc2QVZscENPZ1pBWjYrNkhSS2xWaEZ2cDJDTWhxTkpOTGhwNndWVjNiTHFJSWd4THNzWGhICi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
        "privateKey": "LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV3QUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktvd2dnU21BZ0VBQW9JQkFRRFR3YktvblpmTGhVdkIKT3RjekZmb3NBN084Sjk3R01JQlFOa0hkeGZQNkZiQ2sxd2NDbmhYSDJPNmlFNDV2YVFNUnQrZ1BpUDlxaS92NgordlE3blJ5a3pOS2c5eWVCQ0xURHlKSWxvSWlMUVVIdVl0aW1RRnJxOTJZL05Bc0tOdXV1cDNzeU81aVdQclZ5Cisvc25ZNUlSS2EwaVJlVDROMHBBbDhEdzBTcFIzYUZEZUl5MUxCVWtEYkhramh1WEIramtlYWVGSlpzMU1MODUKL0krdVJGditxcHBscTNYZkY2R3ViRGF2NnViU2Q5NVgrWmhUZy9aSWR5SUFoT005eUlpSEJjRG5IME1IaXU4OQoyUHd6ZEJDV3Nrc29wa2JIRGV6UGoxc1owbHk1NzFoWG1HZkxUWThIVk92Yi9IOEFNTSsxQVp1U3I3TUg4T0pGClFzZGFxbXg1QWdNQkFBRUNnZ0VCQU03VjdqcUE1Rm9vOHh2azYzcTh4c1hqUDlaVFkyaFd5NTZOd0x4c3RLamMKTXRSd0xDckVXeVgvb09lekRuZUlMVFZMVzJLQlFHckVIUGJEMVhlOU9OTklOWnlBalplZDkyTWRNSk9NUUpNMAp4TCtpMFZkaW1PdlZoNHZJdTlmWVdWRVp5bDRBbEVSOU1DTUdPZ1g1WGgxaGhmbHFLQUxEanNXVTlTTEVTLy8xCklzZC96UGEwMTlRdzVGNlk3dno2b2FvL3Nmd2c0UUFqNmRjd2p5b3FhVWlhclllNE1UdWZtT3ozK3BQcmltcWcKekpGWnNyUW13WDFTU3h0NWxaTnp5Sk00a1lyRVlDenVVOXlJQm81eElFbGtTQWpZbjlRbG9YaXpRaENaRXpFegpkamljZ2FQNUdGcGVycDhZMEIvVmRuSG50eVlmZVJDdEw5RjVWT0RrL3ZrQ2dZRUE2eWFFNGRXYXFMZGx6dXlsCnpFa0tYelFyZUxxNDVIVTlnSm1Kd2lwejNIM05LNUFMR0NsNnFjRTlEdGVjM2JoK01jMW9lRk45MVh2L3hoNk4KaFhTZzZNK0c2K0xpRDhFUG40MzJONk9UN21PWEUyL0QvQUt5Y3ZKcms1MTlTR3V3ZWVnUDlmdnhYTThnUit5TApyU2hSS09HeEVyeFRUdG54ekZYdWlzQlAraE1DZ1lFQTVvZ3VtcytRZURlOGl6aThidHVzUTlvNkR1a1FBR3JvCnZDbXlZekQyVndsQ1lOb1pPMWQ0YmlWNDVyMVZrWTBLajc4NTc1Uk1NOFV1UXQxMTR1KzlxOFFneXlwVnhuQWEKUWVEdWVSQ05lZ3pqYnFJNDV3U0xvcERMSmNjU1NXbTFma1c5UFhHTHRGaGc0ZnFIVGs4M21XeER0WWcvWEdXVApSRzBTckhValVNTUNnWUVBeHZDV21VMFNoRXhzV0d6RE5CcFRLUXBGQU9YUHlKQWJrVEhVWnkxdFNnd3dTUHViCk56ellac2R5TloxYVBBWjYxUDEzdGR6RTU1ajVZZzYxSWtQeVlpUTRmRlk5ZEtDYjdCdTVRNGNqZnhwSVZReEkKWFd1V3QwSzZtbTh4NzlRVHdIOEJDZFcxZEJSVHRpVzhZYWxyU0Uvd2MrNVorS3JRTTFRNzlLMFF2SHNDZ1lFQQp0cmlRQUFLdTVxcCsxZmFsWEZUZmlIUnErakIrajJZdGpCNmNsd1JTN0krWlBqMEFMTW5hMmFyMzFpT1J0Q2tQCml2b3R5SmhKZ2VzekRLcU42czdORGwwSkJSOU1GMW41WmVnTC9JZERLODhWWVRaUlZjS0RqdG1uT3cwN2tGYXEKRlNqZm90amh1NU1sVDFnTWNPUlhGRkw4bytFWEgzd2ZLdWd0R2VaS2xKTUNnWUVBbmI1SjNCZFJPbzRaNFo4TgpHZXdqWnNBQkRGRGpMME9jaWtoQ1ZhK1M0cGdLa2ZPZVZVVkVIaExVdUY4SHM4Y1dJSXhibEhvL1ZEbkp5UENECmNpZDRSRDA5T3BHSWI4UU0xR0ptQVRtdzRuT3NGRDR4aWhlUEdTeHByLzQ4bmM2c0RIWnlkRWtYVmcrNU1QMFcKRkZ5MmN6c1dQNHNzT0NjRjY0ZXdJVVhGcWlJPQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg=="
    },
    "dataModel": {
        "temperatureInDegreeCelsius": {
            "label": "Temperature",
            "description": "Temperature in degrees celsius",
            "topic": "temp",
            "datatype": "Float",
            "category": "TELEMETRY"
        },
        "relativeHumidityInPercent": {
            "label": "Humidity",
            "topic": "temp+****",
            "datatype": "Float",
            "category": "TELEMETRY"
        },
        "airPressureInMillibar": {
            "label": "Air Pressure",
            "topic": "pressure",
            "datatype": "String",
            "category": "TELEMETRY"
        },
        "currentLocation": {
            "label": "Current Location",
            "topic": "location",
            "datatype": "Boolean",
            "category": "TELEMETRY"
        }
    }
}

JSON Object Description: (Refer the Samples above for JSON API Payload.)

Attribute Mandatory Description Default Value Possible Values Shown Validations
name Yes Name of the Connector Type * Unique
* max length = 2000 characters
* special char not allowed
connectionType Yes Connection Type MQTT MQTT
config (Child Object )
secure Yes - False true/false
username No User Name - - Max length 2000 characters
password No Password - - Max length 2000 characters
serverCertificate No A valid Server Certificate (which is base64encoded) - - secure = true
privateKey No A valid Private Key (which is base64encoded) - - secure = true
dataModel(Child Object )
Attribute Name Yes The Attribute Name is represented as a Key in the JSON API payload under dataModel as seen in the samples. - - * Max length = 2000 characters
* Attribute names should start with a letter or underscore and cannot start with a number or any other special character.
* Attribute name: Expected format: [_A-Za-z][_0-9A-Za-z]*
* Invalid Attribute name: '_test name'. Expected format: [_A-Za-z][_0-9A-Za-z]*, space not allowed
* The Attribute Name should be Unique
label Yes Data Model Attribute label - - Max length 2000 characters
description No Description of the Data Model Attribute - - Max length 2000 characters
datatype Yes String If category = "TELEMETRY"
String,Int,Float,Long,Boolean
ELSE IF category="ATTRIBUTE"
String,Double,EncryptedString,File
Topic if category = "TELEMETRY"
Yes
else
Not Applicable
- - category = "TELEMETRY" Max length 2000 characters
required if category = "ATTRIBUTE"
Yes
if category =
"TELEMETRY"
Not
Applicable
false true, false category = "ATTRIBUTE"
category Yes TELEMETRY TELEMETRY, ATTRIBUTE

Validations while Updating MQTT Asset Type:

  1. Please refer the bottom section for common validations.
  2. Unable to create Asset Type. All used MQTT topic mappings need to be unique. Topic XXX has been used multiple times.
  3. Config field 'topic' can not be blank.
  4. Certificate and private key should be in .pem format.

MODBUS-SERIAL Connector

MODBUS_SERIAL

{
    "name": "testModSerial",
    "connectionType": "MODBUS_SERIAL",
    "config": {
        "timeout": 500,
        "transport": "RTU",
        "baudRate": 9600,
        "dataBits": 8,
        "stopBits": 1,
        "parity": "NONE"
    },
    "dataModel": {
        "rest": {
            "label": "1133",
            "datatype": "String",
            "description": "",
            "rawType": "UINT16",
            "type": "COIL",
            "pollingInterval": 311,
            "offset": 11,
            "category": "TELEMETRY",
            "access": "Read"
        }
    }
}

JSON Object Description: (Refer the Samples above for JSON API Payload.)

Attribute Mandatory Description Default Value Possible Values Shown Validations
name Yes Name of the Connector Type - - - * Unique
* max length = 2000 characters
* special char not allowed
connectionType Yes Connection Type MODBUS_SERIAL MODBUS_SERIAL -
config (Child Object )
timeout No 500 0-65535 -
commPortId No Serial Port for Modbus - Max length 2000 characters
transport Yes RTU RTU -
baudRate Yes 9600 9600,19200 or Custom Value - Custom Value must be an Integer
dataBits Yes 8 5,6,7,8,9 -
stopBits Yes 1 1,2 -
parity Yes NONE NONE,ODD,EVEN -
dataModel(Child Object )
Attribute Name Yes The Attribute Name is represented as a Key in the JSON API payload under dataModel as seen in the samples. * Max length = 2000 characters
* Attribute names should start with a letter or underscore and cannot start with a number or any other special character.
* Attribute name: Expected format: [_A-Za-z][_0-9A-Za-z]*
* Invalid Attribute name: '_test name'. Expected format: [_A-Za-z][_0-9A-Za-z]*, space not allowed
* The Attribute Name should be Unique
label Yes Data Model Attribute label Max length 2000 characters
datatype Yes String If category = "TELEMETRY"
String,Int,Float,Long,Boolean
ELSE IF category="ATTRIBUTE"
String,Double,EncryptedString,File
description No Description of the Data Model Attribute Max length 2000 characters
rawtype Yes UINT16 UINT16, BOOLEAN, INT16, INT32, UINT32, INT64, UINT64, FLOAT32, FLOAT64, CHARSTRING, VARCHARSTRING,INT16SWAP, UINT16SWAP, INT32SWAP, UINT32SWAP, INT64SWAP, UINT64SWAP, FLOAT32SWAP, FLOAT64SWAP, INT32SWAPSWAP, UINT32SWAPSWAP,BCD16, BCD32, BCD32SWAP, INT32M10K, UINT32M10K, INT32M10KSWAP category = "TELEMETRY"
type if category =
"TELEMETRY"
Yes
else
Not
Applicable
COIL COIL, HOLDING, DISCRETE, INPUT category = "TELEMETRY"
pollingInterval if category
= "TELEMETRY"
Yes
else
Not
Applicable
category = "TELEMETRY" Allowed Digits only, negative values not allowed
offset if category
= "TELEMETRY"
Yes
else
Not
Applicable
category = "TELEMETRY" Allowed Digits only, negative values not allowed
category Yes TELEMETRY TELEMETRY, ATTRIBUTE
required if category
= "ATTRIBUTE"

Yes

if category =
"TELEMETRY"

Not
Applicable
false true, false category = "ATTRIBUTE"
access if category =
"TELEMETRY"
Yes
else
Not
Applicable
Read, ReadWrite, Write category = "TELEMETRY"

MODBUS-TCP Connector

MODBUS_TCP

{
  "name": "testModbusTcp1",
  "connectionType": "MODBUS_TCP",
  "config": {
    "timeout": 500,
    "host": "localhost",
    "port": 1502
  },
 
  "dataModel": {
    "custom": {
      "label": "custlabel",
      "datatype": "EncryptedString",
      "description": "",
      "required": false,
      "category": "ATTRIBUTE"
    },
    "telem": {
      "label": "telem_label",
      "datatype": "Int",
      "description": "",
      "rawType": "UINT16",
      "type": "COIL",
      "pollingInterval": 1212,
      "offset": 128,
      "category": "TELEMETRY",
      "access": "Read"
    }
  }
}

MODBUS-TCP Sample2

{
  "name": "testModTCP",
  "connectionType": "MODBUS_TCP",
  "config": {
    "timeout": 500,
    "host": null,
    "port": 1502
  },
  
  "dataModel": {
    "custom": {
      "label": "custlabel",
      "datatype": "EncryptedString",
      "description": "",
      "required": false,
      "category": "ATTRIBUTE"
    },
    "telem": {
      "label": "telem_label",
      "datatype": "Int",
      "description": "",
      "rawType": "UINT16",
      "type": "COIL",
      "pollingInterval": 1212,
      "offset": 128,
      "category": "TELEMETRY",
      "access": "Read"
    }
  }
}

JSON Object Description: (Refer the Samples above for JSON API Payload.)

Attribute Mandatory Description Default Value Possible Values Shown Validations
name Yes Name of the Connector Type - - - * Unique
* max length = 2000 characters
* special char not allowed
connectionType Yes Connection Type MODBUS_TCP MODBUS_SERIAL -
config (Child Object )
timeout No 500 0-65535 - value should be between 0 to 65535
host No Modbus TCP Host - * Length = 63
* no special characters allowed
* if contain numbers and . -> then it should be a valid IP address, if appended by characters then consider a hostname
port No 502 1-65535 - Valid Port between 1-65535
dataModel(Child Object )
Attribute Name Yes The Attribute Name is represented as a Key in the JSON API payload under dataModel as seen in the samples. * Max length = 2000 characters
* Attribute names should start with a letter or underscore and cannot start with a number or any other special character.
* Attribute name: Expected format: [_A-Za-z][_0-9A-Za-z]*
* Invalid Attribute name: '_test name'. Expected format: [_A-Za-z][_0-9A-Za-z]*, space not allowed
* The Attribute Name should be Unique
label Yes Data Model Attribute label
datatype Yes String If category = "TELEMETRY"
String,Int,Float,Long,Boolean
ELSE IF category="ATTRIBUTE"
String,Double,EncryptedString,File
description No Description of the Data Model Attribute
rawtype if category = "TELEMETRY"
Yes
else
Not Applicable
UINT16 UINT16, BOOLEAN, INT16, INT32, UINT32, INT64, UINT64, FLOAT32, FLOAT64, CHARSTRING, VARCHARSTRING,INT16SWAP, UINT16SWAP, INT32SWAP, UINT32SWAP, INT64SWAP, UINT64SWAP, FLOAT32SWAP, FLOAT64SWAP, INT32SWAPSWAP, UINT32SWAPSWAP,BCD16, BCD32, BCD32SWAP, INT32M10K, UINT32M10K, INT32M10KSWAP category = "TELEMETRY"
type if category = "TELEMETRY"
Yes
else
Not Applicable
COIL COIL, HOLDING, DISCRETE, INPUT category = "TELEMETRY"
pollingInterval if category = "TELEMETRY"
Yes
else
Not Applicable
category = "TELEMETRY" Allowed Digits only, negative values not allowed.
offset if category = "TELEMETRY"
Yes
else
Not Applicable
category = "TELEMETRY" Allowed Digits only, not allowed negative values as well
category if category = "TELEMETRY"
Yes
else
Not Applicable
TELEMETRY TELEMETRY, ATTRIBUTE
required if category = "ATTRIBUTE"
Yes
if category = "TELEMETRY"
Not Applicable
false true, false category = "ATTRIBUTE"
access if category = "TELEMETRY"
Yes
else
Not Applicable
Read, ReadWrite, Write category = "TELEMETRY"

EIPCIP Connector

EIPCIP

{
  "name":"testeipcip",
  "connectionType": "EIPCIP",
  "config": {
    "host": "localhost",
    "port": 44818,
    "slot": 0,
    "pollingInterval": 1000,
    "listeningInterval": 232
  },
  "dataModel": {
    "cim": {
      "label": "test",
      "description": "",
      "tagName": "dfsffsdf",
      "dataLength": 23423,
      "subTags": [
        {
          "name": "testsub",
          "tagName": "",
          "label": "testsub",
          "description": "description",
          "datatype": "Int",
          "subDataType": "INT",
          "dataLength": 2,
          "offset": 0
        },
        {
          "name": "testsub2",
          "tagName": "",
          "label": "testsub2",
          "description": "",
          "datatype": "Int",
          "subDataType": "SINT",
          "dataLength": 1,
          "offset": 2
        },
        {
          "name": "testsub3",
          "tagName": "",
          "label": "testsub3",
          "description": "testsub3",
          "datatype": "Int",
          "subDataType": "DINT",
          "dataLength": 4,
          "offset": 3
        }
      ],
      "name": "cim",
      "tagType": "CYCLIC-IO",
      "category": "TELEMETRY"
    },
    "testattr2": {
      "label": "testattr2",
      "description": "",
      "datatype": "String",
      "tagName": "testattr2",
      "tagType": "EM",
      "category": "TELEMETRY",
      "access": "Read"
    }
  }
}
Attribute Mandatory Description Default Value Possible Values Shown Validations
name Yes Name of the Connector Type * Unique
* max length = 2000 characters
* special char not allowed
connectionType Yes Connection Type EIPCIP EIPCIP
config (Child Object )
host No host name or IP address 44818 - * Length = 63
* no special characters allowed
* if contain numbers and . -> then it should be a valid IP address, if appended by characters then consider a hostname
port No TCP Port - - - Valid Port between 0-65535
slot No Slot Number * If very large numeral then convert it to infinity
* Max length = 2000 characters
* Min length can be 0
pollingInterval No Explicit Message Polling Interval - - * If very large numeral then convert it to infinity
* Max Length 2000 characters
listeningInterval No Cyclic IO listening Interval - - String not allowed, only valid positive numbers allowed
dataModel(Child Object )
Attribute Name Yes The Attribute Name is represented as a Key in the JSON API payload under dataModel as seen in the samples. - - * Max length = 2000 characters
* Attribute names should start with a letter or underscore and cannot start with a number or any other special character.
* Attribute name: Expected format: [_A-Za-z][_0-9A-Za-z]*
* Invalid Attribute name: '_test name'. Expected format: [_A-Za-z][_0-9A-Za-z]*, space not allowed
* The Attribute Name should be Unique
label Yes Data Model Attribute label - - Max length 2000 characters
description No Description of the Data Model Attribute - - Max length 2000 characters
datatype Yes Data type of the data source variable String If category = "TELEMETRY"
String,Int,Float,Long,Boolean
ELSE IF category="ATTRIBUTE"
String,Double,EncryptedString,File
category Yes TELEMETRY TELEMETRY,ATTRIBUTE
required if category =
"ATTRIBUTE"

Yes

if category =
"TELEMETRY"

Not Applicable
defines whether the defined field is required field or not Applicable only for field defined as category = ATTRIBUTE false true/false
tagName Yes
tagType Yes EM, CYCLIC-IO
access Yes ( for tagType = "EM" and Category = "TELEMETRY") Read Read, ReadWrite, Write category = "TELEMETRY" and tagType = "EM"
subTags (child Object of dataModel) → The "subTags" section is available only when tagType is "CYCLIC-IO"
name Yes Name of the Sub Tag
tagName Yes "" "" The tagName should be an empty string
label Yes Label for the Sub Tag Max length 2000 characters
description No Description for the Sub Tag Max length 2000 characters
datatype Yes Int,Float,Boolean
dataLength Yes * If the data type 'Integer
* if the sub-data type is SINT then must be equal to 1.
* if the sub-data type is INT then must be equal to 2.
* if the sub-data type is DINT then must be equal to 4.
* . If the data type is 'Float', then must be equal to 4.
* If the data type is 'Boolean', then must be equal to 1
subDataType Yes If datatype is Int, then the allowed sub-data types are SINT,INT,DINT

If the data type is 'Float', then the sub-data type must be "REAL"

If the data type 'Boolean', then the sub-data type must be "BOOL"
offset Yes 0 Any Valid Number

NTCIP1202/NTCIP1202 Trap Connector

NTCIP1202_TRAP

{
    "name": "ntcip1202-trap-ag",
    "connectionType": "NTCIP1202",
    "config": {
        "fetchCount": 32,
        "host": "192.168.10.215",
        "port": 1161,
        "snmpVersion": "V2c",
        "trapPort": 1162,
        "intersectionId": 123,
        "intersectionName": "asd",
        "standardManufacturer": "J2735",
        "community": "iotOD",
        "auth": "SHA",
        "security": "authPriv",
        "priv": "AES"
    },
    "dataModel": {
        "data_string3": {
            "label": "My Data String3",
            "datatype": "String",
            "description": "My Custom Attribute",
            "required": false,
            "category": "ATTRIBUTE"
        },
        "data_string1": {
            "label": "My Data String",
            "datatype": "String",
            "description": "serial read attribute",
            "oid": "1.0.15628.4.1.8.1.0",
            "oidDataType": "INTEGER",
            "pollingInterval": 12345,
            "category": "TELEMETRY",
            "access": "Read"
        },
        "data_string2": {
            "label": "My Data String2",
            "datatype": "String",
            "description": "SNMP Trap Definition",
            "oid": "1.0.15628.4.1.8.1.2",
            "oidDataType": "INTEGER",
            "category": "TELEMETRY",
            "service": "trap_receive",
            "access":"Read"
        }
    }
}

NTCIP1202-V3

{
    "name": "ntcip1202-V3",
    "connectionType": "NTCIP1202",
    "config": {
        "fetchCount": 32,
        "host": "1.1.1.1",
        "port": 161,
        "snmpVersion": "V3",
        "trapPort": 162,
        "standardManufacturer": "J2735",
        "community": "public",
        "auth": "SHA",
        "authPassword": "test",
        "security": "authPriv",
        "priv": "AES",
        "privPassword": "test",
        "user": "test"
    },
    "dataModel": {
        "data_string1": {
            "label": "My Data String",
            "datatype": "String",
            "description": "serial read attribute",
            "oid": "j2735Srm",
            "pollingInterval": 12345,
            "category": "STATIC_TELEMETRY",
            "access": "Read"
        },
        "test123": {
            "label": "test123",
            "datatype": "String",
            "description": "",
            "oid": "ntcip1211Srm",
            "pollingInterval": 300,
            "category": "STATIC_TELEMETRY",
            "access": "Read"
        },
        "test1234": {
            "label": "test1234",
            "datatype": "String",
            "description": "",
            "oid": "rawSpat",
            "pollingInterval": 300,
            "category": "STATIC_TELEMETRY",
            "access": "Read"
        },
        "data_string2": {
            "label": "My Data String2",
            "datatype": "String",
            "description": "SNMP Trap Definition",
            "oid": "1.0.15628.4.1.8.1.2",
            "oidDataType": "INTEGER",
            "category": "TELEMETRY",
            "service": "trap_receive",
            "access":"Read"
        },
        "data_string3": {
            "label": "My Data String3",
            "datatype": "String",
            "description": "My Custom Attribute",
            "required": false,
            "category": "ATTRIBUTE"
        }
    }
}

JSON Object Description: (Refer the Samples above for JSON API Payload.)

Attribute Mandatory Description Default Value Possible Values Shown Validations
name Yes Name of the Connector Type - - - * Unique
* max length = 2000 characters
* special char not allowed
connectionType Yes Connection Type NTCIP1202 NTCIP1202 -
config (Child Object )
fetchCount No OID count per request -
host No host name or IP address - * Length = 63
* no special characters allowed
* if contain numbers and . -> then it should be a valid IP address, if appended by characters then consider a hostname
port No 161 1-65535 - Valid Port between 1-65535
Should not be same as trapPort
trapPort No 162 1-65535 - Valid Port between 1-65535
Should not be same as port
snmpVersion Yes SNMP Versions V3 V1, V2c, V3 While updating the Asset type, the snmpVersion is non editable.
intersectionId No -
intersectionName No -
standardManufacturer Yes J2735 J2735, trafficware, intelight, econolite -
user if snmpVersion = V3 → NO
else → Not Applicable
Security Name snmpVersion is V3
security if snmpVersion = V3 → No
else → Not Applicable
Security Level authPriv authPriv, authNoPriv, noAuthNoPriv snmpVersion is V3
auth if snmpVersion = V3 → No
else → Not Applicable
Authentication Protocol SHA SHA,MD5 snmpVersion is V3
authPassword if snmpVersion = V3 → No
else → Not Applicable
Authentication Password snmpVersion is V3
community No snpmVersion is not V3
priv if snmpVersion = V3 → No
else → Not Applicable
Privacy Protocol AES AES, DES snmpVersion is V3
privPassword if snmpVersion = V3 → No
else → Not Applicable
Privacy Password snmpVersion is V3
dataModel(Child Object )
Attribute Name Yes The Attribute Name is represented as a Key in the JSON API payload under dataModel as seen in the samples. * Max length = 2000 characters
* Attribute names should start with a letter or underscore and cannot start with a number or any other special character.
* Attribute name: Expected format: [_A-Za-z][_0-9A-Za-z]*
* Invalid Attribute name: '_test name'. Expected format: [_A-Za-z][_0-9A-Za-z]*, space not allowed
* The Attribute Name should be Unique
label Yes Data Model Attribute label
datatype Yes Data type of the data source variable String If category = "TELEMETRY" or
"STATIC_TELEMETRY"
String,Int,Float,Long,Boolean
ELSE IF category="ATTRIBUTE"
String,Double,EncryptedString,File
description No Description of the Data Model Attribute
oid Yes the OID where data is fetched from via SNMP rawSpat rawSpat, j2735Srm, ntcip1211Srm
or actual OID(eg 1.0.15628.4.1.8.1.2)
if category = "TELEMETRY" or "STATIC_TELEMETRY"
oidDataType if oid = rawSpat, j2735Srm,
ntcip1211Srm
Not Applicable
else (like 1.0.15628.4.1.8.1.2)
Yes
The OID data type of the value stored at the OID. INTEGER INTEGER, OCTET STRING if category = "TELEMETRY" and
Any valid OID string(eg "1.0.15628.4.1.8.1.0")
pollingInterval if category = "TELEMETRY" or
"STATIC_TELEMETRY"
Yes
else
Not Applicable
Defines how often data is polled from the SNMP device in seconds 300 if category = "TELEMETRY" or "STATIC_TELEMETRY" Allowed Digits only, not allowed negative values as well
category Yes TELEMETRY TELEMETRY, ATTRIBUTE, STATIC_TELEMETRY STATIC_TELEMETRY is provided for predefined oid's like rawSpat, j2735Srm, ntcip1211Srm
required if category = "ATTRIBUTE"

Yes

if category = "TELEMETRY" or
"STATIC_TELEMETRY"

Not Applicable
Defines whether the defined field is required field or not
Applicable only for field defined as ATTRIBUTE
false true, false
access if category = "TELEMETRY" or "STATIC_TELEMETRY"
Yes
else if "service" is defined
Yes
else if category="ATTRIBUTE"
Not Applicable
Read, ReadWrite, Write if category = "TELEMETRY" or "STATIC_TELEMETRY" if oid = 'rawSpat' or
service =
"trap_receive"
Read
else if oid =
'ntcip1211Srm' or
oid = j2735Srm
ReadWrite
service Yes for Trap Definitions The Value for this field is trap_receive and cannot be changed
* This field is provided only for Trap Definitions
* and used to distinguish from Attribute Definitions and Custom Attributes
trap_receive trap_receive Trap Definitions in the data model

Validations while Updating NTCIP1202/TRAP Asset Type:

  1. Please refer the bottom section for common validations.
  2. Do not change the SNMP version when making updates to the Asset Type.

NTCIP1203/NTCIP1204 Connector

NTCIP1203 - V3

{
  "name": "Test NTCIP 1203",
  "connectionType": "NTCIP1203",
  "config": {
    "fetchCount": 32,
    "host": "localhost",
    "port": 161,
    "snmpVersion": "V3",
    "community": "iotOD",
    "auth": "SHA",
    "authPassword": "iotOD",
    "security": "authPriv",
    "priv": "AES",
    "privPassword": "iotOD",
    "user": "sdfsdf342"
  },
  "dataModel": {
    "sdfdfdsgsd3424": {
      "label": "sfdfsf",
      "datatype": "String",
      "description": "",
      "oid": "displayedMessage",
      "pollingInterval": 300,
      "category": "STATIC_TELEMETRY",
      "access": "ReadWrite"
    }
  }
}

NTCIP1204

{
  "name": "Test NTCIP1204",
  "connectionType": "NTCIP1204",
  "config": {
    "fetchCount": 32,
    "host": "localhost",
    "port": 161,
    "snmpVersion": "V3",
    "community": "iotOD",
    "auth": "SHA",
    "authPassword": "iotOD",
    "security": "authPriv",
    "priv": "AES",
    "privPassword": "iotOD",
    "user": "sfdfsd423"
  },
  "dataModel": {
    "fsdfsdfsdf232": {
      "label": "fdsfsf",
      "datatype": "String",
      "description": "",
      "oid": "location",
      "pollingInterval": 300,
      "category": "STATIC_TELEMETRY",
      "access": "Read"
    }
  }
}

JSON Object Description: (Refer the Samples above for JSON API Payload.)

Attribute Mandatory Description Default Value Possible Values Shown Validations
name Yes Name of the Connector Type - - - * Unique
* max length = 2000 characters
* special char not allowed
connectionType Yes Connection Type NTCIP1203/NTCIP1204 NTCIP1203/NTCIP1204 -
config (Child Object )
fetchCount No OID count per request -
host No IP address or Host Name - * Length = 63
* no special characters allowed
* if contain numbers and . -> then it should be a valid IP address, if appended by characters then consider a hostname
port No 161 1-65535 - Valid Port between 1-65535
snmpVersion Yes SNMP Versions V3 V1, V2c, V3 While updating the Asset type, the snmpVersion is non editable.
user if snmpVersion = V3 → No
else → Not Applicable
Security Name snmpVersion is V3
security if snmpVersion = V3 → No
else → Not Applicable
Security Level authPriv authPriv, authNoPriv, noAuthNoPriv snmpVersion is V3
auth if snmpVersion = V3 → No
else → Not Applicable
Authentication Protocol SHA SHA,MD5 snmpVersion is V3
authPassword if snmpVersion = V3 → No
else → Not Applicable
Authentication Password snmpVersion is V3
community No snpmVersion is not V3
priv if snmpVersion = V3 → No
else → Not Applicable
Privacy Protocol AES AES, DES snmpVersion is V3
privPassword if snmpVersion = V3 → No
else → Not Applicable
Privacy Password snmpVersion is V3
dataModel(Child Object )
Attribute Name Yes The Attribute Name is represented as a Key in the JSON API payload under dataModel as seen in the samples. * Max length = 2000 characters
* Attribute names should start with a letter or underscore and cannot start with a number or any other special character.
* Attribute name: Expected format: [_A-Za-z][_0-9A-Za-z]*
* Invalid Attribute name: '_test name'. Expected format: [_A-Za-z][_0-9A-Za-z]*, space not allowed
* The Attribute Name should be Unique
label Yes Data Model Attribute label
datatype Yes Data type of the data source variable String If category = "TELEMETRY" or
"STATIC_TELEMETRY"
String,Int,Float,Long,Boolean
ELSE
IF category="ATTRIBUTE"
String,Double,EncryptedString,File
description No Description of the Data Model Attribute
oid Yes he OID where data is fetched from via SNMP if connectionType ==
NTCIP1203
displayedMessage

if connectionType ==
NTCIP1204
location
if connectionType == NTCIP1203
displayedMessage or actual
OID(eg 1.0.15628.4.1.8.1.2)

if connectionType == NTCIP1204
location, temperature,
humidityAndPrecipitation,
humidityAndPrecipitation,
airQuality or actual OID(eg
1.0.15628.4.1.8.1.2)
if category = "TELEMETRY" or "STATIC_TELEMETRY" if connectionType ==
NTCIP1203 & category
==
"STATIC_TELEMETRY"
oid =
displayedMessage
oidDataType if oid = displayedMessage (NTCIP1203),
location,
temperature,humidityAndPrecipitation,airQuality
(NTCIP1204)
Not Applicable
else (like 1.0.15628.4.1.8.1.2)
Yes
The OID data type of the value stored at the OID. INTEGER INTEGER, OCTET STRING if category =
"TELEMETRY"

and

Any valid OID
string(eg
"1.0.15628.4.1.8.1.0")
pollingInterval Yes Defines how often data is polled from the SNMP device in seconds 300 if category =
"TELEMETRY"
or category =
"STATIC_TELEMETRY"
Allowed Digits only, not allowed negative values as well
category Yes TELEMETRY TELEMETRY, ATTRIBUTE, STATIC_TELEMETRY STATIC_TELEMETRY is provided for predefined oid's (mentioned in OID row)
required if category = "ATTRIBUTE"

Yes

if category = "TELEMETRY" or
"STATIC_TELEMETRY"

Not Applicable
Defines whether the defined field is required field or not
Applicable only for field defined as ATTRIBUTE
false true, false
access if category = "TELEMETRY" or
"STATIC_TELEMETRY"
Yes
else if category="ATTRIBUTE"
Not Applicable
Read, ReadWrite, Write if category = "TELEMETRY" or "STATIC_TELEMETRY" if connectionType ==
'NTCIP1203'

{

if oid =
'displayedMessage'

ReadWrite

else

All possible values are allowed

}
-----------------------------
if connectionType
='NTCIP1204'
{
if oid = predefined
values (like
temperature,location)
Read

else

All possible values are allowed}

Validations while Updating NTCIP1203/NTCIP1204 Asset Type:

  1. Please refer the bottom section for common validations.
  2. Do not change the SNMP version when making updates to the Asset Type.

OPCUA Connector

OPCUA

{
  "name": "0-dk-demo-OPCUA",
  "connectionType": "OPC_UA",
  "config": {
    "authentication": "ANONYMOUS",
    "securityMode": "NONE",
    "host": "host.docker.internal",
    "port": 4840,
    "publishingInterval": 1000
  },
  "dataModel": {
    "rpm": {
      "label": "Rotation-RPM",
      "description": "Rotations in RPM",
      "datatype": "Int",
      "nodeId": {
        "namespaceUri": "http://cisco.com/ns/test",
        "identifier": 1,
        "type": "numeric"
      },
      "samplingInterval": 5000,
      "category": "TELEMETRY"
    }
  }
}

OPCUA-Sample2

{
  "name": "0-dk-demo-OPCUA-2",
  "connectionType": "OPC_UA",
  "config": {
    "authentication": "ANONYMOUS",
    "securityMode": "NONE",
    "host": "host.docker.internal",
    "port": 4840,
    "publishingInterval": 1000
  },
  "dataModel": {
    "rpm": {
      "label": "Rotation-RPM",
      "description": "Rotations in RPM",
      "datatype": "Int",
      "nodeId": {
        "namespaceUri": "http://cisco.com/ns/test",
        "identifier": 1,
        "type": "numeric"
      },
      "samplingInterval": 5000,
      "category": "TELEMETRY"
    },
    "test1234": {
            "label": "test123123",
            "description": "test",
            "datatype": "Float",
            "nodeId": {
                "namespaceIndex": 125,
                "identifier": 12,
                "type": "numeric"
            },
            "samplingInterval": 1000,
            "category": "TELEMETRY"
    },
    "test123": {
            "label": "test123",
            "description": "test",
            "datatype": "String",
            "nodeId": {
                "namespaceUri": "test/123",
                "identifier": 12,
                "type": "numeric"
            },
            "samplingInterval": 1000,
            "category": "TELEMETRY"
    }
  }
}

OPCUA-Sample3

{
    "name": "0-dk-demo-OPCUA-3",
    "connectionType": "OPC_UA",
    "config": {
        "label": "test123",
        "authentication": "PASSWORD",
        "securityMode": "NONE",
        "host": "1.2.1.1",
        "port": 22,
        "publishingInterval": 1000,
        "username": "test",
        "password": "ENC:QUVTXzI1Nl9HQ01R7J63RhtgBC5FLmJxBb+q/pHi3+2KwZl4eTDmdNeey4omXKTCuqQ4XeRAR9/vPgd58VF0yZ3BZpemBTjC/jsSW0L+EseMMI6S8ldKsPvOuATqR4z/0Lo3Ey9RDv8neLvfgpTtJNlWyQjkzMrL+8EpfzTSDw=="
    },
    "dataModel": {
        "testCustom": {
            "label": "testCustom",
            "description": "testCustom",
            "datatype": "Double",
            "required": true,
            "category": "ATTRIBUTE"
        },
        "test": {
            "label": "test123",
            "description": "",
            "datatype": "String",
            "nodeId": {
                "namespaceUri": "http://cisco.com/ns/test",
                "identifier": "12",
                "type": "string"
            },
            "samplingInterval": 1000,
            "category": "TELEMETRY"
        },
        "test122": {
            "label": "test122",
            "description": "",
            "datatype": "String",
            "nodeId": {
                "namespaceIndex": 12,
                "identifier": "15",
                "type": "string"
            },
            "samplingInterval": 1000,
            "category": "TELEMETRY"
        }
    }
}
Attribute Mandatory Description Default Value Possible Values Shown Validations
name Yes Name of the Connector Type - - - * Unique
* max length = 2000 characters
* special char not allowed
connectionType Yes Connection Type OPC_UA OPC_UA
config (Child Object )
authentication Yes - ANONYMOUS ANONYMOUS,PASSWORD
username No if authentication = "PASSWORD"
password No if authentication = "PASSWORD"
securityMode Yes "NONE" "NONE"
host No - - * Length = 63
* no special characters allowed
* if contain numbers and . -> then it should be a valid IP address, if appended by characters then consider a hostname
port No - - Valid Port between 1-65535
publishingInterval No - - publishingInterval should be >= 1000
dataModel(Child Object )
Attribute Name Yes The Attribute Name is represented as a Key in the JSON API payload under dataModel as seen in the samples. - - * Max length = 2000 characters
* Attribute names should start with a letter or underscore and cannot start with a number or any other special character.
* Attribute name: Expected format: [_A-Za-z][_0-9A-Za-z]*
* Invalid Attribute name: '_test name'. Expected format: [_A-Za-z][_0-9A-Za-z]*, space not allowed
* The Attribute Name should be Unique
label Yes Data Model Attribute label - - Max length 2000 characters
description No Description of the Data Model Attribute - - Max length 2000 characters
datatype Yes Data type of the data source variable String If category = "TELEMETRY"
String,Int,Float,Long,Boolean
ELSE IF category="ATTRIBUTE"
String,Double,EncryptedString,File
samplingInterval Yes Sampling interval defines the rate at which data source variable will be sampled (in milliseconds) 1000 valid numbers are allowed. Negative values are not allowed.
category
required if category = "ATTRIBUTE"

Yes

if category = "TELEMETRY" or "STATIC_TELEMETRY"

Not Applicable
defines whether the defined field is required field or not Applicable only for field defined as category = ATTRIBUTE false true/false
nodeId (child Object of dataModel) → The "nodeId" section contains details of the OPC/UA nodeId field .The name "nodeId" if fixed. Do not modify and its mandatory.
namespaceUri / namespaceIndex yes, either one of them should be provided The namespace URI identifies the naming authority defining the identifiers of "nodeId"s. One of namespaceIndex or namespaceUri should be present namespaceIndex : Any valid JSON number type

namespaceUri : Any JSON String type
namespaceIndex : Any valid JSON number type

namespaceUri : Any JSON String type
type yes The format and data type of the identifier.Currently numeric value and string value supported. string numeric,string
identifier yes The identifier for a node in the address space of an OPC UA server.
* Possible Values: Any valid JSON string.
if type = string

identifier is any JSON string
else if type = numeric
identifier is valid numeric value
Allowed digits only, no negative value allowed

RSU Connector

RSU

{
  "name": "1_rsu-test",
  "connectionType": "RSU",
  "config": {
    "port": 44444,
    "snmpVersion": "V3",
    "community": "iot0D",
    "auth": "SHA",
    "authPassword": "iot0D",
    "security": "authPriv",
    "priv": "AES",
    "privPassword" : "password",
    "user": "dkaruthe@cisco.com"
  },
  "dataModel": {
    "Test": {
      "label": "Test",
      "datatype": "String",
      "description": "1",
      "oid": "1.1.1.1.1",
      "oidDataType": "INTEGER",
      "pollingInterval": 1000,
      "category": "TELEMETRY",
      "access": "Read"
    },
    "basicSafetyMessage": {
      "label": "basicSafetyMessage",
      "datatype": "String",
      "description": "Basic Safety Message",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "mapData": {
      "label": "mapData",
      "datatype": "String",
      "description": "Message to Display",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "signalPhaseAndTimingMessage": {
      "label": "signalPhaseAndTimingMessage",
      "datatype": "String",
      "description": "Signal Phase and Timing Message",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "commonSafetyRequest": {
      "label": "commonSafetyRequest",
      "datatype": "String",
      "description": "Common Safety Request",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "emergencyVehicleAlert": {
      "label": "emergencyVehicleAlert",
      "datatype": "String",
      "description": "Emergency Vehicle Alert",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "intersectionCollision": {
      "label": "intersectionCollision",
      "datatype": "String",
      "description": "intersection Collision",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "nmeaCorrections": {
      "label": "nmeaCorrections",
      "datatype": "String",
      "description": "NMEA Corrections",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "probeDataManagement": {
      "label": "probeDataManagement",
      "datatype": "String",
      "description": "Probe Data Management",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "roadSideAlert": {
      "label": "roadSideAlert",
      "datatype": "String",
      "description": "Roadside Alert",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "rtcmCorrections": {
      "label": "rtcmCorrections",
      "datatype": "String",
      "description": "RTMC Corrections",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "signalRequestMessage": {
      "label": "signalRequestMessage",
      "datatype": "String",
      "description": "Signal Request Message",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "signalStatusMessage": {
      "label": "signalStatusMessage",
      "datatype": "String",
      "description": "Signal Status Message",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "travelerInformation": {
      "label": "travelerInformation",
      "datatype": "String",
      "description": "Traveler Information",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "personalSafetyMessage": {
      "label": "personalSafetyMessage",
      "datatype": "String",
      "description": "Personal Safety Message",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "probeVehicleData": {
      "label": "probeVehicleData",
      "datatype": "String",
      "description": "Probe Vehicle Data",
      "access": "Read",
      "category": "STATIC_TELEMETRY"
    },
    "broadcastImmediately": {
      "label": "broadcastImmediately",
      "datatype": "String",
      "description": "Instruct RSU to send a message",
      "access": "Write",
      "category": "STATIC_TELEMETRY"
    },
    "storeAndRepeatMessage": {
      "label": "storeAndRepeatMessage",
      "datatype": "String",
      "description": "Store & periodically broadcast messags",
      "access": "ReadWrite",
      "category": "STATIC_TELEMETRY"
    }
  }
} 

RSU-SNMP-V1 Sample

{
    "name": "2_rsu-test",
    "connectionType": "RSU",
    "config": {
        "port": 44444,
        "snmpVersion": "V1",
        "community": "test",
        "auth": "SHA",
        "security": "authPriv",
        "priv": "AES"
    },
    "dataModel": {
        "testCustomAttr": {
            "label": "testCustomAttr",
            "datatype": "Double",
            "description": "testCustom",
            "required": true,
            "category": "ATTRIBUTE"
        },
        "testattr": {
            "label": "testattr",
            "datatype": "String",
            "description": "",
            "oid": "1.1.1.1.1.1",
            "oidDataType": "INTEGER",
            "pollingInterval": 200,
            "category": "TELEMETRY",
            "access": "ReadWrite"
        },
        "basicSafetyMessage": {
            "label": "basicSafetyMessage",
            "datatype": "String",
            "description": "Basic Safety Message",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "mapData": {
            "label": "mapData",
            "datatype": "String",
            "description": "Message to Display",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "signalPhaseAndTimingMessage": {
            "label": "signalPhaseAndTimingMessage",
            "datatype": "String",
            "description": "Signal Phase and Timing Message",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "commonSafetyRequest": {
            "label": "commonSafetyRequest",
            "datatype": "String",
            "description": "Common Safety Request",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "emergencyVehicleAlert": {
            "label": "emergencyVehicleAlert",
            "datatype": "String",
            "description": "Emergency Vehicle Alert",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "intersectionCollision": {
            "label": "intersectionCollision",
            "datatype": "String",
            "description": "intersection Collision",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "nmeaCorrections": {
            "label": "nmeaCorrections",
            "datatype": "String",
            "description": "NMEA Corrections",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "probeDataManagement": {
            "label": "probeDataManagement",
            "datatype": "String",
            "description": "Probe Data Management",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "roadSideAlert": {
            "label": "roadSideAlert",
            "datatype": "String",
            "description": "Roadside Alert",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "rtcmCorrections": {
            "label": "rtcmCorrections",
            "datatype": "String",
            "description": "RTMC Corrections",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "signalRequestMessage": {
            "label": "signalRequestMessage",
            "datatype": "String",
            "description": "Signal Request Message",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "signalStatusMessage": {
            "label": "signalStatusMessage",
            "datatype": "String",
            "description": "Signal Status Message",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "travelerInformation": {
            "label": "travelerInformation",
            "datatype": "String",
            "description": "Traveler Information",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "personalSafetyMessage": {
            "label": "personalSafetyMessage",
            "datatype": "String",
            "description": "Personal Safety Message",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "probeVehicleData": {
            "label": "probeVehicleData",
            "datatype": "String",
            "description": "Probe Vehicle Data",
            "access": "Read",
            "category": "STATIC_TELEMETRY"
        },
        "broadcastImmediately": {
            "label": "broadcastImmediately",
            "datatype": "String",
            "description": "Instruct RSU to send a message",
            "access": "Write",
            "category": "STATIC_TELEMETRY"
        },
        "storeAndRepeatMessage": {
            "label": "storeAndRepeatMessage",
            "datatype": "String",
            "description": "Store & periodically broadcast messags",
            "access": "ReadWrite",
            "category": "STATIC_TELEMETRY"
        }
    }
}
Attribute Mandatory Description Default Value Possible Values Shown Validations
name Yes Name of the Connector Type - - - * Unique
* max length = 2000 characters
* special char not allowed
connectionType Yes Connection Type RSU RSU
config (Child Object )
host No IP address or Host Name - * Length = 63
* no special characters allowed
* if contain numbers and . -> then it should be a valid IP address, if appended by characters then consider a hostname
port No 44444 1-65535 - Valid Port between 1-65535
snmpVersion Yes SNMP Versions V3 V1, V2c, V3 While updating the Asset type, the snmpVersion is non editable.
user if snmpVersion = V3 → No
else → Not Applicable
Security Name snmpVersion is V3 max length = 2000 characters
security Yes Security Level authPriv authPriv, authNoPriv, noAuthNoPriv snmpVersion is V3 if snmpVersion is V1 or V2c
security = authPriv
auth Yes Authentication Protocol SHA SHA,MD5 snmpVersion is V3 if snmpVersion is V1
or V2c
auth = SHA
authPassword if snmpVersion = V3 → No
else → Not Applicable
Authentication Password snmpVersion is V3
community No snpmVersion is not V3
priv Yes Privacy Protocol AES AES, DES snmpVersion is V3 if snmpVersion is V1
or V2c
priv = AES
privPassword if snmpVersion = V3 → No
else → Not Applicable
Privacy Password snpmVersion is V3
dataModel(Child Object )
Attribute Name Yes The Attribute Name is represented as a Key in the JSON API payload under dataModel as seen in the samples. * Max length = 2000 characters
* Attribute names should start with a letter or underscore and cannot start with a number or any other special character.
* Attribute name: Expected format: [_A-Za-z][_0-9A-Za-z]*
* Invalid Attribute name: '_test name'. Expected format: [_A-Za-z][_0-9A-Za-z]*, space not allowed
* The Attribute Name should be Unique
label Yes Data Model Attribute label Max length = 2000 characters
datatype Yes Data type of the data source variable String If category = "TELEMETRY" or
"STATIC_TELEMETRY"
String,Int,Float,Long,Boolean
ELSE IF category="ATTRIBUTE"
String,Double,EncryptedString,File
description No Description of the Data Model Attribute
oid Yes The OID where data is fetched from via SNMP Any valid OID string, example: "1.0.15628.4.1.8.1.0" if category = "TELEMETRY"
oidDataType if category = "TELEMETRY"
Yes
The OID data type of the value stored at the OID. INTEGER "INTEGER", "OCTET STRING" if category =
"TELEMETRY"
and
Any valid OID string(eg "1.0.15628.4.1.8.1.0")
pollingInterval if category = "TELEMETRY"
Yes
Defines how often data is polled from the SNMP device in seconds if category = "TELEMETRY" Allowed Digits only, negative values are not allowed
category Yes TELEMETRY TELEMETRY, ATTRIBUTE, STATIC_TELEMETRY STATIC_TELEMETRY is provided for predefined Attributes. shown in the Above image and JSON Samples.
required if category = "ATTRIBUTE"

Yes

if category = "TELEMETRY" or "STATIC_TELEMETRY"

Not Applicable
Defines whether the defined field is required field or not
Applicable only for field defined as ATTRIBUTE
false true, false
access if category = "TELEMETRY" or
"STATIC_TELEMETRY"
Yes
else if category="ATTRIBUTE"
Not Applicable
Read, ReadWrite, Write if category =
"TELEMETRY"
or
if category =
"STATIC_TELEMETRY"
if category =
"TELEMETRY"
All Possible Values
if Category =
"STATIC_TELEMETRY"
Value defined in the screenshot

Validations while Updating RSU Asset Type:

  1. Please refer the bottom section for common validations.
  2. Do not change the SNMP version when making updates to the Asset Type.

Serial Connector

SERIAL

{
  "name": "atemp",
  "connectionType": "SERIAL",
  "config": {
    "commPortId": "/dev/ttySerial",
    "baudRate": 9600,
    "dataBits": 8,
    "stopBits": 1,
    "parity": "NONE"
  },
  "dataModel": {
    "temp": {
      "label": "temp",
      "datatype": "String",
      "description": "",
      "access": "READ",
      "startCode": "0x",
      "messageSize": 10,
      "timeout": 10,
      "category": "TELEMETRY"
    }
  }
}

Serial-Sample2

{
   "name": "assetSerial",
   "connectionType": "SERIAL",
   "config": {
       "label": "assetSerial",
       "commPortId": "/dev/ttyS0",
       "baudRate": 9600,
       "dataBits": 8,
       "stopBits": 1,
       "parity": "NONE"
   },
   "dataModel": {
       "testCustom ": {
           "label": "testCustom",
           "datatype": "String",
           "description": "testCustom",
           "required": true,
           "category": "ATTRIBUTE"
       },
       "testBinary": {
           "label": "testBinary",
           "datatype": "Binary",
           "description": "testBinary",
           "access": "READ",
           "startCode": "1113",
           "endCode": "2224",
           "timeout": 12,
           "category": "TELEMETRY"
       },
       "testString": {
           "label": "testString",
           "datatype": "String",
           "description": "testString",
           "access": "WRITE",
           "startCode": "2345",
           "endCode": "",
           "timeout": 4567,
           "category": "TELEMETRY"
       }
   }
} 

Serial-Sample 3

{
    "name": "assetSerial3",
    "connectionType": "SERIAL",
    "config": {
        "label": "assetSerial",
        "commPortId": "/dev/ttyS0",
        "baudRate": 9600,
        "dataBits": 8,
        "stopBits": 1,
        "parity": "NONE"
    },
    "dataModel": {
        "testCustom ": {
            "label": "testCustom",
            "datatype": "String",
            "description": "testCustom",
            "required": true,
            "category": "ATTRIBUTE"
        },
        "testBinary": {
            "label": "testBinary",
            "datatype": "Binary",
            "description": "testBinary",
            "access": "READ",
            "startCode": "",
             "messageSize":100,
            "timeout": 12,
            "category": "TELEMETRY"
        },
        "testString": {
            "label": "testString",
            "datatype": "String",
            "description": "testString",
            "access": "WRITE",
            "startCode": "2345",
            "endCode": "",
            "timeout": 4567,
            "category": "TELEMETRY"
        }
    }
}
Attribute Mandatory Description Default Value Possible Values Shown Validations
name Yes Name of the Connector Type - - - * Unique
* max length = 2000 characters
* special char not allowed
connectionType Yes Connection Type SERIAL SERIAL -
config (Child Object )
commPortId Yes eg: /dev/ttyS0 Max length 2000 characters
baudRate Yes 9600 9600 or any custom integer input value 9600 or any custom integer input value
dataBits Yes 8 8,7
stopBits Yes 1 2,1
parity Yes NONE NONE,ODD,EVEN
dataModel(Child Object )
Attribute Name Yes The Attribute Name is represented as a Key in the JSON API payload under dataModel as seen in the samples. * Max length = 2000 characters
* Attribute names should start with a letter or underscore and cannot start with a number or any other special character.
* Attribute name: Expected format: [_A-Za-z][_0-9A-Za-z]*
* Invalid Attribute name: '_test name'. Expected format: [_A-Za-z][_0-9A-Za-z]*, space not allowed
* The Attribute Name should be Unique
label Yes Data Model Attribute label Max length = 2000 characters
datatype Yes Data type of the data source variable String If category = "TELEMETRY"
String,Binary
ELSE IF category="ATTRIBUTE"
String,Double,EncryptedString,File
category="TELEMETRY", if only messageSize and timeout are configured then the data type should be Binary
description No Description of the Data Model Attribute Max length 2000 characters.
access Yes READ READ, READWRITE, WRITE * Maximum 2 attributes (Category = "TELEMETRY") allowed for datamodel, one should be READ and the other one should have WRITE Access.
* For access type WRITE, the following fields should be empty [start code, end code, message size, timeout]
startCode Yes The Start Code to find start of the message. * Max length allowed 2000
* start and end code can not be the same
* Either start code or message size should be present
* If endCode is present then startCode should also be present for attribute
endCode Yes The End Code of the message. * Max length allowed 2000
* either end code or message size should be present
messageSize Either endCode or MessageSize should be present.Both should not exist The size of the message for fixed size messages. * Only digits are allowed, negative values are not allowed
* Value should be between 0 and 1048576
messageType No Text Text
timeout Yes Time in milli second. * Value should be between 0 and 2147483647
* only digits are allowed, negative values are not allowed.
required if category = "ATTRIBUTE"
Yes
else
Not Applicable
false true, false category = "ATTRIBUTE"
category Optional(If omitted category is set as "TELEMETRY") TELEMETRY "TELEMETRY" or "ATTRIBUTE"

Validations for Create Asset types (Common across all Connectors):

  1. Asset type name should be unique across all Asset Types.
  2. Attribute Names in the data model should be unique for an Asset Type.

Validations for Update Asset Types (Common across all Connectors):

  1. Asset type name and asset type are not editable.
  2. All the validations for creating asset types are applicable.
  3. Deleting an Asset type won't be possible if there is already an existing Asset of that specific Asset type.

Validations for Delete Asset types (Common across all Connectors):

  1. Parameter 'id' must not be blank.
  2. Deleting an Asset type won't be possible if there is already an existing Asset of that specific Asset type.