ThingsPro Gateway RESTful API reference API Reference

Welcome to the ThingsPro Gateway RESTful API reference. This is a live document of how you can use ThingsPro Gateway APIs. The ThingsPro Gateway API is organized around the REST methodology, and it uses resource-oriented URLs, and common HTTP response codes to indicate API errors. All requests are authenticated using an mx-api-token which can be obtained from ThingsPro gateway web.

API Endpoint
https://localhost/api/v1
Response Content-Types: application/json
Schemes: http, https
Version: 2.6.0

Authentication

mx-api-token

ThingsPro RESTful API token, The token should be created on web console.

type
apiKey
name
mx-api-token
in
header

cellular

Handles the Cellular interfaces

Cellular Interface(s)

GET /network/cellulars

The system returns information about the settings of all Cellular interface(s).

200 OK

An array of Cellular interface(s)

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "name": "wwan1",
    "capabilities": {
      "sim": [
        1,
        2
      ],
      "carriers": [
        "ATT",
        "SPRINT"
      ]
    },
    "mode": "lte",
    "signal": {
      "rat": "lte",
      "csq": 14,
      "rssi": -76,
      "rxqual": 1,
      "rscp": -80,
      "ecio": -8.5,
      "rsrp": -107.3,
      "rsrq": -12,
      "indicator": "RSRP",
      "level": 4
    },
    "operatorName": "Chunghwa Telecom",
    "lac": "11114",
    "tac": "",
    "nid": "",
    "cellId": "1249",
    "bid": "",
    "iccId": "",
    "imsi": "466977502877452",
    "imei": "356853050370859",
    "esn": "802202F0",
    "pinRetryRemain": 3,
    "status": "connected",
    "mac": "00:00:00:00:00:00",
    "ip": "111.70.146.125",
    "netmask": "255.255.255.252",
    "gateway": "111.70.146.126",
    "dns": [
      "168.95.1.1",
      "168.95.192.1"
    ],
    "usage": {
      "txkbyte": 40023,
      "rxkbyte": 3493
    },
    "currentProfileId": 1,
    "enable": true,
    "keepalive": {
      "enable": true,
      "targetHost": "8.8.8.8",
      "intervalSec": 60,
      "reboot": {
        "enable": false,
        "cycles": 1
      }
    },
    "profileId": 1,
    "profileTimeout": 300,
    "profiles": [
      {
        "id": 1,
        "pinCode": "0000",
        "pdpContext": {
          "static": true,
          "id": 1,
          "apn": "internet",
          "type": "ipv4v6",
          "auth": {
            "protocol": "none",
            "username": "",
            "password": ""
          }
        },
        "keepalive": {
          "enable": false
        },
        "init": [
          "sim:1",
          "carrier:ATT"
        ]
      }
    ]
  }
]

GET /network/cellulars/{id}

Get settings of indicated Cellular interface.

id: integer
in path

(no description)

200 OK

An Cellular interface settings.

Response Example (200 OK)
{
  "id": 1,
  "name": "wwan1",
  "capabilities": {
    "sim": [
      1,
      2
    ],
    "carriers": [
      "ATT",
      "SPRINT"
    ]
  },
  "mode": "umts",
  "signal": {
    "rat": "lte",
    "csq": 14,
    "rssi": -76,
    "rxqual": 1,
    "rscp": -80,
    "ecio": -8.5,
    "rsrp": -107.3,
    "rsrq": -12,
    "indicator": "RSRP",
    "level": 4
  },
  "operatorName": "Chunghwa Telecom",
  "lac": "11114",
  "tac": "",
  "nid": "",
  "cellId": "1249",
  "bid": "",
  "iccId": "",
  "imsi": "466977502877452",
  "imei": "356853050370859",
  "esn": "802202F0",
  "pinRetryRemain": 3,
  "status": "connected",
  "mac": "00:00:00:00:00:00",
  "ip": "111.70.146.125",
  "netmask": "255.255.255.252",
  "gateway": "111.70.146.126",
  "dns": [
    "168.95.1.1",
    "168.95.192.1"
  ],
  "usage": {
    "txkbyte": 40023,
    "rxkbyte": 3493
  },
  "currentProfileId": 1,
  "enable": true,
  "keepalive": {
    "enable": true,
    "targetHost": "8.8.8.8",
    "intervalSec": 60,
    "reboot": {
      "enable": false,
      "cycles": 1
    }
  },
  "profileId": 1,
  "profileTimeout": 300,
  "profiles": [
    {
      "id": 1,
      "pinCode": "0000",
      "pdpContext": {
        "static": true,
        "id": 1,
        "apn": "internet",
        "type": "ipv4v6",
        "auth": {
          "protocol": "none",
          "username": "",
          "password": ""
        }
      },
      "keepalive": {
        "enable": false
      },
      "init": [
        "sim:1",
        "carrier:ATT"
      ]
    }
  ]
}

Cellular Interface

PUT /network/cellulars/{id}

Update an Cellular interface settings.

id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "enable": true,
  "keepalive": {
    "enable": true,
    "targetHost": "8.8.8.8",
    "intervalSec": 60,
    "reboot": {
      "enable": false,
      "cycles": 1
    }
  },
  "profileId": 1,
  "profileTimeout": 300,
  "profiles": [
    {
      "id": 1,
      "pinCode": "0000",
      "pdpContext": {
        "static": true,
        "id": 1,
        "apn": "internet",
        "type": "ipv4v6",
        "auth": {
          "protocol": "none",
          "username": "",
          "password": ""
        }
      },
      "keepalive": {
        "enable": false
      },
      "init": [
        "sim:1",
        "carrier:ATT"
      ]
    },
    {
      "id": 2,
      "pdpContext": {
        "id": 3,
        "static": false,
        "apn": "",
        "type": "ipv4",
        "auth": {
          "protocol": "none",
          "username": "",
          "password": ""
        }
      },
      "keepalive": {
        "targetHost": "1.2.3.4"
      },
      "init": [
        "carrier:VZW"
      ]
    }
  ]
}
200 OK

OK

Response Example (200 OK)
{
  "id": 1,
  "enable": true,
  "keepalive": {
    "enable": true,
    "targetHost": "8.8.8.8",
    "intervalSec": 60,
    "reboot": {
      "enable": false,
      "cycles": 1
    }
  },
  "profileId": 1,
  "profileTimeout": 300,
  "profiles": [
    {
      "id": 1,
      "pinCode": "0000",
      "pdpContext": {
        "static": true,
        "id": 1,
        "apn": "internet",
        "type": "ipv4v6",
        "auth": {
          "protocol": "none",
          "username": "",
          "password": ""
        }
      },
      "keepalive": {
        "enable": false
      },
      "init": [
        "sim:1",
        "carrier:ATT"
      ]
    },
    {
      "id": 2,
      "pdpContext": {
        "id": 3,
        "static": false,
        "apn": "",
        "type": "ipv4",
        "auth": {
          "protocol": "none",
          "username": "",
          "password": ""
        }
      },
      "keepalive": {
        "targetHost": "1.2.3.4"
      },
      "init": [
        "carrier:VZW"
      ]
    }
  ]
}

GET /network/cellulars/{id}/carrier

Get carrier information of indicated Cellular interface.

id: integer
in path

(no description)

200 OK

carrier information of indicated Cellular interface.

type
object
Response Example (200 OK)
{
  "switchable": true,
  "current": "ATT",
  "preferred": "ATT",
  "available": [
    "ATT",
    "VZW"
  ]
}

PUT /network/cellulars/{id}/carrier

Set preferred carrier

carrier: string (up to 32 chars)

Carrier name

id: integer
in path

(no description)

Request Example
{
  "carrier": "VZW"
}
200 OK

OK

type
object
Response Example (200 OK)
{
  "carrier": "VZW"
}

GET /network/cellulars/{id}/firmware

Get firmware information of indicated Cellular interface.

id: integer
in path

(no description)

200 OK

firmware information of indicated Cellular interface.

type
object
Response Example (200 OK)
{
  "switchable": true,
  "current": {
    "fwver": "05.05.58.01",
    "config": "ATT_005.029_001",
    "carrier": "ATT"
  },
  "preferred": {
    "fwver": "05.05.58.01",
    "config": "ATT_005.029_001",
    "carrier": "ATT"
  },
  "available": [
    {
      "fwver": "05.05.58.01",
      "config": "ATT_005.029_001",
      "carrier": "ATT"
    },
    {
      "fwver": "05.05.58.02",
      "config": "VZW_005.029_002",
      "carrier": "VZW"
    }
  ]
}

PUT /network/cellulars/{id}/firmware

Set preferred firmware

fwver: string (up to 32 chars)

Firmware version

config: string (up to 32 chars)

Config name

carrier: string (up to 32 chars)

Carrier name

id: integer
in path

(no description)

Request Example
{
  "fwver": "05.05.58.01",
  "config": "ATT_005.029_001",
  "carrier": "ATT"
}
200 OK

OK

type
object
Response Example (200 OK)
{
  "fwver": "05.05.58.01",
  "config": "ATT_005.029_001",
  "carrier": "ATT"
}

custom-equipment

Manages customized equipment tags

GET /mxc/custom/equipments

Get custom equipment list

200 OK

success

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "equipmentName": "Promgram-1",
    "equipmentTags": [
      {
        "name": "cpu",
        "dataType": "float32",
        "access": "ro",
        "size": 4,
        "description": "all about cpu"
      },
      {
        "name": "mem",
        "dataType": "float32",
        "access": "ro",
        "size": 4,
        "description": "all about memory"
      },
      {
        "name": "disk",
        "dataType": "uint32",
        "access": "ro",
        "size": 4,
        "description": "all about disk"
      }
    ]
  },
  {
    "id": 2,
    "equipmentName": "Promgram-2",
    "equipmentTags": [
      {
        "name": "abc",
        "dataType": "string",
        "access": "ro",
        "size": 4,
        "description": "description of abc"
      },
      {
        "name": "def",
        "dataType": "string",
        "access": "ro",
        "size": 4,
        "description": "description of def"
      },
      {
        "name": "xyz",
        "dataType": "string",
        "access": "ro",
        "size": 4,
        "description": "description of xyz"
      }
    ]
  }
]

POST /mxc/custom/equipments

Create a new Custom Equipment with tags

Custom Equipment object

Custom Equipment object

id: integer

ID of equipment

equipmentName: string

Name of custom equipment

equipmentTags: object[]

Tag List of custom equipment

object

Equipment's tag entry

name: string (1 to 255 chars)

Name of tag

dataType: string boolean, uint16, uint32, uint64, int16, int32, int64, float32, float64, string, bytearray

Data type of tag

access: string ro, wo, rw

Access type of tag

size: integer

Size of tag in byte

description: string (up to 65535 chars)

Description of tag

Request Example
{
  "equipmentName": "string",
  "equipmentTags": [
    {
      "name": "string",
      "dataType": "string",
      "access": "string",
      "size": "integer",
      "description": "string"
    }
  ]
}
200 OK

success

type
object
Response Example (200 OK)
{
  "id": "integer",
  "equipmentName": "string",
  "equipmentTags": [
    {
      "name": "string",
      "dataType": "string",
      "access": "string",
      "size": "integer",
      "description": "string"
    }
  ]
}

DELETE /mxc/custom/equipments

Delete a Custom Equipment with assigned IDs

integer
Request Example
[
  "integer"
]
200 OK

success

DELETE /mxc/custom/equipments/{id}

Delete a Custom Equipment with assigned ID

id: integer
in path

(no description)

200 OK

success

PUT /mxc/custom/equipments/{id}

Update a Custom Equipment with assigned ID

Custom Equipment object

Custom Equipment object

id: integer

ID of equipment

equipmentName: string

Name of custom equipment

equipmentTags: object[]

Tag List of custom equipment

object

Equipment's tag entry

name: string (1 to 255 chars)

Name of tag

dataType: string boolean, uint16, uint32, uint64, int16, int32, int64, float32, float64, string, bytearray

Data type of tag

access: string ro, wo, rw

Access type of tag

size: integer

Size of tag in byte

description: string (up to 65535 chars)

Description of tag

id: integer
in path

(no description)

Request Example
{
  "equipmentName": "string",
  "equipmentTags": [
    {
      "name": "string",
      "dataType": "string",
      "access": "string",
      "size": "integer",
      "description": "string"
    }
  ]
}
200 OK

success

type
object
Response Example (200 OK)
{
  "id": "integer",
  "equipmentName": "string",
  "equipmentTags": [
    {
      "name": "string",
      "dataType": "string",
      "access": "string",
      "size": "integer",
      "description": "string"
    }
  ]
}

logprofile

Handles log profile configuration

GET /mxc/logprofile

Get Log Profile collection

destinations: integer
in query

(no description)

200 OK

success

type
object[]
x-query-destinations

Get logprofile save destination options

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "name": "log-profile-1",
    "enable": true,
    "archiver": {
      "destination": "Internal",
      "thresholdBytePerFile": 5242800,
      "directorySizeLimitByte": 10240000,
      "archivesToKeep": 24
    },
    "uploader": {
      "httpPost": {
        "url": "http://host/post",
        "enableAuth": false,
        "authentication": {
          "username": "uploader",
          "password": "password"
        },
        "headerList": [
          {
            "name": "Content-Type",
            "value": "application/json"
          },
          {
            "name": "User-Agent",
            "value": "Mozilla/5.0"
          }
        ],
        "bypassSsl": true,
        "cronExpr": "0 * * * *",
        "format": "json",
        "compress": "gzip",
        "enableCompress": true,
        "retryCount": 3,
        "retryPeriodSec": 3
      }
    },
    "equipmentList": [
      {
        "equipmentName": "My-ioLogik-E2242",
        "equipmentTags": [
          {
            "name": "di0",
            "logOnChange": false
          },
          {
            "name": "di1",
            "logOnChange": false
          },
          {
            "name": "ai0",
            "logOnChange": false
          }
        ]
      },
      {
        "equipmentName": "My-other-ioLogik-E2242",
        "equipmentTags": [
          {
            "name": "di0",
            "logOnChange": false
          },
          {
            "name": "di1",
            "logOnChange": false
          },
          {
            "name": "ai0",
            "logOnChange": false
          }
        ]
      }
    ]
  },
  {
    "id": 2,
    "enable": false,
    "name": "log-profile-2",
    "archiver": {
      "destination": "Internal",
      "thresholdBytePerFile": 5242800,
      "directorySizeLimitByte": 10240000,
      "archivesToKeep": 24
    },
    "uploader": {
      "httpPost": {
        "url": "http://host/post",
        "enableAuth": true,
        "authentication": {
          "username": "uploader",
          "password": "password"
        },
        "headerList": [
          {
            "name": "Content-Type",
            "value": "application/json"
          },
          {
            "name": "User-Agent",
            "value": "Mozilla/5.0"
          }
        ],
        "bypassSsl": true,
        "cronExpr": "0 * * * *",
        "format": "json",
        "compress": "gzip",
        "enableCompress": false,
        "retryCount": 3,
        "retryPeriodSec": 3
      }
    },
    "equipmentList": [
      {
        "equipmentName": "My-ioLogik-E2242",
        "equipmentTags": [
          {
            "name": "di0",
            "logOnChange": true
          },
          {
            "name": "di1",
            "logOnChange": false
          },
          {
            "name": "ai0",
            "logOnChange": true
          }
        ]
      },
      {
        "equipmentName": "My-other-ioLogik-E2242",
        "equipmentTags": [
          {
            "name": "di0",
            "logOnChange": true
          },
          {
            "name": "di1",
            "logOnChange": true
          },
          {
            "name": "ai0",
            "logOnChange": true
          }
        ]
      }
    ]
  }
]
Response Example (x-query-destinations )
[
  {
    "name": "Internal",
    "directory": "/var/mxlogariver"
  },
  {
    "name": "SD",
    "directory": "/media"
  }
]

POST /mxc/logprofile

Create a Log Profile

Request Example
{
  "id": 1,
  "name": "log-profile-1",
  "enable": true,
  "archiver": {
    "destination": "Internal",
    "thresholdBytePerFile": 5242800,
    "directorySizeLimitByte": 10240000,
    "archivesToKeep": 24
  },
  "uploader": {
    "httpPost": {
      "url": "http://host/post",
      "enableAuth": false,
      "authentication": {
        "username": "uploader",
        "password": "password"
      },
      "headerList": [
        {
          "name": "Content-Type",
          "value": "application/json"
        },
        {
          "name": "User-Agent",
          "value": "Mozilla/5.0"
        }
      ],
      "bypassSsl": true,
      "cronExpr": "0 * * * *",
      "format": "json",
      "compress": "gzip",
      "enableCompress": true,
      "retryCount": 3,
      "retryPeriodSec": 3
    }
  },
  "equipmentList": [
    {
      "equipmentName": "My-ioLogik-E2242",
      "equipmentTags": [
        {
          "name": "di0",
          "logOnChange": false
        },
        {
          "name": "di1",
          "logOnChange": false
        },
        {
          "name": "ai0",
          "logOnChange": false
        }
      ]
    },
    {
      "equipmentName": "My-other-ioLogik-E2242",
      "equipmentTags": [
        {
          "name": "di0",
          "logOnChange": false
        },
        {
          "name": "di1",
          "logOnChange": false
        },
        {
          "name": "ai0",
          "logOnChange": false
        }
      ]
    }
  ]
}
200 OK

success

Response Example (200 OK)
{
  "id": 1,
  "name": "log-profile-1",
  "enable": true,
  "archiver": {
    "destination": "Internal",
    "thresholdBytePerFile": 5242800,
    "directorySizeLimitByte": 10240000,
    "archivesToKeep": 24
  },
  "uploader": {
    "httpPost": {
      "url": "http://host/post",
      "enableAuth": false,
      "authentication": {
        "username": "uploader",
        "password": "password"
      },
      "headerList": [
        {
          "name": "Content-Type",
          "value": "application/json"
        },
        {
          "name": "User-Agent",
          "value": "Mozilla/5.0"
        }
      ],
      "bypassSsl": true,
      "cronExpr": "0 * * * *",
      "format": "json",
      "compress": "gzip",
      "enableCompress": true,
      "retryCount": 3,
      "retryPeriodSec": 3
    }
  },
  "equipmentList": [
    {
      "equipmentName": "My-ioLogik-E2242",
      "equipmentTags": [
        {
          "name": "di0",
          "logOnChange": false
        },
        {
          "name": "di1",
          "logOnChange": false
        },
        {
          "name": "ai0",
          "logOnChange": false
        }
      ]
    },
    {
      "equipmentName": "My-other-ioLogik-E2242",
      "equipmentTags": [
        {
          "name": "di0",
          "logOnChange": false
        },
        {
          "name": "di1",
          "logOnChange": false
        },
        {
          "name": "ai0",
          "logOnChange": false
        }
      ]
    }
  ]
}

DELETE /mxc/logprofile/{id}

Delete a Log Profile with assigned ID

id: integer
in path

(no description)

200 OK

success

PUT /mxc/logprofile/{id}

Update a Log Profile with assigned ID

id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "name": "log-profile-1",
  "enable": true,
  "archiver": {
    "destination": "Internal",
    "thresholdBytePerFile": 5242800,
    "directorySizeLimitByte": 10240000,
    "archivesToKeep": 24
  },
  "uploader": {
    "httpPost": {
      "url": "http://host/post",
      "enableAuth": false,
      "authentication": {
        "username": "uploader",
        "password": "password"
      },
      "headerList": [
        {
          "name": "Content-Type",
          "value": "application/json"
        },
        {
          "name": "User-Agent",
          "value": "Mozilla/5.0"
        }
      ],
      "bypassSsl": true,
      "cronExpr": "0 * * * *",
      "format": "json",
      "compress": "gzip",
      "enableCompress": true,
      "retryCount": 3,
      "retryPeriodSec": 3
    }
  },
  "equipmentList": [
    {
      "equipmentName": "My-ioLogik-E2242",
      "equipmentTags": [
        {
          "name": "di0",
          "logOnChange": false
        },
        {
          "name": "di1",
          "logOnChange": false
        },
        {
          "name": "ai0",
          "logOnChange": false
        }
      ]
    },
    {
      "equipmentName": "My-other-ioLogik-E2242",
      "equipmentTags": [
        {
          "name": "di0",
          "logOnChange": false
        },
        {
          "name": "di1",
          "logOnChange": false
        },
        {
          "name": "ai0",
          "logOnChange": false
        }
      ]
    }
  ]
}
200 OK

success

Response Example (200 OK)
{
  "id": 1,
  "name": "log-profile-1",
  "enable": true,
  "archiver": {
    "destination": "Internal",
    "thresholdBytePerFile": 5242800,
    "directorySizeLimitByte": 10240000,
    "archivesToKeep": 24
  },
  "uploader": {
    "httpPost": {
      "url": "http://host/post",
      "enableAuth": false,
      "authentication": {
        "username": "uploader",
        "password": "password"
      },
      "headerList": [
        {
          "name": "Content-Type",
          "value": "application/json"
        },
        {
          "name": "User-Agent",
          "value": "Mozilla/5.0"
        }
      ],
      "bypassSsl": true,
      "cronExpr": "0 * * * *",
      "format": "json",
      "compress": "gzip",
      "enableCompress": true,
      "retryCount": 3,
      "retryPeriodSec": 3
    }
  },
  "equipmentList": [
    {
      "equipmentName": "My-ioLogik-E2242",
      "equipmentTags": [
        {
          "name": "di0",
          "logOnChange": false
        },
        {
          "name": "di1",
          "logOnChange": false
        },
        {
          "name": "ai0",
          "logOnChange": false
        }
      ]
    },
    {
      "equipmentName": "My-other-ioLogik-E2242",
      "equipmentTags": [
        {
          "name": "di0",
          "logOnChange": false
        },
        {
          "name": "di1",
          "logOnChange": false
        },
        {
          "name": "ai0",
          "logOnChange": false
        }
      ]
    }
  ]
}

GET /mxc/equipments

Get all equipment tags. If equipment name conflicts, it will merged into one tag and concat description with ";"

200 OK

success

type
object[]
Response Example (200 OK)
[
  {
    "equipmentType": "modbus",
    "equipmentName": "My-other-ioLogik-E2242",
    "equipmentTags": [
      {
        "name": "di0",
        "dataType": "boolean",
        "access": "ro",
        "size": 1,
        "description": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1
      },
      {
        "name": "di1",
        "dataType": "boolean",
        "access": "ro",
        "size": 1,
        "description": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1
      },
      {
        "name": "ai0",
        "dataType": "uint16",
        "access": "ro",
        "size": 2,
        "description": "ai0",
        "function": "read-holding-registers",
        "address": 0,
        "quantity": 1
      }
    ]
  },
  {
    "equipmentType": "user",
    "equipmentName": "program-1",
    "equipmentTags": [
      {
        "name": "cpu",
        "dataType": "float32",
        "access": "ro",
        "size": 4,
        "description": "CPU Usage (%)"
      },
      {
        "name": "memory",
        "dataType": "float32",
        "access": "ro",
        "size": 4,
        "description": "Memory Usage (%)"
      },
      {
        "name": "abc",
        "dataType": "string",
        "access": "ro",
        "size": 4,
        "description": "def"
      }
    ]
  }
]

modbus

Handles Modbus framework configuration

dhcpd

Handles the DHCP Server configuration

GET /network/dhcpd

Get Overview of DHCP Server information

200 OK

success

type
object
Response Example (200 OK)
{
  "status": true,
  "collection": [
    {
      "id": 1,
      "name": "eth0",
      "available": false,
      "enable": false,
      "subnet": "192.168.3.0",
      "netmask": "255.255.255.0",
      "startIp": "192.168.3.100",
      "endIp": "192.168.3.150",
      "domainNameServers": [
        "8.8.8.8",
        "1.1.1.1",
        "2.2.2.2"
      ],
      "domainName": "cloud5566",
      "leaseTime": "3600"
    }
  ]
}

GET /network/dhcpd/{id}

Get a dhcp server configuration

id: integer
in path

(no description)

200 OK

success

type
object
Response Example (200 OK)
{
  "id": 1,
  "name": "eth0",
  "available": false,
  "enable": false,
  "subnet": "192.168.3.0",
  "netmask": "255.255.255.0",
  "startIp": "192.168.3.100",
  "endIp": "192.168.3.150",
  "domainNameServers": [
    "8.8.8.8",
    "1.1.1.1",
    "2.2.2.2"
  ],
  "domainName": "cloud5566",
  "leaseTime": "3600"
}

PUT /network/dhcpd/{id}

Update a dhcp server configuration

DHCP Server configuration

DHCP Server configuration

available: boolean

DHCP server is available or not (the interface must be "static IP" and/or worked as a WiFi AP), default should be false.

name: string (1 to 255 chars)

Name of dhcp server

enable: boolean

Enable dhcp server

netmask: string (7 to 15 chars)

Netmask of dhcp server

startIp: string (7 to 15 chars)

Range IP start

endIp: string (7 to 15 chars)

Range IP end

domainNameServers: string[]

Domain name servers

string (7 to 15 chars)
domainName: string (up to 255 chars)

Domain name

leaseTime: integer 60 ≤ x ≤ 65535

Lease time of dhcp pool

id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "name": "eth0",
  "available": false,
  "enable": false,
  "subnet": "192.168.3.0",
  "netmask": "255.255.255.0",
  "startIp": "192.168.3.100",
  "endIp": "192.168.3.150",
  "domainNameServers": [
    "8.8.8.8",
    "1.1.1.1",
    "2.2.2.2"
  ],
  "domainName": "cloud5566",
  "leaseTime": "3600"
}
200 OK

success

type
object
Response Example (200 OK)
{
  "id": 1,
  "name": "eth0",
  "available": false,
  "enable": false,
  "subnet": "192.168.3.0",
  "netmask": "255.255.255.0",
  "startIp": "192.168.3.100",
  "endIp": "192.168.3.150",
  "domainNameServers": [
    "8.8.8.8",
    "1.1.1.1",
    "2.2.2.2"
  ],
  "domainName": "cloud5566",
  "leaseTime": "3600"
}

dns

Handles the system DNS settings

dns

Information of Current DNS settings

GET /network/dns

List all current DNS and DNS source.

200 OK

DNS

Response Example (200 OK)
{
  "enableFixed": false,
  "fixedDns": [],
  "source": "eth0",
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ]
}
dns

Update DNS settings

PUT /network/dns

Update DNS settings by interface or using fixed DNS.

Request Example
{
  "enableFixed": false,
  "fixedDns": [],
  "source": "eth0",
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ]
}
200 OK

OK

Response Example (200 OK)
{
  "enableFixed": false,
  "fixedDns": [],
  "source": "eth0",
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ]
}

ethernet

Handles the Ethernet interfaces

Ethernet Interface(s)

GET /network/ethernets

The system returns information about the settings of all Ethernet interface(s).

200 OK

An array of Ethernet interface(s)

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "wan": true,
    "name": "eth0",
    "ip": "192.168.3.127",
    "mac": "FF:FF:FF:FF:FF:FF",
    "netmask": "255.255.255.0",
    "subnet": "192.168.3.0",
    "gateway": "192.168.3.254",
    "dns": [
      "8.8.8.8",
      "8.8.4.4"
    ],
    "status": true,
    "enable": true,
    "enableDhcp": false
  },
  {
    "id": 2,
    "wan": false,
    "name": "eth1",
    "ip": "192.168.100.127",
    "mac": "FF:FF:FF:FF:FF:FF",
    "netmask": "255.255.255.0",
    "subnet": "192.168.100.0",
    "gateway": "192.168.100.254",
    "dns": [
      "8.8.8.8",
      "8.8.4.4"
    ],
    "status": true,
    "enable": true,
    "enableDhcp": false,
    "restart": true
  }
]

Ethernet Interface(s)

PUT /network/ethernets

Update a list of Ethernet interface(s) settings.

200 OK

OK

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "wan": true,
    "name": "eth0",
    "ip": "192.168.3.127",
    "mac": "FF:FF:FF:FF:FF:FF",
    "netmask": "255.255.255.0",
    "subnet": "192.168.3.0",
    "gateway": "192.168.3.254",
    "dns": [
      "8.8.8.8",
      "8.8.4.4"
    ],
    "status": true,
    "enable": true,
    "enableDhcp": false
  }
]

GET /network/ethernets/{id}

Get settings of indicated Ethernet interface.

id: integer
in path

(no description)

200 OK

An Ethernet interface settings.

Response Example (200 OK)
{
  "id": 1,
  "wan": true,
  "name": "eth0",
  "ip": "192.168.3.127",
  "mac": "FF:FF:FF:FF:FF:FF",
  "netmask": "255.255.255.0",
  "subnet": "192.168.3.0",
  "gateway": "192.168.3.254",
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ],
  "status": true,
  "enable": true,
  "enableDhcp": false
}

Ethernet Interface

PUT /network/ethernets/{id}

Update an Ethernet interface settings.

id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "wan": true,
  "name": "eth0",
  "ip": "192.168.3.127",
  "mac": "FF:FF:FF:FF:FF:FF",
  "netmask": "255.255.255.0",
  "subnet": "192.168.3.0",
  "gateway": "192.168.3.254",
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ],
  "status": true,
  "enable": true,
  "enableDhcp": false
}
200 OK

OK

Response Example (200 OK)
{
  "id": 1,
  "wan": true,
  "name": "eth0",
  "ip": "192.168.3.127",
  "mac": "FF:FF:FF:FF:FF:FF",
  "netmask": "255.255.255.0",
  "subnet": "192.168.3.0",
  "gateway": "192.168.3.254",
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ],
  "status": true,
  "enable": true,
  "enableDhcp": false
}

import-export

Manages the import/export of configuration files

PUT /system/import

Put a download url with headers and import settings. For more information, please check out tutorial documents about API Endpoint with files.

Import information

Import information

file: object

Url information

url: string (1 to 4096 chars)

Url address

headers: object

Headers

scopes: string[]

Import scopes (only selected scopes' configuration will be imported)

string modbus, time, dns, ethernet, cellular, openvpn, dhcpd, serial, portforwarding, program, applications, system
Request Example
{
  "file": {
    "url": "https://server/upload",
    "headers": {
      "accessToken": "MOXAMOXA-TEST-SYSTEM"
    }
  },
  "scopes": [
    "string"
  ]
}
200 OK

success

POST /system/export

Post a target url with headers, bundle would upload to target url and return download url. Target upload server should response in this json format:

                    {
                      "fieldname": "file",
                      "url": "/api/v1/files/download/61256ff7db8b7b40e254b940ae639b8e"
                    }
                  
ThingsPro has a built-in simple upload server which is already used by web. In general cases, using the built-in server is highly recommended. Request export to simple upload server with url: https://localhost/api/v1/files/upload For more information, please check out tutorial documents about API Endpoint with files.

Url information

Url information

url: string (1 to 4096 chars)

Url address

headers: object

Headers

Request Example
{
  "url": "https://server/upload",
  "headers": {
    "accessToken": "MOXAMOXA-TEST-SYSTEM"
  }
}
200 OK

sucess

type
object
Response Example (200 OK)
{
  "url": "https://server/upload",
  "headers": {
    "accessToken": "MOXAMOXA-TEST-SYSTEM"
  }
}

modbusslave

Handles Modbus Slave configuration

GET /mxc/modbusslave

Get Modbus Slave Configuration

200 OK

success

Response Example (200 OK)
{
  "enable": true,
  "host": "0.0.0.0",
  "port": 502,
  "unitId": 255,
  "ignoreUnitId": false,
  "anyHost": true
}

PUT /mxc/modbusslave

Update Modbus Slave Configuration

Request Example
{
  "enable": true,
  "host": "0.0.0.0",
  "port": 502,
  "unitId": 255,
  "ignoreUnitId": false,
  "anyHost": true
}
200 OK

success

Response Example (200 OK)
{
  "enable": true,
  "host": "0.0.0.0",
  "port": 502,
  "unitId": 255,
  "ignoreUnitId": false,
  "anyHost": true
}

GET /mxc/modbusslave/mappings

Get Modbus Slave Mapping Table

200 OK

success

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "reference": "0x40000",
    "quantity": 1,
    "equipmentName": "My_ioLogik-E2242",
    "equipmentType": "modbus",
    "tagName": "ai0"
  }
]

POST /mxc/modbusslave/mappings

Create a Mapping Entry

Request Example
{
  "id": 1,
  "reference": "0x40000",
  "quantity": 1,
  "equipmentName": "My_ioLogik-E2242",
  "equipmentType": "modbus",
  "tagName": "ai0"
}
200 OK

success

Response Example (200 OK)
{
  "id": 1,
  "reference": "0x40000",
  "quantity": 1,
  "equipmentName": "My_ioLogik-E2242",
  "equipmentType": "modbus",
  "tagName": "ai0"
}

PUT /mxc/modbusslave/mappings

Update Modbus Slave Mapping Table

object
id: integer

Identity for MappingEntry

reference: string

Modbus access address (or offset)

quantity: integer

Modbus access quantity

equipmentName: string (3 to 255 chars)

Equipment Name of Tag

equipmentType: string

Type of Tag

tagName: string (2 to 255 chars)

Tag Name of Tag

Request Example
[
  {
    "id": 1,
    "reference": "0x40000",
    "quantity": 1,
    "equipmentName": "My_ioLogik-E2242",
    "equipmentType": "modbus",
    "tagName": "ai0"
  }
]
200 OK

success

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "reference": "0x40000",
    "quantity": 1,
    "equipmentName": "My_ioLogik-E2242",
    "equipmentType": "modbus",
    "tagName": "ai0"
  }
]

DELETE /mxc/modbusslave/mappings

Delete a list of MappingEntry with assigned ID

integer
Request Example
[
  "integer"
]
200 OK

success

GET /mxc/mxmodbusslave/mappings/{id}

Get a MappingEntry with assigned ID

id: integer
in path

(no description)

200 OK

success

Response Example (200 OK)
{
  "id": 1,
  "reference": "0x40000",
  "quantity": 1,
  "equipmentName": "My_ioLogik-E2242",
  "equipmentType": "modbus",
  "tagName": "ai0"
}

DELETE /mxc/mxmodbusslave/mappings/{id}

Delete a MappingEntry with assigned ID

id: integer
in path

(no description)

200 OK

success

PUT /mxc/mxmodbusslave/mappings/{id}

Update a MappingEntry with assigned ID

id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "reference": "0x40000",
  "quantity": 1,
  "equipmentName": "My_ioLogik-E2242",
  "equipmentType": "modbus",
  "tagName": "ai0"
}
200 OK

success

Response Example (200 OK)
{
  "id": 1,
  "reference": "0x40000",
  "quantity": 1,
  "equipmentName": "My_ioLogik-E2242",
  "equipmentType": "modbus",
  "tagName": "ai0"
}

equipment-template

Modbus Management for Data Acquisition

GET /mxc/modbus/equipment-templates

Get all equipment templates

200 OK

success

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "name": "ioLogik-E1210",
    "tagList": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di12",
        "function": "read-discrete-inputs",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di13",
        "function": "read-discrete-inputs",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di14",
        "function": "read-discrete-inputs",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di15",
        "function": "read-discrete-inputs",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 2,
    "name": "ioLogik-E1211",
    "tagList": [
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do8",
        "function": "read-coils",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do9",
        "function": "read-coils",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do10",
        "function": "read-coils",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do11",
        "function": "read-coils",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do12",
        "function": "read-coils",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do13",
        "function": "read-coils",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do14",
        "function": "read-coils",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do15",
        "function": "read-coils",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 3,
    "name": "ioLogik-E1212",
    "tagList": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di12",
        "function": "read-discrete-inputs",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di13",
        "function": "read-discrete-inputs",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di14",
        "function": "read-discrete-inputs",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di15",
        "function": "read-discrete-inputs",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 4,
    "name": "ioLogik-E1213",
    "tagList": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 5,
    "name": "ioLogik-E1214",
    "tagList": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 6,
    "name": "ioLogik-E1240",
    "tagList": [
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 0,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 1,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 2,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 3,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai4",
        "function": "read-input-registers",
        "address": 4,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai5",
        "function": "read-input-registers",
        "address": 5,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai6",
        "function": "read-input-registers",
        "address": 6,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai7",
        "function": "read-input-registers",
        "address": 7,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  },
  {
    "id": 7,
    "name": "ioLogik-E1241",
    "tagList": [
      {
        "name": "ao0",
        "function": "read-holding-registers",
        "address": 1024,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao1",
        "function": "read-holding-registers",
        "address": 1025,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao2",
        "function": "read-holding-registers",
        "address": 1026,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao3",
        "function": "read-holding-registers",
        "address": 1027,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  },
  {
    "id": 8,
    "name": "ioLogik-E1242",
    "tagList": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 512,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 513,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 514,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 515,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  },
  {
    "id": 9,
    "name": "ioLogik-E1260",
    "tagList": [
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi3",
        "function": "read-input-registers",
        "address": 1539,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi4",
        "function": "read-input-registers",
        "address": 1540,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi5",
        "function": "read-input-registers",
        "address": 1541,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  },
  {
    "id": 10,
    "name": "ioLogik-E1261H-T",
    "tagList": [
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do8",
        "function": "read-coils",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do9",
        "function": "read-coils",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do10",
        "function": "read-coils",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do11",
        "function": "read-coils",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 512,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 513,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 514,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 515,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai4",
        "function": "read-input-registers",
        "address": 516,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  },
  {
    "id": 11,
    "name": "ioLogik-E1261W-T",
    "tagList": [
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do8",
        "function": "read-coils",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do9",
        "function": "read-coils",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do10",
        "function": "read-coils",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do11",
        "function": "read-coils",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 512,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 513,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 514,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 515,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai4",
        "function": "read-input-registers",
        "address": 516,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  },
  {
    "id": 12,
    "name": "ioLogik-E1262",
    "tagList": [
      {
        "name": "tci0",
        "function": "read-input-registers",
        "address": 2048,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci1",
        "function": "read-input-registers",
        "address": 2050,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci2",
        "function": "read-input-registers",
        "address": 2052,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci3",
        "function": "read-input-registers",
        "address": 2054,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci4",
        "function": "read-input-registers",
        "address": 2056,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci5",
        "function": "read-input-registers",
        "address": 2058,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci6",
        "function": "read-input-registers",
        "address": 2060,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci7",
        "function": "read-input-registers",
        "address": 2062,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  },
  {
    "id": 13,
    "name": "ioLogik-E1263H-T",
    "tagList": [
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do8",
        "function": "read-coils",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do9",
        "function": "read-coils",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do10",
        "function": "read-coils",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do11",
        "function": "read-coils",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do12",
        "function": "read-coils",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do13",
        "function": "read-coils",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do14",
        "function": "read-coils",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do15",
        "function": "read-coils",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do16",
        "function": "read-coils",
        "address": 16,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do17",
        "function": "read-coils",
        "address": 17,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do18",
        "function": "read-coils",
        "address": 18,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do19",
        "function": "read-coils",
        "address": 19,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do20",
        "function": "read-coils",
        "address": 20,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do21",
        "function": "read-coils",
        "address": 21,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do22",
        "function": "read-coils",
        "address": 22,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do23",
        "function": "read-coils",
        "address": 23,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di12",
        "function": "read-discrete-inputs",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di13",
        "function": "read-discrete-inputs",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di14",
        "function": "read-discrete-inputs",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di15",
        "function": "read-discrete-inputs",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di16",
        "function": "read-discrete-inputs",
        "address": 16,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di17",
        "function": "read-discrete-inputs",
        "address": 17,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di18",
        "function": "read-discrete-inputs",
        "address": 18,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di19",
        "function": "read-discrete-inputs",
        "address": 19,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di20",
        "function": "read-discrete-inputs",
        "address": 20,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di21",
        "function": "read-discrete-inputs",
        "address": 21,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di22",
        "function": "read-discrete-inputs",
        "address": 22,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di23",
        "function": "read-discrete-inputs",
        "address": 23,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 512,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 513,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 514,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 515,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai4",
        "function": "read-input-registers",
        "address": 516,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai5",
        "function": "read-input-registers",
        "address": 517,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai6",
        "function": "read-input-registers",
        "address": 518,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai7",
        "function": "read-input-registers",
        "address": 519,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai8",
        "function": "read-input-registers",
        "address": 520,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai9",
        "function": "read-input-registers",
        "address": 521,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  },
  {
    "id": 14,
    "name": "ioLogik-R1210",
    "tagList": [
      {
        "name": "di0",
        "function": "read-input-registers",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-input-registers",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-input-registers",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-input-registers",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-input-registers",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-input-registers",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-input-registers",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-input-registers",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-input-registers",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-input-registers",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-input-registers",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-input-registers",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di12",
        "function": "read-input-registers",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di13",
        "function": "read-input-registers",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di14",
        "function": "read-input-registers",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di15",
        "function": "read-input-registers",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 15,
    "name": "ioLogik-R1212",
    "tagList": [
      {
        "name": "di0",
        "function": "read-input-registers",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-input-registers",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-input-registers",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-input-registers",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-input-registers",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-input-registers",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-input-registers",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-input-registers",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-input-registers",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-input-registers",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-input-registers",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-input-registers",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di12",
        "function": "read-input-registers",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di13",
        "function": "read-input-registers",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di14",
        "function": "read-input-registers",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di15",
        "function": "read-input-registers",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do0",
        "function": "read-holding-registers",
        "address": 320,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-holding-registers",
        "address": 321,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-holding-registers",
        "address": 322,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-holding-registers",
        "address": 323,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-holding-registers",
        "address": 324,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-holding-registers",
        "address": 325,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-holding-registers",
        "address": 326,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-holding-registers",
        "address": 327,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 16,
    "name": "ioLogik-R1214",
    "tagList": [
      {
        "name": "di0",
        "function": "read-input-registers",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-input-registers",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-input-registers",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-input-registers",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-input-registers",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-input-registers",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro0",
        "function": "read-holding-registers",
        "address": 320,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ro1",
        "function": "read-holding-registers",
        "address": 321,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ro2",
        "function": "read-holding-registers",
        "address": 322,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ro3",
        "function": "read-holding-registers",
        "address": 323,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ro4",
        "function": "read-holding-registers",
        "address": 324,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ro5",
        "function": "read-holding-registers",
        "address": 325,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  },
  {
    "id": 17,
    "name": "ioLogik-R1240",
    "tagList": [
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 704,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 705,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 706,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 707,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai4",
        "function": "read-input-registers",
        "address": 708,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai5",
        "function": "read-input-registers",
        "address": 709,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai6",
        "function": "read-input-registers",
        "address": 710,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai7",
        "function": "read-input-registers",
        "address": 711,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  },
  {
    "id": 18,
    "name": "ioLogik-R1241",
    "tagList": [
      {
        "name": "ao0",
        "function": "read-holding-registers",
        "address": 1184,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao1",
        "function": "read-holding-registers",
        "address": 1185,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao2",
        "function": "read-holding-registers",
        "address": 1186,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao3",
        "function": "read-holding-registers",
        "address": 1187,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  }
]

POST /mxc/modbus/equipment-templates

Create a new equipment template

id: integer

ID of equipment template

name: string (3 to 255 chars)

Name of equipment template

tagList: object[]

Tag list of equipment template

object
name: string (2 to 255 chars)

Name of tag

unit: string (up to 255 chars)

Unit of tag

function: string read-coils, read-input-registers, read-discrete-inputs, read-holding-registers, write-single-coil, write-single-register, write-multiple-coils, write-multiple-registers

Function to retrieve the tag value

address: integer 0 ≤ x ≤ 655350

Address of the tag 0x0000(0) <= value <= 0xFFFF(65535)

quantity: integer 1 ≤ x ≤ 655350

Quantity of tag

dataType: string uint16, uint32, uint64, int16, int32, int64, float32, float64, string, boolean, bytearray

Data type of tag

enableByteOrder: boolean

Enable byte order function

byteOrder: string BA, CDAB, DCBA, GHEFCDAB, HGFEDCBA

Switch input byte order

enableInvalidValue: boolean

Enable invalid value function

invalidValue: integer[]

Array size is equals to quantity (if input == INVALID_VALUE, assume the value is not valid)

integer
description: string (up to 65535 chars)

User edited description of tag

enableAutoScaling: boolean

Enable auto scaling function

autoScalingMode: string intercept, point

Mode of auto scaling function

autoScaling: object

V = input * S + O output = ((input-sourceMin) * (targetMax-targetMin) / (sourceMax-sourceMin)) + targetMin

slope: number
offset: number
sourceMin: number
sourceMax: number
targetMin: number
targetMax: number
access: string ro, wo, wr

Access type of tag

size: integer

Size of tag in byte

optimizeGrouping: boolean true

enable auto group tag polling optimization

Request Example
{
  "id": 9,
  "name": "ioLogik-E1260",
  "tagList": [
    {
      "name": "rtdi0",
      "function": "read-input-registers",
      "address": 1536,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi1",
      "function": "read-input-registers",
      "address": 1537,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi2",
      "function": "read-input-registers",
      "address": 1538,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi3",
      "function": "read-input-registers",
      "address": 1539,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi4",
      "function": "read-input-registers",
      "address": 1540,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi5",
      "function": "read-input-registers",
      "address": 1541,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    }
  ]
}
200 OK

success

type
object
Response Example (200 OK)
{
  "id": 9,
  "name": "ioLogik-E1260",
  "tagList": [
    {
      "name": "rtdi0",
      "function": "read-input-registers",
      "address": 1536,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi1",
      "function": "read-input-registers",
      "address": 1537,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi2",
      "function": "read-input-registers",
      "address": 1538,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi3",
      "function": "read-input-registers",
      "address": 1539,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi4",
      "function": "read-input-registers",
      "address": 1540,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi5",
      "function": "read-input-registers",
      "address": 1541,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    }
  ],
  "application/json": {
    "id": 9,
    "name": "ioLogik-E1260",
    "tagList": [
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi3",
        "function": "read-input-registers",
        "address": 1539,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi4",
        "function": "read-input-registers",
        "address": 1540,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi5",
        "function": "read-input-registers",
        "address": 1541,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  }
}

DELETE /mxc/modbus/equipment-templates

Delete multiple equipment templates

200 OK

success

type
integer[]
Response Example (200 OK)
[
  {
    "id": 1,
    "name": "ioLogik-E1210",
    "tagList": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di12",
        "function": "read-discrete-inputs",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di13",
        "function": "read-discrete-inputs",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di14",
        "function": "read-discrete-inputs",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di15",
        "function": "read-discrete-inputs",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 2,
    "name": "ioLogik-E1211",
    "tagList": [
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do8",
        "function": "read-coils",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do9",
        "function": "read-coils",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do10",
        "function": "read-coils",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do11",
        "function": "read-coils",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do12",
        "function": "read-coils",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do13",
        "function": "read-coils",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do14",
        "function": "read-coils",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do15",
        "function": "read-coils",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 3,
    "name": "ioLogik-E1212",
    "tagList": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di12",
        "function": "read-discrete-inputs",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di13",
        "function": "read-discrete-inputs",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di14",
        "function": "read-discrete-inputs",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di15",
        "function": "read-discrete-inputs",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 4,
    "name": "ioLogik-E1213",
    "tagList": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 5,
    "name": "ioLogik-E1214",
    "tagList": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 6,
    "name": "ioLogik-E1240",
    "tagList": [
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 0,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 1,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 2,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 3,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai4",
        "function": "read-input-registers",
        "address": 4,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai5",
        "function": "read-input-registers",
        "address": 5,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai6",
        "function": "read-input-registers",
        "address": 6,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai7",
        "function": "read-input-registers",
        "address": 7,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  },
  {
    "id": 7,
    "name": "ioLogik-E1241",
    "tagList": [
      {
        "name": "ao0",
        "function": "read-holding-registers",
        "address": 1024,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao1",
        "function": "read-holding-registers",
        "address": 1025,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao2",
        "function": "read-holding-registers",
        "address": 1026,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao3",
        "function": "read-holding-registers",
        "address": 1027,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  },
  {
    "id": 8,
    "name": "ioLogik-E1242",
    "tagList": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 512,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 513,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 514,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 515,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  },
  {
    "id": 9,
    "name": "ioLogik-E1260",
    "tagList": [
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi3",
        "function": "read-input-registers",
        "address": 1539,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi4",
        "function": "read-input-registers",
        "address": 1540,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi5",
        "function": "read-input-registers",
        "address": 1541,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  },
  {
    "id": 10,
    "name": "ioLogik-E1261H-T",
    "tagList": [
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do8",
        "function": "read-coils",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do9",
        "function": "read-coils",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do10",
        "function": "read-coils",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do11",
        "function": "read-coils",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 512,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 513,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 514,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 515,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai4",
        "function": "read-input-registers",
        "address": 516,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  },
  {
    "id": 11,
    "name": "ioLogik-E1261W-T",
    "tagList": [
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do8",
        "function": "read-coils",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do9",
        "function": "read-coils",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do10",
        "function": "read-coils",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do11",
        "function": "read-coils",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 512,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 513,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 514,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 515,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai4",
        "function": "read-input-registers",
        "address": 516,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  },
  {
    "id": 12,
    "name": "ioLogik-E1262",
    "tagList": [
      {
        "name": "tci0",
        "function": "read-input-registers",
        "address": 2048,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci1",
        "function": "read-input-registers",
        "address": 2050,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci2",
        "function": "read-input-registers",
        "address": 2052,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci3",
        "function": "read-input-registers",
        "address": 2054,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci4",
        "function": "read-input-registers",
        "address": 2056,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci5",
        "function": "read-input-registers",
        "address": 2058,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci6",
        "function": "read-input-registers",
        "address": 2060,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "tci7",
        "function": "read-input-registers",
        "address": 2062,
        "quantity": 2,
        "dataType": "uint32",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  },
  {
    "id": 13,
    "name": "ioLogik-E1263H-T",
    "tagList": [
      {
        "name": "do0",
        "function": "read-coils",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-coils",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-coils",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-coils",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-coils",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-coils",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-coils",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-coils",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do8",
        "function": "read-coils",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do9",
        "function": "read-coils",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do10",
        "function": "read-coils",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do11",
        "function": "read-coils",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do12",
        "function": "read-coils",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do13",
        "function": "read-coils",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do14",
        "function": "read-coils",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do15",
        "function": "read-coils",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do16",
        "function": "read-coils",
        "address": 16,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do17",
        "function": "read-coils",
        "address": 17,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do18",
        "function": "read-coils",
        "address": 18,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do19",
        "function": "read-coils",
        "address": 19,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do20",
        "function": "read-coils",
        "address": 20,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do21",
        "function": "read-coils",
        "address": 21,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do22",
        "function": "read-coils",
        "address": 22,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do23",
        "function": "read-coils",
        "address": 23,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-discrete-inputs",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-discrete-inputs",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-discrete-inputs",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-discrete-inputs",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di12",
        "function": "read-discrete-inputs",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di13",
        "function": "read-discrete-inputs",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di14",
        "function": "read-discrete-inputs",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di15",
        "function": "read-discrete-inputs",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di16",
        "function": "read-discrete-inputs",
        "address": 16,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di17",
        "function": "read-discrete-inputs",
        "address": 17,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di18",
        "function": "read-discrete-inputs",
        "address": 18,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di19",
        "function": "read-discrete-inputs",
        "address": 19,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di20",
        "function": "read-discrete-inputs",
        "address": 20,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di21",
        "function": "read-discrete-inputs",
        "address": 21,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di22",
        "function": "read-discrete-inputs",
        "address": 22,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di23",
        "function": "read-discrete-inputs",
        "address": 23,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 512,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 513,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 514,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 515,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai4",
        "function": "read-input-registers",
        "address": 516,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai5",
        "function": "read-input-registers",
        "address": 517,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai6",
        "function": "read-input-registers",
        "address": 518,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai7",
        "function": "read-input-registers",
        "address": 519,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai8",
        "function": "read-input-registers",
        "address": 520,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai9",
        "function": "read-input-registers",
        "address": 521,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  },
  {
    "id": 14,
    "name": "ioLogik-R1210",
    "tagList": [
      {
        "name": "di0",
        "function": "read-input-registers",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-input-registers",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-input-registers",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-input-registers",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-input-registers",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-input-registers",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-input-registers",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-input-registers",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-input-registers",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-input-registers",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-input-registers",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-input-registers",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di12",
        "function": "read-input-registers",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di13",
        "function": "read-input-registers",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di14",
        "function": "read-input-registers",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di15",
        "function": "read-input-registers",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 15,
    "name": "ioLogik-R1212",
    "tagList": [
      {
        "name": "di0",
        "function": "read-input-registers",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-input-registers",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-input-registers",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-input-registers",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-input-registers",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-input-registers",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-input-registers",
        "address": 6,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-input-registers",
        "address": 7,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di8",
        "function": "read-input-registers",
        "address": 8,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di9",
        "function": "read-input-registers",
        "address": 9,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di10",
        "function": "read-input-registers",
        "address": 10,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di11",
        "function": "read-input-registers",
        "address": 11,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di12",
        "function": "read-input-registers",
        "address": 12,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di13",
        "function": "read-input-registers",
        "address": 13,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di14",
        "function": "read-input-registers",
        "address": 14,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di15",
        "function": "read-input-registers",
        "address": 15,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do0",
        "function": "read-holding-registers",
        "address": 320,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do1",
        "function": "read-holding-registers",
        "address": 321,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do2",
        "function": "read-holding-registers",
        "address": 322,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do3",
        "function": "read-holding-registers",
        "address": 323,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do4",
        "function": "read-holding-registers",
        "address": 324,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do5",
        "function": "read-holding-registers",
        "address": 325,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do6",
        "function": "read-holding-registers",
        "address": 326,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "do7",
        "function": "read-holding-registers",
        "address": 327,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      }
    ]
  },
  {
    "id": 16,
    "name": "ioLogik-R1214",
    "tagList": [
      {
        "name": "di0",
        "function": "read-input-registers",
        "address": 0,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-input-registers",
        "address": 1,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-input-registers",
        "address": 2,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-input-registers",
        "address": 3,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-input-registers",
        "address": 4,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-input-registers",
        "address": 5,
        "quantity": 1,
        "dataType": "boolean",
        "description": ""
      },
      {
        "name": "ro0",
        "function": "read-holding-registers",
        "address": 320,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ro1",
        "function": "read-holding-registers",
        "address": 321,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ro2",
        "function": "read-holding-registers",
        "address": 322,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ro3",
        "function": "read-holding-registers",
        "address": 323,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ro4",
        "function": "read-holding-registers",
        "address": 324,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ro5",
        "function": "read-holding-registers",
        "address": 325,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  },
  {
    "id": 17,
    "name": "ioLogik-R1240",
    "tagList": [
      {
        "name": "ai0",
        "function": "read-input-registers",
        "address": 704,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai1",
        "function": "read-input-registers",
        "address": 705,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai2",
        "function": "read-input-registers",
        "address": 706,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai3",
        "function": "read-input-registers",
        "address": 707,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai4",
        "function": "read-input-registers",
        "address": 708,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai5",
        "function": "read-input-registers",
        "address": 709,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai6",
        "function": "read-input-registers",
        "address": 710,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ai7",
        "function": "read-input-registers",
        "address": 711,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  },
  {
    "id": 18,
    "name": "ioLogik-R1241",
    "tagList": [
      {
        "name": "ao0",
        "function": "read-holding-registers",
        "address": 1184,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao1",
        "function": "read-holding-registers",
        "address": 1185,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao2",
        "function": "read-holding-registers",
        "address": 1186,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      },
      {
        "name": "ao3",
        "function": "read-holding-registers",
        "address": 1187,
        "quantity": 1,
        "dataType": "uint16",
        "description": ""
      }
    ]
  }
]

GET /mxc/modbus/equipment-templates/{id}

Get equipment templates by ID

id: integer
in path

(no description)

200 OK

success

type
object
Response Example (200 OK)
{
  "id": 9,
  "name": "ioLogik-E1260",
  "tagList": [
    {
      "name": "rtdi0",
      "function": "read-input-registers",
      "address": 1536,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi1",
      "function": "read-input-registers",
      "address": 1537,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi2",
      "function": "read-input-registers",
      "address": 1538,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi3",
      "function": "read-input-registers",
      "address": 1539,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi4",
      "function": "read-input-registers",
      "address": 1540,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi5",
      "function": "read-input-registers",
      "address": 1541,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    }
  ],
  "application/json": {
    "id": 9,
    "name": "ioLogik-E1260",
    "tagList": [
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi3",
        "function": "read-input-registers",
        "address": 1539,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi4",
        "function": "read-input-registers",
        "address": 1540,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi5",
        "function": "read-input-registers",
        "address": 1541,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  }
}

PUT /mxc/modbus/equipment-templates/{id}

Update an equipment template by ID

id: integer

ID of equipment template

name: string (3 to 255 chars)

Name of equipment template

tagList: object[]

Tag list of equipment template

object
name: string (2 to 255 chars)

Name of tag

unit: string (up to 255 chars)

Unit of tag

function: string read-coils, read-input-registers, read-discrete-inputs, read-holding-registers, write-single-coil, write-single-register, write-multiple-coils, write-multiple-registers

Function to retrieve the tag value

address: integer 0 ≤ x ≤ 655350

Address of the tag 0x0000(0) <= value <= 0xFFFF(65535)

quantity: integer 1 ≤ x ≤ 655350

Quantity of tag

dataType: string uint16, uint32, uint64, int16, int32, int64, float32, float64, string, boolean, bytearray

Data type of tag

enableByteOrder: boolean

Enable byte order function

byteOrder: string BA, CDAB, DCBA, GHEFCDAB, HGFEDCBA

Switch input byte order

enableInvalidValue: boolean

Enable invalid value function

invalidValue: integer[]

Array size is equals to quantity (if input == INVALID_VALUE, assume the value is not valid)

integer
description: string (up to 65535 chars)

User edited description of tag

enableAutoScaling: boolean

Enable auto scaling function

autoScalingMode: string intercept, point

Mode of auto scaling function

autoScaling: object

V = input * S + O output = ((input-sourceMin) * (targetMax-targetMin) / (sourceMax-sourceMin)) + targetMin

slope: number
offset: number
sourceMin: number
sourceMax: number
targetMin: number
targetMax: number
access: string ro, wo, wr

Access type of tag

size: integer

Size of tag in byte

optimizeGrouping: boolean true

enable auto group tag polling optimization

id: integer
in path

(no description)

Request Example
{
  "id": 9,
  "name": "ioLogik-E1260",
  "tagList": [
    {
      "name": "rtdi0",
      "function": "read-input-registers",
      "address": 1536,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi1",
      "function": "read-input-registers",
      "address": 1537,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi2",
      "function": "read-input-registers",
      "address": 1538,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi3",
      "function": "read-input-registers",
      "address": 1539,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi4",
      "function": "read-input-registers",
      "address": 1540,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi5",
      "function": "read-input-registers",
      "address": 1541,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    }
  ]
}
200 OK

success

type
object
Response Example (200 OK)
{
  "id": 9,
  "name": "ioLogik-E1260",
  "tagList": [
    {
      "name": "rtdi0",
      "function": "read-input-registers",
      "address": 1536,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi1",
      "function": "read-input-registers",
      "address": 1537,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi2",
      "function": "read-input-registers",
      "address": 1538,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi3",
      "function": "read-input-registers",
      "address": 1539,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi4",
      "function": "read-input-registers",
      "address": 1540,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi5",
      "function": "read-input-registers",
      "address": 1541,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    }
  ],
  "application/json": {
    "id": 9,
    "name": "ioLogik-E1260",
    "tagList": [
      {
        "name": "rtdi0",
        "function": "read-input-registers",
        "address": 1536,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi1",
        "function": "read-input-registers",
        "address": 1537,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi2",
        "function": "read-input-registers",
        "address": 1538,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi3",
        "function": "read-input-registers",
        "address": 1539,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi4",
        "function": "read-input-registers",
        "address": 1540,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      },
      {
        "name": "rtdi5",
        "function": "read-input-registers",
        "address": 1541,
        "quantity": 1,
        "dataType": "uint16",
        "enableAutoScaling": 1,
        "autoScalingMode": "intercept",
        "autoScaling": {
          "slope": 0.1,
          "offset": 0
        },
        "description": ""
      }
    ]
  }
}

DELETE /mxc/modbus/equipment-templates/{id}

Delete an equipment templates by ID

id: integer
in path

(no description)

200 OK

success

interface

Modbus Management for Data acquisition

GET /mxc/modbus/interfaces

Get all interfaces

200 OK

success

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "name": "Modbus_Gateway_1",
    "type": "modbus-rtu",
    "config": {
      "dev": "/dev/ttyM0",
      "devDisplayName": "PORT 1",
      "baudRate": 115200,
      "parity": "none",
      "stopBits": 1,
      "intercharTimeoutMs": 100,
      "interframeDelayMs": 0
    },
    "requestTimeoutMs": 500,
    "pollingPeriodMs": 5000,
    "deviceList": []
  },
  {
    "id": 2,
    "name": "Modbus_Gateway_2",
    "type": "modbus-rtu",
    "config": {
      "dev": "/dev/ttyM1",
      "devDisplayName": "PORT 2",
      "baudRate": 115200,
      "parity": "none",
      "stopBits": 1,
      "intercharTimeoutMs": 100,
      "interframeDelayMs": 0
    },
    "requestTimeoutMs": 500,
    "pollingPeriodMs": 5000,
    "deviceList": []
  }
]

POST /mxc/modbus/interfaces

Create a TCP interface (RTU interfaces are already built-in and can't be deleted)

Interface which connects to modbus devices

Interface which connects to modbus devices

id: integer

ID of interface

name: string (2 to 255 chars)

Name of interface

type: string modbus-rtu, modbus-tcp

Type of modbus device

pollingPeriodMs: integer 100 ≤ x ≤ 86400000

Polling period for this interface (ms)

requestTimeoutMs: integer 100 ≤ x ≤ 60000

Request timeout for each devices (ms)

deviceList: object[]
object

Modbus device profile

deviceId: integer 0 ≤ x ≤ 255

ID of device

equipmentTemplate: string (2 to 255 chars)

Name of modbus template

equipmentName: string (3 to 255 chars)

Name of device

status: DeviceStatus
config: ModbusTCPConfig , ModbusRTUConfig
Request Example
{
  "id": 1,
  "name": "Modbus_Gateway_1",
  "type": "modbus-rtu",
  "config": {
    "dev": "/dev/ttyM0",
    "devDisplayName": "PORT 1",
    "baudRate": 115200,
    "parity": "none",
    "stopBits": 1,
    "intercharTimeoutMs": 100,
    "interframeDelayMs": 0
  },
  "requestTimeoutMs": 500,
  "pollingPeriodMs": 5000,
  "deviceList": []
}
200 OK

sucess

type
object
Response Example (200 OK)
{
  "id": 1,
  "name": "Modbus_Gateway_1",
  "type": "modbus-rtu",
  "config": {
    "host": "192.168.1.1",
    "port": 32556
  },
  "requestTimeoutMs": 500,
  "pollingPeriodMs": 5000,
  "deviceList": [],
  "application/json": {
    "id": 1,
    "name": "Modbus_Gateway_1",
    "type": "modbus-rtu",
    "config": {
      "host": "192.168.1.1",
      "port": 32556
    },
    "requestTimeoutMs": 500,
    "pollingPeriodMs": 5000,
    "deviceList": []
  }
}

GET /mxc/modbus/interfaces/{id}

Get an interface by given ID

id: integer
in path

(no description)

200 OK

success

type
object
Response Example (200 OK)
{
  "id": 1,
  "name": "Modbus_Gateway_1",
  "type": "modbus-rtu",
  "config": {
    "dev": "/dev/ttyM0",
    "devDisplayName": "PORT 1",
    "baudRate": 115200,
    "parity": "none",
    "stopBits": 1,
    "intercharTimeoutMs": 100,
    "interframeDelayMs": 0
  },
  "requestTimeoutMs": 500,
  "pollingPeriodMs": 5000,
  "deviceList": [],
  "application/json": {
    "id": 1,
    "name": "Modbus_Gateway_1",
    "type": "modbus-rtu",
    "config": {
      "dev": "/dev/ttyM0",
      "devDisplayName": "PORT 1",
      "baudRate": 115200,
      "parity": "none",
      "stopBits": 1,
      "intercharTimeoutMs": 100,
      "interframeDelayMs": 0
    },
    "requestTimeoutMs": 500,
    "pollingPeriodMs": 5000,
    "deviceList": []
  }
}

PUT /mxc/modbus/interfaces/{id}

Update an interface by given ID

Interface which connects to modbus devices

Interface which connects to modbus devices

id: integer

ID of interface

name: string (2 to 255 chars)

Name of interface

type: string modbus-rtu, modbus-tcp

Type of modbus device

pollingPeriodMs: integer 100 ≤ x ≤ 86400000

Polling period for this interface (ms)

requestTimeoutMs: integer 100 ≤ x ≤ 60000

Request timeout for each devices (ms)

deviceList: object[]
object

Modbus device profile

deviceId: integer 0 ≤ x ≤ 255

ID of device

equipmentTemplate: string (2 to 255 chars)

Name of modbus template

equipmentName: string (3 to 255 chars)

Name of device

status: DeviceStatus
config: ModbusTCPConfig , ModbusRTUConfig
id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "name": "Modbus_Gateway_1",
  "type": "modbus-rtu",
  "config": {
    "dev": "/dev/ttyM0",
    "devDisplayName": "PORT 1",
    "baudRate": 115200,
    "parity": "none",
    "stopBits": 1,
    "intercharTimeoutMs": 100,
    "interframeDelayMs": 0
  },
  "requestTimeoutMs": 500,
  "pollingPeriodMs": 5000,
  "deviceList": []
}
200 OK

success

type
object
Response Example (200 OK)
{
  "id": 1,
  "name": "Modbus_Gateway_1",
  "type": "modbus-rtu",
  "config": {
    "dev": "/dev/ttyM0",
    "devDisplayName": "PORT 1",
    "baudRate": 115200,
    "parity": "none",
    "stopBits": 1,
    "intercharTimeoutMs": 100,
    "interframeDelayMs": 0
  },
  "requestTimeoutMs": 500,
  "pollingPeriodMs": 5000,
  "deviceList": [],
  "application/json": {
    "id": 1,
    "name": "Modbus_Gateway_1",
    "type": "modbus-rtu",
    "config": {
      "dev": "/dev/ttyM0",
      "devDisplayName": "PORT 1",
      "baudRate": 115200,
      "parity": "none",
      "stopBits": 1,
      "intercharTimeoutMs": 100,
      "interframeDelayMs": 0
    },
    "requestTimeoutMs": 500,
    "pollingPeriodMs": 5000,
    "deviceList": []
  }
}

DELETE /mxc/modbus/interfaces/{id}

Delete an interface by Given ID (Can't delete built-in RTU interfaces)

id: integer
in path

(no description)

200 OK

success

GET /mxc/modbus/equipments

Get all modbus equipments for Log Profile

200 OK

success

type
object[]
Response Example (200 OK)
[
  {
    "equipmentName": "LIGHT",
    "equipmentTags": [
      {
        "name": "di0",
        "function": "read-discrete-inputs",
        "address": 0,
        "quantity": 1,
        "type": "boolean",
        "description": ""
      },
      {
        "name": "di1",
        "function": "read-discrete-inputs",
        "address": 1,
        "quantity": 1,
        "type": "boolean",
        "description": ""
      },
      {
        "name": "di2",
        "function": "read-discrete-inputs",
        "address": 2,
        "quantity": 1,
        "type": "boolean",
        "description": ""
      },
      {
        "name": "di3",
        "function": "read-discrete-inputs",
        "address": 3,
        "quantity": 1,
        "type": "boolean",
        "description": ""
      },
      {
        "name": "di4",
        "function": "read-discrete-inputs",
        "address": 4,
        "quantity": 1,
        "type": "boolean",
        "description": ""
      },
      {
        "name": "di5",
        "function": "read-discrete-inputs",
        "address": 5,
        "quantity": 1,
        "type": "boolean",
        "description": ""
      },
      {
        "name": "di6",
        "function": "read-discrete-inputs",
        "address": 6,
        "quantity": 1,
        "type": "boolean",
        "description": ""
      },
      {
        "name": "di7",
        "function": "read-discrete-inputs",
        "address": 7,
        "quantity": 1,
        "type": "boolean",
        "description": ""
      }
    ]
  }
]

access

Modbus Tag Access for Data Acquisition

GET /mxc/modbus/access/{equipment}/{tag}

Read Modbus Tag of (Equipent,Tag)

equipment: string
in path

equipment name of tags

tag: string
in path

tag name of tags

200 OK

success

type
object
Response Example (200 OK)
{
  "application/json": {
    "equipmentName": "ioLogik-E1210",
    "tagName": "di0",
    "valueType": "bool",
    "value": true
  }
}

PUT /mxc/modbus/access/{equipment}/{tag}

Write Modbus Tag of (Equipment,Tag)

object

Modbus Write Request of (Equipment,Tag)

valueType: string
value: object
equipment: string
in path

equipment name of tags

tag: string
in path

tag name of tags

Request Example
[
  {
    "valueType": "string",
    "value": "object"
  }
]
200 OK

success

type
object
Response Example (200 OK)
{
  "application/json": {
    "equipmentName": "ioLogik-E1210",
    "tagName": "di0"
  }
}

openvpn

Handles the configuration of the OpenVPN client service

GET /network/openvpn

Get OpenVPN service setting.

200 OK

Get OpenVPN setting success.

Response Example (200 OK)
{
  "enable": true,
  "ovpnFileExist": true,
  "connection": true,
  "vpnRemoteIp": "10.9.8.1",
  "vpnLocalIp": "10.9.8.2"
}

PUT /network/openvpn

Update OpenVPN service setting.

Request Example
{
  "enable": true,
  "ovpnFileExist": true,
  "connection": true,
  "vpnRemoteIp": "10.9.8.1",
  "vpnLocalIp": "10.9.8.2"
}
200 OK

Update OpenVPN setting success.

Response Example (200 OK)
{
  "enable": true,
  "ovpnFileExist": true,
  "connection": true,
  "vpnRemoteIp": "10.9.8.1",
  "vpnLocalIp": "10.9.8.2"
}

POST /network/openvpn/config

Upload OpenVPN configuration file to File server.

Request Example
{
  "url": "http://192.168.31.113:18080/url",
  "headers": {
    "X-Mx-AccessToken": "MOXAMOXA-TEST-SYSTEM"
  }
}
200 OK

Upload success.

Response Example (200 OK)
{
  "url": "http://192.168.31.113:18080/url"
}

PUT /network/openvpn/config

Provide OpenVPN configuration file path to bundle.

Request Example
{
  "file": {
    "url": "http://192.168.31.113:18080/url",
    "headers": {
      "X-Mx-AccessToken": "MOXAMOXA-TEST-SYSTEM"
    }
  }
}
200 OK

Provide success.

DELETE /network/openvpn/config

200 OK

Delete OpenVPN configuration file success.

program

Provides the user program service

GET /system/programs

Get all custom programs

200 OK

success

type
object[]
Response Example (200 OK)
{
  "id": 1,
  "name": "my-user-program",
  "enable": true,
  "startMode": "period",
  "args": "--url http://localhost",
  "period": 10,
  "timeout": 1,
  "lastExcutedTime": "2017-01-09T06:46:01.181Z",
  "fileExist": true,
  "logsExist": true,
  "file": {
    "url": "http://remote-download-url/file.tar.gz",
    "headers": {
      "authorization": "xxxxxxx"
    }
  }
}

POST /system/programs

Create a new Program

Request Example
{
  "file": {
    "url": "http://remote-download-url/file.tar.gz",
    "headers": {
      "authorization": "xxxxxxx"
    }
  },
  "id": 1,
  "name": "my-user-program",
  "enable": true,
  "startMode": "period",
  "args": "--url http://localhost",
  "period": 10,
  "timeout": 1,
  "lastExcutedTime": "2017-01-09T06:46:01.181Z",
  "fileExist": true,
  "logsExist": true
}
200 OK

OK

type
object
Response Example (200 OK)
{
  "id": 1,
  "name": "my-user-program",
  "enable": true,
  "startMode": "period",
  "args": "--url http://localhost",
  "period": 10,
  "timeout": 1,
  "lastExcutedTime": "2017-01-09T06:46:01.181Z",
  "fileExist": true,
  "logsExist": true,
  "file": {
    "url": "http://remote-download-url/file.tar.gz",
    "headers": {
      "authorization": "xxxxxxx"
    }
  }
}

DELETE /system/programs

Delete Programs

number

IDs

Request Example
[
  "number"
]
200 OK

OK

type
object
Response Example (200 OK)
{
  "count": 1
}

GET /system/programs/{id}

Get program by given id

id: integer
in path

(no description)

200 OK

success

type
object
Response Example (200 OK)
{
  "id": 1,
  "name": "my-user-program",
  "enable": true,
  "startMode": "period",
  "args": "--url http://localhost",
  "period": 10,
  "timeout": 1,
  "lastExcutedTime": "2017-01-09T06:46:01.181Z",
  "fileExist": true,
  "logsExist": true,
  "file": {
    "url": "http://remote-download-url/file.tar.gz",
    "headers": {
      "authorization": "xxxxxxx"
    }
  }
}

PUT /system/programs/{id}

Update program settings by given id

id: integer
in path

(no description)

Request Example
{
  "file": {
    "url": "http://remote-download-url/file.tar.gz",
    "headers": {
      "authorization": "xxxxxxx"
    }
  },
  "id": 1,
  "name": "my-user-program",
  "enable": true,
  "startMode": "period",
  "args": "--url http://localhost",
  "period": 10,
  "timeout": 1,
  "lastExcutedTime": "2017-01-09T06:46:01.181Z",
  "fileExist": true,
  "logsExist": true
}
200 OK

OK

type
object
Response Example (200 OK)
{
  "id": 1,
  "name": "my-user-program",
  "enable": true,
  "startMode": "period",
  "args": "--url http://localhost",
  "period": 10,
  "timeout": 1,
  "lastExcutedTime": "2017-01-09T06:46:01.181Z",
  "fileExist": true,
  "logsExist": true,
  "file": {
    "url": "http://remote-download-url/file.tar.gz",
    "headers": {
      "authorization": "xxxxxxx"
    }
  }
}

POST /system/programs/{id}/file

Download program by given id

id: integer
in path

(no description)

200 OK

success

Response Example (200 OK)
{
  "url": "http://download/file"
}

POST /system/programs/{id}/logs

Download logs by given id

id: integer
in path

(no description)

200 OK

success

route

Handles the routing table

Current Default Route and priority list

GET /network/routes/default

The system returns the current default route information and default route priority list.

200 OK

Default Route

Response Example (200 OK)
{
  "interface": "eth0",
  "gateway": "192.168.3.254",
  "priorityList": [
    "wwan0",
    "eth0"
  ]
}

Update Default Route Setting

PUT /network/routes/default

Update the default route list.

Request Example
{
  "interface": "eth0",
  "gateway": "192.168.3.254",
  "priorityList": [
    "wwan0",
    "eth0"
  ]
}
200 OK

OK

Response Example (200 OK)
{
  "interface": "eth0",
  "gateway": "192.168.3.254",
  "priorityList": [
    "wwan0",
    "eth0"
  ]
}

iptables

Manages iptables rules

Port Mapping Rule(s)

GET /network/portmapping

List all port mapping rules.

200 OK

An array of port mapping rule(s)

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "enable": true,
    "service": "http",
    "extPort": {
      "start": 8080,
      "end": 8080
    },
    "intPort": {
      "start": 80,
      "end": 80
    },
    "intIp": "192.168.5.123",
    "protocol": "tcp"
  },
  {
    "id": 2,
    "enable": false,
    "service": "test",
    "extPort": {
      "start": 10080,
      "end": 10083
    },
    "intPort": {
      "start": 8080,
      "end": 8083
    },
    "intIp": "192.168.5.123",
    "protocol": "both"
  }
]

Create a Port Mapping Rule

POST /network/portmapping

Append a port mapping rule in the table.

Request Example
{
  "id": 1,
  "enable": true,
  "service": "http",
  "extPort": {
    "start": 8080,
    "end": 8080
  },
  "intPort": {
    "start": 80,
    "end": 80
  },
  "intIp": "192.168.5.123",
  "protocol": "tcp"
}
200 OK

OK

Response Example (200 OK)
{
  "id": 1,
  "enable": true,
  "service": "http",
  "extPort": {
    "start": 8080,
    "end": 8080
  },
  "intPort": {
    "start": 80,
    "end": 80
  },
  "intIp": "192.168.5.123",
  "protocol": "tcp"
}

DELETE /network/portmapping

Delete multiple rules

integer

Target rule ID

Request Example
[
  "integer"
]
200 OK

success

GET /network/portmapping/{id}

Get a port mapping rule by ID

id: integer
in path

(no description)

200 OK

success

Response Example (200 OK)
{
  "id": 1,
  "enable": true,
  "service": "http",
  "extPort": {
    "start": 8080,
    "end": 8080
  },
  "intPort": {
    "start": 80,
    "end": 80
  },
  "intIp": "192.168.5.123",
  "protocol": "tcp"
}

Update a Port Mapping Rule

PUT /network/portmapping/{id}

Update a port mapping rule in the table.

id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "enable": true,
  "service": "http",
  "extPort": {
    "start": 8080,
    "end": 8080
  },
  "intPort": {
    "start": 80,
    "end": 80
  },
  "intIp": "192.168.5.123",
  "protocol": "tcp"
}
200 OK

OK

Response Example (200 OK)
{
  "id": 1,
  "enable": true,
  "service": "http",
  "extPort": {
    "start": 8080,
    "end": 8080
  },
  "intPort": {
    "start": 80,
    "end": 80
  },
  "intIp": "192.168.5.123",
  "protocol": "tcp"
}

DELETE /network/portmapping/{id}

Delete port mapping rule by ID

id: integer
in path

(no description)

200 OK

success

Simple SNAT Rule(s)

GET /network/ssnat

List all simple source NAT rules.

200 OK

An array of simple SNAT rule(s)

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "enable": true,
    "priority": 0,
    "service": "http",
    "protocol": "both",
    "intIp": "192.168.5.123",
    "portStart": 80,
    "portEnd": 80,
    "outInterface": "wan"
  },
  {
    "id": 2,
    "enable": false,
    "priority": 1,
    "service": "https",
    "protocol": "both",
    "intIp": "192.168.5.123",
    "portStart": 443,
    "portEnd": 443,
    "outInterface": "wan"
  }
]

Create a Simple SNAT Rule

POST /network/ssnat

Create a simple source NAT rule in the table, only internal IP, source port, and internal IP is provided.

Request Example
{
  "id": 1,
  "enable": true,
  "priority": 0,
  "service": "http",
  "protocol": "both",
  "intIp": "192.168.5.123",
  "portStart": 80,
  "portEnd": 80,
  "outInterface": "wan"
}
200 OK

OK

Response Example (200 OK)
{
  "id": 1,
  "enable": true,
  "priority": 0,
  "service": "http",
  "protocol": "both",
  "intIp": "192.168.5.123",
  "portStart": 80,
  "portEnd": 80,
  "outInterface": "wan"
}

DELETE /network/ssnat

Delete multiple rules

integer

Target rule ID

Request Example
[
  "integer"
]
200 OK

success

GET /network/ssnat/{id}

Get a simple source NAT rule by ID

id: integer
in path

(no description)

200 OK

success

Response Example (200 OK)
{
  "id": 1,
  "enable": true,
  "priority": 0,
  "service": "http",
  "protocol": "both",
  "intIp": "192.168.5.123",
  "portStart": 80,
  "portEnd": 80,
  "outInterface": "wan"
}

Update a Simple SNAT Rule

PUT /network/ssnat/{id}

Update a simple source NAT rule in the table.

id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "enable": true,
  "priority": 0,
  "service": "http",
  "protocol": "both",
  "intIp": "192.168.5.123",
  "portStart": 80,
  "portEnd": 80,
  "outInterface": "wan"
}
200 OK

OK

Response Example (200 OK)
{
  "id": 1,
  "enable": true,
  "priority": 0,
  "service": "http",
  "protocol": "both",
  "intIp": "192.168.5.123",
  "portStart": 80,
  "portEnd": 80,
  "outInterface": "wan"
}

DELETE /network/ssnat/{id}

Delete simple source NAT rule by ID

id: integer
in path

(no description)

200 OK

success

GET /network/firewall/wan/https

Get the firewall status for HTTPS on WAN

200 OK

status

Response Example (200 OK)
{
  "enable": false
}

PUT /network/firewall/wan/https

Update the firewall status for HTTPS on WAN

Request Example
{
  "enable": false
}
200 OK

OK

Response Example (200 OK)
{
  "enable": false
}

serial

Provides the utility to set the serial mode

GET /system/serial

Get all of serial interfaces settings

200 OK

success

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "dev": "/dev/ttyM0",
    "devDisplayName": "PORT-1",
    "mode": "rs232"
  },
  {
    "id": 2,
    "dev": "/dev/ttyM1",
    "devDisplayName": "PORT-2",
    "mode": "rs485-2w"
  },
  {
    "id": 3,
    "dev": "/dev/ttyM2",
    "devDisplayName": "PORT 3",
    "mode": "rs422/rs485-4w"
  }
]

GET /system/serial/{id}

Get a serial interface configuration

id: integer
in path

(no description)

200 OK

success

type
object
Response Example (200 OK)
{
  "id": 1,
  "dev": "/dev/ttyM0",
  "devDisplayName": "PORT-1",
  "mode": "rs232"
}

PUT /system/serial/{id}

Update a dhcp server configuration

Serial interface configuration

Serial interface configuration

id: integer

ID of serial interface

dev: string (1 to 1024 chars)

Serial interface physical path

devDisplayName: string

Display name of serial interface

mode: string rs232, rs485-2w, rs422/rs485-4w

Mode of serial interface

id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "dev": "/dev/ttyM0",
  "devDisplayName": "PORT-1",
  "mode": "rs232"
}
200 OK

success

type
object
Response Example (200 OK)
{
  "id": 1,
  "dev": "/dev/ttyM0",
  "devDisplayName": "PORT-1",
  "mode": "rs232"
}

service

Manages the system service configuration

GET /system/services

Get system services status

200 OK

success

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "enable": true,
    "name": "ssh",
    "status": true
  },
  {
    "id": 2,
    "enable": true,
    "name": "rsyslog",
    "status": true
  }
]

PUT /system/services/{name}

Update service settings

Service status / configuration

Service status / configuration

id: integer

Service ID

enable: boolean

Enable/Disable service

name: string

Name of service

status: string

Current status of service

name: string
in path

(no description)

Request Example
{
  "id": 1,
  "enable": true,
  "name": "ssh",
  "status": true
}
200 OK

success

type
object
Response Example (200 OK)
{
  "id": 1,
  "enable": true,
  "name": "ssh",
  "status": true
}

GET /system/services/{name}

Get specific service status

name: string
in path

(no description)

200 OK

success

type
object
Response Example (200 OK)
{
  "id": 1,
  "enable": true,
  "name": "ssh",
  "status": true
}

status

Provides system status information

GET /system/status

Get system status

fields: string
in query

Only get selected fields. Using comma as separator (?fields=cpuUsage,uptimeSec,version)

200 OK

success

type
object
Response Example (200 OK)
{
  "hostname": "Moxa",
  "version": "1.1.0-1",
  "uptimeSec": 312956,
  "cpuUsage": 5.7,
  "memoryUsage": 63.8,
  "memory": 257286144,
  "disks": [
    {
      "name": "system",
      "mount": "/",
      "device": "rootfs",
      "usage": {
        "total": 770695168,
        "used": 497655808,
        "free": 217038848,
        "percent": 64.6
      }
    },
    {
      "name": "sd1",
      "mount": "/media/sd-mmcblk1p1",
      "device": "/dev/mmcblk1p1",
      "usage": {
        "total": 770695168,
        "used": 497655808,
        "free": 217038848,
        "percent": 64.6
      }
    }
  ]
}

PUT /system/status

Update hostname

System status

System status

hostname: string (1 to 63 chars)

Hostname

version: string

Version of system

uptimeSec: string

System uptime (unit: seconds)

cpuUsage: number

CPU usage (in percentage)

memoryUsage: number

System memory usage (in percentage)

memory: integer

System total memory (unit: byte)

disks: object[]
object

Disk information

name: string

Disk alias

mount: string

Mount point

device: string

Physical device node path

usage: object

Usage of this disk

total: integer

Total size (unit: byte)

used: integer

Used size (unit: byte)

free: integer

Free size (unit: byte)

percent: number

Percent of used size

Request Example
{
  "hostname": "Moxa",
  "version": "1.1.0-1",
  "uptimeSec": 312956,
  "cpuUsage": 5.7,
  "memoryUsage": 63.8,
  "memory": 257286144,
  "disks": [
    {
      "name": "system",
      "mount": "/",
      "device": "rootfs",
      "usage": {
        "total": 770695168,
        "used": 497655808,
        "free": 217038848,
        "percent": 64.6
      }
    },
    {
      "name": "sd1",
      "mount": "/media/sd-mmcblk1p1",
      "device": "/dev/mmcblk1p1",
      "usage": {
        "total": 770695168,
        "used": 497655808,
        "free": 217038848,
        "percent": 64.6
      }
    }
  ]
}
200 OK

success

type
object
Response Example (200 OK)
{
  "hostname": "Moxa",
  "version": "1.1.0-1",
  "uptimeSec": 312956,
  "cpuUsage": 5.7,
  "memoryUsage": 63.8,
  "memory": 257286144,
  "disks": [
    {
      "name": "system",
      "mount": "/",
      "device": "rootfs",
      "usage": {
        "total": 770695168,
        "used": 497655808,
        "free": 217038848,
        "percent": 64.6
      }
    },
    {
      "name": "sd1",
      "mount": "/media/sd-mmcblk1p1",
      "device": "/dev/mmcblk1p1",
      "usage": {
        "total": 770695168,
        "used": 497655808,
        "free": 217038848,
        "percent": 64.6
      }
    }
  ]
}

POST /system/reboot

Reboot system (delay: 3 sec)

200 OK

success

POST /system/syslog

Uplaod system logs to remote server

Request Example
"object"
200 OK

sucess

type
Response Example (200 OK)
{
  "url": "https://www.google.com"
}

GET /network/interfaces

Get network interfaces

200 OK

success

type
object
Response Example (200 OK)
[
  "tunl0",
  "eth0",
  "eth1"
]

PUT /system/password

Update OS password

System Password

System Password

password: string (4 to 255 chars)

password

Request Example
{
  "passowrd": "thisisyourpassword"
}
200 OK

success

GET /system/properties

Get system properties

200 OK

success

type
object
Response Example (200 OK)
{
  "gps": {
    "lat": 121.123,
    "lng": 22.456
  },
  "aliasName": "my iot gateway"
}

PUT /system/customProperties

User custom defined properties

Request payload for updating custom property

Request payload for updating custom property

Request Example
{
  "myKey": "myValue"
}
200 OK

success

type
object
Response Example (200 OK)
{
  "myKey": "myValue"
}

GET /system/properties/{key}

Get specific system property

key: string
in path

(no description)

200 OK

success

type
Response Example (200 OK)
{
  "application/json": {
    "lat": 121.123,
    "lng": 22.456
  }
}

PUT /system/properties/{key}

Update specific system property

Request payload for updating system property

Request payload for updating system property

data:
key: string
in path

(no description)

Request Example
{
  "data": {
    "lat": 121.123,
    "lng": 22.456
  }
}
200 OK

success

Response Example (200 OK)
{
  "lat": 121.123,
  "lng": 22.456
}

GET /mxc/system/equipments

Get system tag information

200 OK

success

type
object
Response Example (200 OK)
[
  {
    "equipmentName": "SYSTEM",
    "equipmentTags": [
      {
        "name": "cpu_usage",
        "dataType": "float64",
        "access": "ro",
        "size": 8,
        "description": "CPU Usage"
      },
      {
        "name": "memory_usage",
        "dataType": "float64",
        "access": "ro",
        "size": 8,
        "description": "Memory Usage"
      },
      {
        "name": "disk_usage",
        "dataType": "float64",
        "access": "ro",
        "size": 8,
        "description": "Disk Usage"
      }
    ]
  }
]

time

Provides the system-time management function

GET /system/time

Get current time settings

200 OK

success

type
object
Response Example (200 OK)
{
  "time": "2015-03-26T16:27:48.611441Z",
  "timezone": "Asia/Taipei",
  "ntp": {
    "enable": true,
    "server": "pool.ntp.org",
    "interval": 86400
  }
}

PUT /system/time

Update time settings

Time configuration

Time configuration

time: string

Current system time (format: iso 8601)

timezone: string

Current timezone

ntp: object

NTP configuration

enable: boolean

Enable NTP client

server: string (1 to 2048 chars)

Target NTP server

interval: integer 60 ≤ x ≤ 2592000

Time sync interval in seconds (at least: 60 seconds.)

Request Example
{
  "time": "2015-03-26T16:27:48.611441Z",
  "timezone": "Asia/Taipei",
  "ntp": {
    "enable": true,
    "server": "pool.ntp.org",
    "interval": 86400
  }
}
200 OK

success

type
object
Response Example (200 OK)
{
  "time": "2015-03-26T16:27:48.611441Z",
  "timezone": "Asia/Taipei",
  "ntp": {
    "enable": true,
    "server": "pool.ntp.org",
    "interval": 86400
  }
}

GET /system/zoneinfo

Get current timezone information

200 OK

success

type
object
Response Example (200 OK)
{
  "zone": [
    {
      "cca2": "AD",
      "name": "Europe/Andorra",
      "offset": "+0100"
    },
    {
      "cca2": "AE",
      "name": "Asia/Dubai",
      "offset": "+0400"
    },
    {
      "cca2": "AF",
      "name": "Asia/Kabul",
      "offset": "+0430"
    }
  ],
  "iso3166": [
    {
      "cca2": "AD",
      "name": "Andorra"
    },
    {
      "cca2": "AE",
      "name": "United Arab Emirates"
    },
    {
      "cca2": "AF",
      "name": "Afghanistan"
    }
  ]
}

firmware

Manages the firmware upgrade function

POST /system/firmware

Upgrade firmware by given url

Firmware Info

Firmware Info

delay: integer

Delay time in seconds before execute the upgrading process

file: object

Remote firmware meta data

url: string (1 to 4096 chars)

URL for downloading firmware

physicalPath: string (1 to 4096 chars)

File's physical path on machine

headers: object

Headers for downloading firmware if necessary

Request Example
{
  "delay": 3,
  "file": {
    "url": "http://192.168.31.81:5000/api/v1/download/1234",
    "headers": {
      "accessToken": "MOXAMOXA-TEST-SYSTEM"
    }
  }
}
200 OK

success

wifi

Provides the WiFi network(s) configuration interface

WiFi Interface(s)

GET /network/wifi

The system returns information about the settings of all WiFi interface(s).

200 OK

An array of WiFi interface(s)

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "name": "wlan0",
    "product": "WPEQ-353ACNI",
    "capabilities": [
      "client",
      "ap"
    ],
    "mode": "client",
    "enable": true,
    "status": true,
    "client": {
      "enableDhcp": true,
      "networks": [
        {
          "ssid": "test-none",
          "security": "none"
        },
        {
          "ssid": "test-wpa",
          "security": "wpa",
          "password": "12345678",
          "priority": 5
        },
        {
          "ssid": "test-eap",
          "security": "eap",
          "username": "moxa",
          "password": "moxa",
          "priority": 10
        },
        {
          "ssid": "test-wep",
          "security": "wep",
          "password": "12345",
          "priority": 1
        }
      ],
      "signal": 100,
      "ip": "111.70.146.125",
      "netmask": "255.255.255.252",
      "gateway": "111.70.146.126",
      "dns": [
        "168.95.1.1",
        "168.95.192.1"
      ],
      "usage": {
        "txkbyte": 40023,
        "rxkbyte": 3493
      },
      "checkalive": {
        "enable": true,
        "targetHost": "8.8.8.8",
        "intervalSec": 60
      }
    },
    "ap": {
      "mode": "bg",
      "ssid": "moxa-test",
      "channel": 11,
      "security": {
        "mode": "none"
      }
    }
  }
]

GET /network/wifi/{id}

Get settings of indicated WiFi interface.

id: integer
in path

(no description)

200 OK

An WiFi interface settings.

Response Example (200 OK)
{
  "id": 1,
  "name": "wlan0",
  "product": "WPEQ-353ACNI",
  "capabilities": [
    "client",
    "ap"
  ],
  "mode": "client",
  "enable": true,
  "status": true,
  "client": {
    "enableDhcp": true,
    "networks": [
      {
        "ssid": "test-none",
        "security": "none"
      },
      {
        "ssid": "test-wpa",
        "security": "wpa",
        "password": "12345678",
        "priority": 5
      },
      {
        "ssid": "test-eap",
        "security": "eap",
        "username": "moxa",
        "password": "moxa",
        "priority": 10
      },
      {
        "ssid": "test-wep",
        "security": "wep",
        "password": "12345",
        "priority": 1
      }
    ],
    "signal": 100,
    "ip": "111.70.146.125",
    "netmask": "255.255.255.252",
    "gateway": "111.70.146.126",
    "dns": [
      "168.95.1.1",
      "168.95.192.1"
    ],
    "usage": {
      "txkbyte": 40023,
      "rxkbyte": 3493
    },
    "checkalive": {
      "enable": true,
      "targetHost": "8.8.8.8",
      "intervalSec": 60
    }
  },
  "ap": {
    "mode": "bg",
    "ssid": "moxa-test",
    "channel": 11,
    "security": {
      "mode": "none"
    }
  }
}

WiFi Interface

PUT /network/wifi/{id}

Update an WiFi interface settings.

id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "name": "wlan0",
  "product": "WPEQ-353ACNI",
  "capabilities": [
    "client",
    "ap"
  ],
  "mode": "client",
  "enable": true,
  "status": true,
  "client": {
    "enableDhcp": true,
    "networks": [
      {
        "ssid": "test-none",
        "security": "none"
      },
      {
        "ssid": "test-wpa",
        "security": "wpa",
        "password": "12345678",
        "priority": 5
      },
      {
        "ssid": "test-eap",
        "security": "eap",
        "username": "moxa",
        "password": "moxa",
        "priority": 10
      },
      {
        "ssid": "test-wep",
        "security": "wep",
        "password": "12345",
        "priority": 1
      }
    ],
    "signal": 100,
    "ip": "111.70.146.125",
    "netmask": "255.255.255.252",
    "gateway": "111.70.146.126",
    "dns": [
      "168.95.1.1",
      "168.95.192.1"
    ],
    "usage": {
      "txkbyte": 40023,
      "rxkbyte": 3493
    },
    "checkalive": {
      "enable": true,
      "targetHost": "8.8.8.8",
      "intervalSec": 60
    }
  },
  "ap": {
    "mode": "bg",
    "ssid": "moxa-test",
    "channel": 11,
    "security": {
      "mode": "none"
    }
  }
}
200 OK

OK

Response Example (200 OK)
{
  "id": 1,
  "name": "wlan0",
  "product": "WPEQ-353ACNI",
  "capabilities": [
    "client",
    "ap"
  ],
  "mode": "client",
  "enable": true,
  "status": true,
  "client": {
    "enableDhcp": true,
    "networks": [
      {
        "ssid": "test-none",
        "security": "none"
      },
      {
        "ssid": "test-wpa",
        "security": "wpa",
        "password": "12345678",
        "priority": 5
      },
      {
        "ssid": "test-eap",
        "security": "eap",
        "username": "moxa",
        "password": "moxa",
        "priority": 10
      },
      {
        "ssid": "test-wep",
        "security": "wep",
        "password": "12345",
        "priority": 1
      }
    ],
    "signal": 100,
    "ip": "111.70.146.125",
    "netmask": "255.255.255.252",
    "gateway": "111.70.146.126",
    "dns": [
      "168.95.1.1",
      "168.95.192.1"
    ],
    "usage": {
      "txkbyte": 40023,
      "rxkbyte": 3493
    },
    "checkalive": {
      "enable": true,
      "targetHost": "8.8.8.8",
      "intervalSec": 60
    }
  },
  "ap": {
    "mode": "bg",
    "ssid": "moxa-test",
    "channel": 11,
    "security": {
      "mode": "none"
    }
  }
}

POST /network/wifi/{id}/blacklist

Add a MAC into blacklist of an indicated WiFi interface.

id: integer
in path

(no description)

Request Example
{
  "id": 1,
  "mac": "01:23:45:67:89:0a",
  "description": "test1"
}
200 OK

OK

Response Example (200 OK)
{
  "id": 1,
  "mac": "01:23:45:67:89:0a",
  "description": "test1"
}

GET /network/wifi/{id}/blacklist

Get blacklist of an indicated WiFi AP interface.

id: integer
in path

(no description)

200 OK

A blacklist of an indicated WiFi AP interface.

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "mac": "01:23:45:67:89:0a",
    "description": "test1"
  }
]

WiFi Blacklist for AP

PUT /network/wifi/{id}/blacklist

Update blacklist of an indicated WiFi AP interface.

object
id: integer

Identifier for an WiFi AP blacklist MAC.

mac: string

A MAC address.

description: string

Description of the MAC address.

id: integer
in path

(no description)

Request Example
[
  {
    "id": 1,
    "mac": "01:23:45:67:89:0a",
    "description": "test1"
  }
]
200 OK

OK

type
object[]
Response Example (200 OK)
[
  {
    "id": 1,
    "mac": "01:23:45:67:89:0a",
    "description": "test1"
  }
]

DELETE /network/wifi/{id}/blacklist

Delete multiple MACs

integer

MAC ID of a blacklist

id: integer
in path

(no description)

Request Example
[
  "integer"
]
200 OK

success

GET /network/wifi/{id}/blacklist/{mac_id}

Get a MAC item from blacklist of an indicated WiFi AP interface.

id: integer
in path

A WiFi interface ID

mac_id: integer
in path

A MAC ID in a blacklist of the WiFi AP interface

200 OK

A MAC item in a blacklist of an indicated WiFi AP interface.

Response Example (200 OK)
{
  "id": 1,
  "mac": "01:23:45:67:89:0a",
  "description": "test1"
}

WiFi Blacklist item for AP

PUT /network/wifi/{id}/blacklist/{mac_id}

Update a MAC item in blacklist of an indicated WiFi AP interface.

id: integer
in path

A WiFi interface ID

mac_id: integer
in path

A MAC ID in a blacklist of the WiFi AP interface

Request Example
{
  "id": 1,
  "mac": "01:23:45:67:89:0a",
  "description": "test1"
}
200 OK

OK

Response Example (200 OK)
{
  "id": 1,
  "mac": "01:23:45:67:89:0a",
  "description": "test1"
}

DELETE /network/wifi/{id}/blacklist/{mac_id}

Delete a MACs

MAC ID of a blacklist

MAC ID of a blacklist

id: integer
in path

A WiFi interface ID

mac_id: integer
in path

A MAC ID in a blacklist of the WiFi AP interface

Request Example
"integer"
200 OK

success

GET /network/wifi/{id}/scan-networks

Get a list of WiFi stations arounded.

id: integer
in path

A WiFi interface ID

200 OK

A list of WiFi stations.

type
object[]
Response Example (200 OK)
[
  {
    "ssid": "test",
    "bssid": "01:23:45:67:89:0a",
    "signal": -43,
    "frequency": 2462,
    "security": "wpa2"
  }
]

POST /network/wifi/{id}/scan-networks

Scan WiFi stations arounded.

id: integer
in path

A WiFi interface ID

200 OK

success

GET /network/wifi/{id}/list-networks

Get a list of WiFi stations arounded.

id: integer
in path

A WiFi interface ID

200 OK

A list of WiFi stations.

type
object[]
Response Example (200 OK)
[
  {
    "ssid": "test",
    "bssid": "01:23:45:67:89:0a",
    "signal": -43,
    "frequency": 2462,
    "security": "wpa2"
  }
]

Schema Definitions

CellularAll:

enable: boolean

Enable Cellular Networking.

id: integer

Identifier for an Cellular interface.

profileId: integer

Specify profile to connect, 0 for connect and retry automatically.

profileTimeout: integer 60 ≤ x ≤ 86399

Retry timeout in seconds for static APN to switch primary to secondary settings.

profiles: object[]

Profiles for redundency

object
id: integer

Identifier for an Cellular interface.

name: string (up to 100 chars)

Alias name for the profile.

pdpContext: object

PDP context data for dialing up to Cellular Network.

static: boolean

Use static APN or dynamic.

id: integer 1 ≤ x ≤ 16

Specifies PDP context id.

apn: string

Edit APN of the specified PDP context.

type: string ipv4, ipv6, ipv4v6

Indicate the PDP type to use.

auth: object

The negotiated authentication.

protocol: string none, chap, pap, both

The negotiated authentication protocol.

username: string (up to 255 chars)

Username for PAP and/or CHAP.

password: string (up to 255 chars)

Password for PAP and/or CHAP.

pinCode: string

PIN code of SIM card. Takes no effect when SIM card PIN weren't not set.

init: string[]

Initialize process before executing the profile.

  • sim:<sim-slot>

  • carrier:<carrier>

string
keepalive: object
enable: boolean

Enable/disable Cellular connection keep-alive by ping.

targetHost: string

IP address to ping.

intervalSec: integer 60 ≤ x ≤ 86399

Check alive interval.

reboot: object

Reboot system while check alive failed after a defined cycle(s).

enable: boolean

Enable/disable reboot policy for check alive failed.

cycles: integer 1 ≤ x ≤ 48

Define cycles to check if reboot is required; a cycle is a global value defined by system, default should be 20 minutes.

name: string

Interface name.

capabilities: object
sim: integer[]
integer
carriers: string[]
string
currentProfileId: integer

Current used profile Id.

mode: string

Given cellular connection mode. Could be one of "umts", "lte".

signal: object

Cellular RF signal strength, include RSSI and EcIo.

rat: string

Given cellular connection mode. Could be one of umts, lte, m1, nb1, none.

csq: integer

Signal quality, Only shows the first part of the response, RSSI (Received signal strength indicator).

rssi: integer

Cellular RF signal strength, in dBm. Value -999 indicates no signal.

rxqual: integer

RxQual is used in GSM and is a part of the Network Measurement Reports (NMR). This is an integer value which can be between 0 and 7 and reflects the quality of voice. 0 is the best quality, 7 is the worst.

rscp: integer

In the UMTS cellular communication system, received signal code power (RSCP, in dBm) denotes the power measured by a receiver on a particular physical communication channel.

ecio: integer

The ratio of the received energy per chip (= code bit) and the interference level, given in dBm.

rsrp: integer

Reference Signal Received Power is an RSSI type of measurement. It is the power of the LTE Reference Signals spread over the full bandwidth and narrowband, given in dBm.

rsrq: integer

Reference Signal Received Quality, Quality considering also RSSI and the number of used Resource Blocks (N) RSRQ = (N * RSRP) / RSSI measured over the same bandwidth. RSRQ is a C/I type of measurement and it indicates the quality of the received reference signal, given in dB.

indicator: string

The indicator is either RSSI for 2G/3G or RSRP for 4G and none if no signal.

level: integer

Signal levels defined in 6 degrees 0 ~ 5. The mapping is no signal, very poor, poor, fair, good, and excellent.

operatorName: string

Indicate current operator name if exist.

lac: string

Location area code.

tac: string

Tracking area code (LTE).

nid: string

Network ID (CDMA).

cellId: string

Cell ID.

bid: string

Base station ID (CDMA).

iccId: string

ICC ID of SIM card.

imsi: string

IMSI of SIM card.

imei: string

IMEI of cellular module.

esn: string

ESN of cellular module.

pinRetryRemain: integer

PIN Retry remaining.

status: string initializing, nosim, pin, puk, ready, connecting, connect_failure, connected, power_cycle, service_searching, service_attached, pin_error, switching_carrier

Indicate current status of cellular connection.

  • initializing: get module and SIM card info, unlock SIM card if necessary

  • nosim: no SIM card or unknown error with SIM card status

  • pin: SIM card is locked with a PIN code

  • ready: SIM card is ready for connect (unlocked or lock is disabled)

  • connecting: during connect state

  • connect_failure: connect failed or keepalive failed (if keepalive enabled)

  • connected: connect success with keepalive success or success with keepalive disabled

  • power_cycle: power cycle the module to recover issues

  • service_searching: roaming

  • service_attached: attached with a base station

  • pin_error: PIN code error

  • switching_carrier: module is switching carrier

mac: string

The identical MAC address.

ip: string

IP address. "" when not connected.

netmask: string

Subnet mask. "" when not connected.

gateway: string

Gateway IP address. "" when not connected.

dns: string[]

A list of DNS IP addresses. [] when not connected.

string
usage: object

Data usage.

txkbyte: integer

Amount of data transmitted, in Kbytes.

rxkbyte: integer

Amount of data received, in Kbytes.

Example
{
  "id": 1,
  "name": "wwan1",
  "capabilities": {
    "sim": [
      1,
      2
    ],
    "carriers": [
      "ATT",
      "SPRINT"
    ]
  },
  "mode": "umts",
  "signal": {
    "rat": "lte",
    "csq": 14,
    "rssi": -76,
    "rxqual": 1,
    "rscp": -80,
    "ecio": -8.5,
    "rsrp": -107.3,
    "rsrq": -12,
    "indicator": "RSRP",
    "level": 4
  },
  "operatorName": "Chunghwa Telecom",
  "lac": "11114",
  "tac": "",
  "nid": "",
  "cellId": "1249",
  "bid": "",
  "iccId": "",
  "imsi": "466977502877452",
  "imei": "356853050370859",
  "esn": "802202F0",
  "pinRetryRemain": 3,
  "status": "connected",
  "mac": "00:00:00:00:00:00",
  "ip": "111.70.146.125",
  "netmask": "255.255.255.252",
  "gateway": "111.70.146.126",
  "dns": [
    "168.95.1.1",
    "168.95.192.1"
  ],
  "usage": {
    "txkbyte": 40023,
    "rxkbyte": 3493
  },
  "currentProfileId": 1,
  "enable": true,
  "keepalive": {
    "enable": true,
    "targetHost": "8.8.8.8",
    "intervalSec": 60,
    "reboot": {
      "enable": false,
      "cycles": 1
    }
  },
  "profileId": 1,
  "profileTimeout": 300,
  "profiles": [
    {
      "id": 1,
      "pinCode": "0000",
      "pdpContext": {
        "static": true,
        "id": 1,
        "apn": "internet",
        "type": "ipv4v6",
        "auth": {
          "protocol": "none",
          "username": "",
          "password": ""
        }
      },
      "keepalive": {
        "enable": false
      },
      "init": [
        "sim:1",
        "carrier:ATT"
      ]
    }
  ]
}

CellularCapabilities:

sim: integer[]
integer
carriers: string[]
string
Example
{
  "sim": [
    1,
    2
  ],
  "carriers": [
    "ATT",
    "SPRINT"
  ]
}

CellularStatus: object

name: string

Interface name.

capabilities: object
sim: integer[]
integer
carriers: string[]
string
currentProfileId: integer

Current used profile Id.

mode: string

Given cellular connection mode. Could be one of "umts", "lte".

signal: object

Cellular RF signal strength, include RSSI and EcIo.

rat: string

Given cellular connection mode. Could be one of umts, lte, m1, nb1, none.

csq: integer

Signal quality, Only shows the first part of the response, RSSI (Received signal strength indicator).

rssi: integer

Cellular RF signal strength, in dBm. Value -999 indicates no signal.

rxqual: integer

RxQual is used in GSM and is a part of the Network Measurement Reports (NMR). This is an integer value which can be between 0 and 7 and reflects the quality of voice. 0 is the best quality, 7 is the worst.

rscp: integer

In the UMTS cellular communication system, received signal code power (RSCP, in dBm) denotes the power measured by a receiver on a particular physical communication channel.

ecio: integer

The ratio of the received energy per chip (= code bit) and the interference level, given in dBm.

rsrp: integer

Reference Signal Received Power is an RSSI type of measurement. It is the power of the LTE Reference Signals spread over the full bandwidth and narrowband, given in dBm.

rsrq: integer

Reference Signal Received Quality, Quality considering also RSSI and the number of used Resource Blocks (N) RSRQ = (N * RSRP) / RSSI measured over the same bandwidth. RSRQ is a C/I type of measurement and it indicates the quality of the received reference signal, given in dB.

indicator: string

The indicator is either RSSI for 2G/3G or RSRP for 4G and none if no signal.

level: integer

Signal levels defined in 6 degrees 0 ~ 5. The mapping is no signal, very poor, poor, fair, good, and excellent.

operatorName: string

Indicate current operator name if exist.

lac: string

Location area code.

tac: string

Tracking area code (LTE).

nid: string

Network ID (CDMA).

cellId: string

Cell ID.

bid: string

Base station ID (CDMA).

iccId: string

ICC ID of SIM card.

imsi: string

IMSI of SIM card.

imei: string

IMEI of cellular module.

esn: string

ESN of cellular module.

pinRetryRemain: integer

PIN Retry remaining.

status: string initializing, nosim, pin, puk, ready, connecting, connect_failure, connected, power_cycle, service_searching, service_attached, pin_error, switching_carrier

Indicate current status of cellular connection.

  • initializing: get module and SIM card info, unlock SIM card if necessary

  • nosim: no SIM card or unknown error with SIM card status

  • pin: SIM card is locked with a PIN code

  • ready: SIM card is ready for connect (unlocked or lock is disabled)

  • connecting: during connect state

  • connect_failure: connect failed or keepalive failed (if keepalive enabled)

  • connected: connect success with keepalive success or success with keepalive disabled

  • power_cycle: power cycle the module to recover issues

  • service_searching: roaming

  • service_attached: attached with a base station

  • pin_error: PIN code error

  • switching_carrier: module is switching carrier

mac: string

The identical MAC address.

ip: string

IP address. "" when not connected.

netmask: string

Subnet mask. "" when not connected.

gateway: string

Gateway IP address. "" when not connected.

dns: string[]

A list of DNS IP addresses. [] when not connected.

string
usage: object

Data usage.

txkbyte: integer

Amount of data transmitted, in Kbytes.

rxkbyte: integer

Amount of data received, in Kbytes.

Example
{
  "name": "string",
  "capabilities": {
    "sim": [
      1,
      2
    ],
    "carriers": [
      "ATT",
      "SPRINT"
    ]
  },
  "currentProfileId": "integer",
  "mode": "string",
  "signal": {
    "rat": "string",
    "csq": "integer",
    "rssi": "integer",
    "rxqual": "integer",
    "rscp": "integer",
    "ecio": "integer",
    "rsrp": "integer",
    "rsrq": "integer",
    "indicator": "string",
    "level": "integer"
  },
  "operatorName": "string",
  "lac": "string",
  "tac": "string",
  "nid": "string",
  "cellId": "string",
  "bid": "string",
  "iccId": "string",
  "imsi": "string",
  "imei": "string",
  "esn": "string",
  "pinRetryRemain": "integer",
  "status": "string",
  "mac": "string",
  "ip": "string",
  "netmask": "string",
  "gateway": "string",
  "dns": [
    "string"
  ],
  "usage": {
    "txkbyte": 40023,
    "rxkbyte": 3493
  }
}

CellularSettings:

enable: boolean

Enable Cellular Networking.

id: integer

Identifier for an Cellular interface.

profileId: integer

Specify profile to connect, 0 for connect and retry automatically.

profileTimeout: integer 60 ≤ x ≤ 86399

Retry timeout in seconds for static APN to switch primary to secondary settings.

profiles: object[]

Profiles for redundency

object
id: integer

Identifier for an Cellular interface.

name: string (up to 100 chars)

Alias name for the profile.

pdpContext: object

PDP context data for dialing up to Cellular Network.

static: boolean

Use static APN or dynamic.

id: integer 1 ≤ x ≤ 16

Specifies PDP context id.

apn: string

Edit APN of the specified PDP context.

type: string ipv4, ipv6, ipv4v6

Indicate the PDP type to use.

auth: object

The negotiated authentication.

protocol: string none, chap, pap, both

The negotiated authentication protocol.

username: string (up to 255 chars)

Username for PAP and/or CHAP.

password: string (up to 255 chars)

Password for PAP and/or CHAP.

pinCode: string

PIN code of SIM card. Takes no effect when SIM card PIN weren't not set.

init: string[]

Initialize process before executing the profile.

  • sim:<sim-slot>

  • carrier:<carrier>

string
keepalive: object
enable: boolean

Enable/disable Cellular connection keep-alive by ping.

targetHost: string

IP address to ping.

intervalSec: integer 60 ≤ x ≤ 86399

Check alive interval.

reboot: object

Reboot system while check alive failed after a defined cycle(s).

enable: boolean

Enable/disable reboot policy for check alive failed.

cycles: integer 1 ≤ x ≤ 48

Define cycles to check if reboot is required; a cycle is a global value defined by system, default should be 20 minutes.

Example
{
  "id": 1,
  "enable": true,
  "keepalive": {
    "enable": true,
    "targetHost": "8.8.8.8",
    "intervalSec": 60,
    "reboot": {
      "enable": false,
      "cycles": 1
    }
  },
  "profileId": 1,
  "profileTimeout": 300,
  "profiles": [
    {
      "id": 1,
      "pinCode": "0000",
      "pdpContext": {
        "static": true,
        "id": 1,
        "apn": "internet",
        "type": "ipv4v6",
        "auth": {
          "protocol": "none",
          "username": "",
          "password": ""
        }
      },
      "keepalive": {
        "enable": false
      },
      "init": [
        "sim:1",
        "carrier:ATT"
      ]
    },
    {
      "id": 2,
      "pdpContext": {
        "id": 3,
        "static": false,
        "apn": "",
        "type": "ipv4",
        "auth": {
          "protocol": "none",
          "username": "",
          "password": ""
        }
      },
      "keepalive": {
        "targetHost": "1.2.3.4"
      },
      "init": [
        "carrier:VZW"
      ]
    }
  ]
}

Usage: object

Data usage.

txkbyte: integer

Amount of data transmitted, in Kbytes.

rxkbyte: integer

Amount of data received, in Kbytes.

Example
{
  "txkbyte": 40023,
  "rxkbyte": 3493
}

Keepalive: object

enable: boolean

Enable/disable Cellular connection keep-alive by ping.

targetHost: string

IP address to ping.

intervalSec: integer 60 ≤ x ≤ 86399

Check alive interval.

reboot: object

Reboot system while check alive failed after a defined cycle(s).

enable: boolean

Enable/disable reboot policy for check alive failed.

cycles: integer 1 ≤ x ≤ 48

Define cycles to check if reboot is required; a cycle is a global value defined by system, default should be 20 minutes.

Example
{
  "enable": true,
  "targetHost": "8.8.8.8",
  "intervalSec": 60,
  "reboot": {
    "enable": false,
    "cycles": 1
  }
}

KeepaliveReboot: object

Reboot system while check alive failed after a defined cycle(s).

enable: boolean

Enable/disable reboot policy for check alive failed.

cycles: integer 1 ≤ x ≤ 48

Define cycles to check if reboot is required; a cycle is a global value defined by system, default should be 20 minutes.

Example
{
  "enable": true,
  "targetHost": "8.8.8.8",
  "intervalSec": 60,
  "reboot": {
    "enable": false,
    "cycles": 1
  }
}

CellularProfile: object

id: integer

Identifier for an Cellular interface.

name: string (up to 100 chars)

Alias name for the profile.

pdpContext: object

PDP context data for dialing up to Cellular Network.

static: boolean

Use static APN or dynamic.

id: integer 1 ≤ x ≤ 16

Specifies PDP context id.

apn: string

Edit APN of the specified PDP context.

type: string ipv4, ipv6, ipv4v6

Indicate the PDP type to use.

auth: object

The negotiated authentication.

protocol: string none, chap, pap, both

The negotiated authentication protocol.

username: string (up to 255 chars)

Username for PAP and/or CHAP.

password: string (up to 255 chars)

Password for PAP and/or CHAP.

pinCode: string

PIN code of SIM card. Takes no effect when SIM card PIN weren't not set.

init: string[]

Initialize process before executing the profile.

  • sim:<sim-slot>

  • carrier:<carrier>

string
Example
{
  "id": 1,
  "pinCode": "0000",
  "pdpContext": {
    "static": true,
    "id": 1,
    "apn": "internet",
    "type": "ipv4v6",
    "auth": {
      "protocol": "none",
      "username": "",
      "password": ""
    }
  },
  "keepalive": {
    "enable": false
  },
  "init": [
    "sim:1",
    "carrier:ATT"
  ]
}

CellularCarrierInfo: object

Display current, preferred, available carrier properties, if current carrier is not equal to preferred carrier irmware, you should check your configuration. (fwver, config, carrier mismatch?).

switchable: boolean

Cellular carrier could be switched or not.

current: string (up to 32 chars)

Carrier name

preferred: string (up to 32 chars)

Carrier name

available: string[]
string (up to 32 chars)

Carrier name

Example
{
  "switchable": true,
  "current": "ATT",
  "preferred": "ATT",
  "available": [
    "ATT",
    "VZW"
  ]
}

CellularFirmwareInfo: object

Display current, preferred, available firmware properties, if current firmware is not equal to preferred firmware, you should check your configuration. (fwver, config, carrier mismatch?).

switchable: boolean

Cellular firmware could be switched or not.

current: object
fwver: string (up to 32 chars)

Firmware version

config: string (up to 32 chars)

Config name

carrier: string (up to 32 chars)

Carrier name

preferred: object
fwver: string (up to 32 chars)

Firmware version

config: string (up to 32 chars)

Config name

carrier: string (up to 32 chars)

Carrier name

available: object[]
object
fwver: string (up to 32 chars)

Firmware version

config: string (up to 32 chars)

Config name

carrier: string (up to 32 chars)

Carrier name

Example
{
  "switchable": true,
  "current": {
    "fwver": "05.05.58.01",
    "config": "ATT_005.029_001",
    "carrier": "ATT"
  },
  "preferred": {
    "fwver": "05.05.58.01",
    "config": "ATT_005.029_001",
    "carrier": "ATT"
  },
  "available": [
    {
      "fwver": "05.05.58.01",
      "config": "ATT_005.029_001",
      "carrier": "ATT"
    },
    {
      "fwver": "05.05.58.02",
      "config": "VZW_005.029_002",
      "carrier": "VZW"
    }
  ]
}

CellularCarrierName: string

Carrier name

CellularCarrierEntry: object

carrier: string (up to 32 chars)

Carrier name

Example
{
  "carrier": "VZW"
}

CellularFirmwareEntry: object

fwver: string (up to 32 chars)

Firmware version

config: string (up to 32 chars)

Config name

carrier: string (up to 32 chars)

Carrier name

Example
{
  "fwver": "05.05.58.01",
  "config": "ATT_005.029_001",
  "carrier": "ATT"
}

CellularStatus_signal:

Cellular RF signal strength, include RSSI and EcIo.

rat: string

Given cellular connection mode. Could be one of umts, lte, m1, nb1, none.

csq: integer

Signal quality, Only shows the first part of the response, RSSI (Received signal strength indicator).

rssi: integer

Cellular RF signal strength, in dBm. Value -999 indicates no signal.

rxqual: integer

RxQual is used in GSM and is a part of the Network Measurement Reports (NMR). This is an integer value which can be between 0 and 7 and reflects the quality of voice. 0 is the best quality, 7 is the worst.

rscp: integer

In the UMTS cellular communication system, received signal code power (RSCP, in dBm) denotes the power measured by a receiver on a particular physical communication channel.

ecio: integer

The ratio of the received energy per chip (= code bit) and the interference level, given in dBm.

rsrp: integer

Reference Signal Received Power is an RSSI type of measurement. It is the power of the LTE Reference Signals spread over the full bandwidth and narrowband, given in dBm.

rsrq: integer

Reference Signal Received Quality, Quality considering also RSSI and the number of used Resource Blocks (N) RSRQ = (N * RSRP) / RSSI measured over the same bandwidth. RSRQ is a C/I type of measurement and it indicates the quality of the received reference signal, given in dB.

indicator: string

The indicator is either RSSI for 2G/3G or RSRP for 4G and none if no signal.

level: integer

Signal levels defined in 6 degrees 0 ~ 5. The mapping is no signal, very poor, poor, fair, good, and excellent.

Example
{
  "rat": "string",
  "csq": "integer",
  "rssi": "integer",
  "rxqual": "integer",
  "rscp": "integer",
  "ecio": "integer",
  "rsrp": "integer",
  "rsrq": "integer",
  "indicator": "string",
  "level": "integer"
}

CellularProfile_pdpContext_auth:

The negotiated authentication.

protocol: string none, chap, pap, both

The negotiated authentication protocol.

username: string (up to 255 chars)

Username for PAP and/or CHAP.

password: string (up to 255 chars)

Password for PAP and/or CHAP.

Example
{
  "protocol": "string",
  "username": "string",
  "password": "string"
}

CellularProfile_pdpContext:

PDP context data for dialing up to Cellular Network.

static: boolean

Use static APN or dynamic.

id: integer 1 ≤ x ≤ 16

Specifies PDP context id.

apn: string

Edit APN of the specified PDP context.

type: string ipv4, ipv6, ipv4v6

Indicate the PDP type to use.

auth: object

The negotiated authentication.

protocol: string none, chap, pap, both

The negotiated authentication protocol.

username: string (up to 255 chars)

Username for PAP and/or CHAP.

password: string (up to 255 chars)

Password for PAP and/or CHAP.

Example
{
  "static": "boolean",
  "id": "integer",
  "apn": "string",
  "type": "string",
  "auth": {
    "protocol": "string",
    "username": "string",
    "password": "string"
  }
}

CustomEquipment: object

Custom Equipment object

id: integer

ID of equipment

equipmentName: string

Name of custom equipment

equipmentTags: object[]

Tag List of custom equipment

object

Equipment's tag entry

name: string (1 to 255 chars)

Name of tag

dataType: string boolean, uint16, uint32, uint64, int16, int32, int64, float32, float64, string, bytearray

Data type of tag

access: string ro, wo, rw

Access type of tag

size: integer

Size of tag in byte

description: string (up to 65535 chars)

Description of tag

Example
{
  "id": "integer",
  "equipmentName": "string",
  "equipmentTags": [
    {
      "name": "string",
      "dataType": "string",
      "access": "string",
      "size": "integer",
      "description": "string"
    }
  ]
}

CustomEquipmentTag: object

Equipment's tag entry

name: string (1 to 255 chars)

Name of tag

dataType: string boolean, uint16, uint32, uint64, int16, int32, int64, float32, float64, string, bytearray

Data type of tag

access: string ro, wo, rw

Access type of tag

size: integer

Size of tag in byte

description: string (up to 65535 chars)

Description of tag

Example
{
  "name": "string",
  "dataType": "string",
  "access": "string",
  "size": "integer",
  "description": "string"
}

LogProfile:

id: integer
enable: boolean true

Enable Log Profile

name: string (2 to 255 chars)

Name of Log Profile

archiver: object

Archiver Options for Log Profile

destination: string

Archive files' place, refer to "/mxc/logprofile/destination:name"

thresholdBytePerFile: integer x ≥ 1048576

Maximum size of an archive file (byte)

directorySizeLimitByte: integer x ≥ 10240

Maximum archive folder size (byte)

archivesToKeep: integer 1 ≤ x ≤ 1000

Maximum count of archive files

uploader: object

Uploader Options for Log Profile

httpPost: object
url: string

Upload url

enableAuth: boolean

Enable HTTP Basic Authication

authentication: object
username: string

Username for HTTP Basic Authication

password: string

Password of HTTP Basic Authication

headerList: object[]

HTTP/HTTPS headers list

object
name: string

Name of headers

value: string

Value of headers

bypassSsl: boolean

Bypass SSL certificate

cronExpr: string

Schedule upload (use cron format)

format: string json, csv, xml

Type of upload file format (supports: json, csv, xml)

compress: string gzip

Compress Algorithm (supports: gzip)

enableCompress: boolean

Enable compress

retryCount: integer

Upload retry count

retryPeriodSec: integer

Upload retry period (seconds)

equipmentList: object[]

Collection of equipments using current Log Profile

object

Device Tags Options for Log Profile

equipmentName: string

Name of equipment

equipmentTags: object[]

Equipment Tags List

object
name: string

Name of tag

logOnChange: boolean

Enable log on change

Example
{
  "id": 1,
  "name": "log-profile-1",
  "enable": true,
  "archiver": {
    "destination": "Internal",
    "thresholdBytePerFile": 5242800,
    "directorySizeLimitByte": 10240000,
    "archivesToKeep": 24
  },
  "uploader": {
    "httpPost": {
      "url": "http://host/post",
      "enableAuth": false,
      "authentication": {
        "username": "uploader",
        "password": "password"
      },
      "headerList": [
        {
          "name": "Content-Type",
          "value": "application/json"
        },
        {
          "name": "User-Agent",
          "value": "Mozilla/5.0"
        }
      ],
      "bypassSsl": true,
      "cronExpr": "0 * * * *",
      "format": "json",
      "compress": "gzip",
      "enableCompress": true,
      "retryCount": 3,
      "retryPeriodSec": 3
    }
  },
  "equipmentList": [
    {
      "equipmentName": "My-ioLogik-E2242",
      "equipmentTags": [
        {
          "name": "di0",
          "logOnChange": false
        },
        {
          "name": "di1",
          "logOnChange": false
        },
        {
          "name": "ai0",
          "logOnChange": false
        }
      ]
    },
    {
      "equipmentName": "My-other-ioLogik-E2242",
      "equipmentTags": [
        {
          "name": "di0",
          "logOnChange": false
        },
        {
          "name": "di1",
          "logOnChange": false
        },
        {
          "name": "ai0",
          "logOnChange": false
        }
      ]
    }
  ]
}

Archiver: object

Archiver Options for Log Profile

destination: string

Archive files' place, refer to "/mxc/logprofile/destination:name"

thresholdBytePerFile: integer x ≥ 1048576

Maximum size of an archive file (byte)

directorySizeLimitByte: integer x ≥ 10240

Maximum archive folder size (byte)

archivesToKeep: integer 1 ≤ x ≤ 1000

Maximum count of archive files

Example
{
  "destination": "string",
  "thresholdBytePerFile": "integer",
  "directorySizeLimitByte": "integer",
  "archivesToKeep": "integer"
}

DestinationEntry: object

Archive files' place could be set to

name: string

destination name

directory: string

Archive files' path

Example
{
  "name": "string",
  "directory": "string"
}

Uploader: object

Uploader Options for Log Profile

httpPost: object
url: string

Upload url

enableAuth: boolean

Enable HTTP Basic Authication

authentication: object
username: string

Username for HTTP Basic Authication

password: string

Password of HTTP Basic Authication

headerList: object[]

HTTP/HTTPS headers list

object
name: string

Name of headers

value: string

Value of headers

bypassSsl: boolean

Bypass SSL certificate

cronExpr: string

Schedule upload (use cron format)

format: string json, csv, xml

Type of upload file format (supports: json, csv, xml)

compress: string gzip

Compress Algorithm (supports: gzip)

enableCompress: boolean

Enable compress

retryCount: integer

Upload retry count

retryPeriodSec: integer

Upload retry period (seconds)

Example
{
  "httpPost": {
    "url": "string",
    "enableAuth": "boolean",
    "authentication": {
      "username": "string",
      "password": "string"
    },
    "headerList": [
      {
        "name": "string",
        "value": "string"
      }
    ],
    "bypassSsl": "boolean",
    "cronExpr": "string",
    "format": "string",
    "compress": "string",
    "enableCompress": "boolean",
    "retryCount": "integer",
    "retryPeriodSec": "integer"
  }
}

LogEquipmentEntry: object

Device Tags Options for Log Profile

equipmentName: string

Name of equipment

equipmentTags: object[]

Equipment Tags List

object
name: string

Name of tag

logOnChange: boolean

Enable log on change

Example
{
  "equipmentName": "string",
  "equipmentTags": [
    {
      "name": "string",
      "logOnChange": "boolean"
    }
  ]
}

LogListEquipment: object

Equipment object

equipmentType: string modbus, user, system

Type of equipment

equipmentName: string (1 to 255 chars)

Name of equipment

equipmentTags: object[]

Tag List of equipment

object

Equipment's tag entry

name: string (1 to 255 chars)

Name of tag

dataType: string boolean, uint16, uint32, uint64, int16, int32, int64, float32, float64, string, bytearray

Data type of tag

access: string ro, wo, rw

Access type of tag

size: integer

Size of tag in byte

description: string (up to 4096 chars)

Description of tag

Example
{
  "equipmentType": "string",
  "equipmentName": "string",
  "equipmentTags": [
    {
      "name": "string",
      "dataType": "string",
      "access": "string",
      "size": "integer",
      "description": "string"
    }
  ]
}

LogListEquipmentTag: object

Equipment's tag entry

name: string (1 to 255 chars)

Name of tag

dataType: string boolean, uint16, uint32, uint64, int16, int32, int64, float32, float64, string, bytearray

Data type of tag

access: string ro, wo, rw

Access type of tag

size: integer

Size of tag in byte

description: string (up to 4096 chars)

Description of tag

Example
{
  "name": "string",
  "dataType": "string",
  "access": "string",
  "size": "integer",
  "description": "string"
}

EquipmentTemplate: object

id: integer

ID of equipment template

name: string (3 to 255 chars)

Name of equipment template

tagList: object[]

Tag list of equipment template

object
name: string (2 to 255 chars)

Name of tag

unit: string (up to 255 chars)

Unit of tag

function: string read-coils, read-input-registers, read-discrete-inputs, read-holding-registers, write-single-coil, write-single-register, write-multiple-coils, write-multiple-registers

Function to retrieve the tag value

address: integer 0 ≤ x ≤ 655350

Address of the tag 0x0000(0) <= value <= 0xFFFF(65535)

quantity: integer 1 ≤ x ≤ 655350

Quantity of tag

dataType: string uint16, uint32, uint64, int16, int32, int64, float32, float64, string, boolean, bytearray

Data type of tag

enableByteOrder: boolean

Enable byte order function

byteOrder: string BA, CDAB, DCBA, GHEFCDAB, HGFEDCBA

Switch input byte order

enableInvalidValue: boolean

Enable invalid value function

invalidValue: integer[]

Array size is equals to quantity (if input == INVALID_VALUE, assume the value is not valid)

integer
description: string (up to 65535 chars)

User edited description of tag

enableAutoScaling: boolean

Enable auto scaling function

autoScalingMode: string intercept, point

Mode of auto scaling function

autoScaling: object

V = input * S + O output = ((input-sourceMin) * (targetMax-targetMin) / (sourceMax-sourceMin)) + targetMin

slope: number
offset: number
sourceMin: number
sourceMax: number
targetMin: number
targetMax: number
access: string ro, wo, wr

Access type of tag

size: integer

Size of tag in byte

optimizeGrouping: boolean true

enable auto group tag polling optimization

Example
{
  "id": 9,
  "name": "ioLogik-E1260",
  "tagList": [
    {
      "name": "rtdi0",
      "function": "read-input-registers",
      "address": 1536,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi1",
      "function": "read-input-registers",
      "address": 1537,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi2",
      "function": "read-input-registers",
      "address": 1538,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi3",
      "function": "read-input-registers",
      "address": 1539,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi4",
      "function": "read-input-registers",
      "address": 1540,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    },
    {
      "name": "rtdi5",
      "function": "read-input-registers",
      "address": 1541,
      "quantity": 1,
      "dataType": "uint16",
      "enableAutoScaling": 1,
      "autoScalingMode": "intercept",
      "autoScaling": {
        "slope": 0.1,
        "offset": 0
      },
      "description": ""
    }
  ]
}

EquipmentTag: object

name: string (2 to 255 chars)

Name of tag

unit: string (up to 255 chars)

Unit of tag

function: string read-coils, read-input-registers, read-discrete-inputs, read-holding-registers, write-single-coil, write-single-register, write-multiple-coils, write-multiple-registers

Function to retrieve the tag value

address: integer 0 ≤ x ≤ 655350

Address of the tag 0x0000(0) <= value <= 0xFFFF(65535)

quantity: integer 1 ≤ x ≤ 655350

Quantity of tag

dataType: string uint16, uint32, uint64, int16, int32, int64, float32, float64, string, boolean, bytearray

Data type of tag

enableByteOrder: boolean

Enable byte order function

byteOrder: string BA, CDAB, DCBA, GHEFCDAB, HGFEDCBA

Switch input byte order

enableInvalidValue: boolean

Enable invalid value function

invalidValue: integer[]

Array size is equals to quantity (if input == INVALID_VALUE, assume the value is not valid)

integer
description: string (up to 65535 chars)

User edited description of tag

enableAutoScaling: boolean

Enable auto scaling function

autoScalingMode: string intercept, point

Mode of auto scaling function

autoScaling: object

V = input * S + O output = ((input-sourceMin) * (targetMax-targetMin) / (sourceMax-sourceMin)) + targetMin

slope: number
offset: number
sourceMin: number
sourceMax: number
targetMin: number
targetMax: number
access: string ro, wo, wr

Access type of tag

size: integer

Size of tag in byte

Example
{
  "name": "string",
  "unit": "string",
  "function": "string",
  "address": "integer",
  "quantity": "integer",
  "dataType": "string",
  "enableByteOrder": "boolean",
  "byteOrder": "string",
  "enableInvalidValue": "boolean",
  "invalidValue": [
    "integer"
  ],
  "description": "string",
  "enableAutoScaling": "boolean",
  "autoScalingMode": "string",
  "autoScaling": {
    "slope": "number",
    "offset": "number",
    "sourceMin": "number",
    "sourceMax": "number",
    "targetMin": "number",
    "targetMax": "number"
  },
  "access": "string",
  "size": "integer"
}

Interface: object

Interface which connects to modbus devices

id: integer

ID of interface

name: string (2 to 255 chars)

Name of interface

type: string modbus-rtu, modbus-tcp

Type of modbus device

pollingPeriodMs: integer 100 ≤ x ≤ 86400000

Polling period for this interface (ms)

requestTimeoutMs: integer 100 ≤ x ≤ 60000

Request timeout for each devices (ms)

deviceList: object[]
object

Modbus device profile

deviceId: integer 0 ≤ x ≤ 255

ID of device

equipmentTemplate: string (2 to 255 chars)

Name of modbus template

equipmentName: string (3 to 255 chars)

Name of device

status: object

Device current status

connection: boolean

Connection status. If all tag request success, return true, others return false

totalRequestCount: integer

Total number of request count

totalRequestSuccess: integer

Total numver of success request count

totalReadingCount: integer

Total number of reading count

lastPoll: object

Last pulling status

at: string

Pulling Timestamp

elapsedMs: integer

Pulling costs how many milliseconds

requestCount: integer

Number of requests in this pulling

requestSuccess: integer

Number of success requests in this pulling

readingCount: integer

Number of reading in this pulling

config: [object Object], [object Object]
Example
{
  "id": 1,
  "name": "Modbus_Gateway_1",
  "type": "modbus-rtu",
  "config": {
    "dev": "/dev/ttyM0",
    "devDisplayName": "PORT 1",
    "baudRate": 115200,
    "parity": "none",
    "stopBits": 1,
    "intercharTimeoutMs": 100,
    "interframeDelayMs": 0
  },
  "requestTimeoutMs": 500,
  "pollingPeriodMs": 5000,
  "deviceList": []
}

ModbusConfig: object

[object Object], [object Object]
Example
{
  "dev": "string",
  "devDisplayName": "string",
  "baudRate": "integer",
  "parity": "string",
  "stopBits": "integer",
  "intercharTimeoutMs": "integer",
  "host": "string",
  "port": "integer"
}

ModbusTCPConfig: object

Modbus TCP interface config

host: string

HOST of TCP modbus device

port: integer

PORT of TCP modbus device

requestDelayMs: integer 0 ≤ x ≤ 60000 0

request delay (ms)

Example
{
  "host": "string",
  "port": "integer",
  "requestDelayMs": "integer"
}

ModbusRTUConfig: object

Modbus RTU interface config

dev: string (1 to 255 chars)

Physical path of modbus rtu device

devDisplayName: string

Display name of modbus rtu device

baudRate: integer 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200

Baudrate of modbus rtu device

parity: string odd, even, none

Partiy of modbus rtu device

stopBits: integer 0, 1, 2

Stop bits of modbus rtu device

intercharTimeoutMs: integer 0 ≤ x ≤ 60000

Inter char timeout (ms)

interframeDelayMs: integer 0 ≤ x ≤ 60000 0

Inter frame timeout (ms)

Example
{
  "dev": "string",
  "devDisplayName": "string",
  "baudRate": "integer",
  "parity": "string",
  "stopBits": "integer",
  "intercharTimeoutMs": "integer",
  "interframeDelayMs": "integer"
}

DeviceStatus: object

Device current status

connection: boolean

Connection status. If all tag request success, return true, others return false

totalRequestCount: integer

Total number of request count

totalRequestSuccess: integer

Total numver of success request count

totalReadingCount: integer

Total number of reading count

lastPoll: object

Last pulling status

at: string

Pulling Timestamp

elapsedMs: integer

Pulling costs how many milliseconds

requestCount: integer

Number of requests in this pulling

requestSuccess: integer

Number of success requests in this pulling

readingCount: integer

Number of reading in this pulling

Example
{
  "connection": "boolean",
  "totalRequestCount": "integer",
  "totalRequestSuccess": "integer",
  "totalReadingCount": "integer",
  "lastPoll": {
    "at": "string",
    "elapsedMs": "integer",
    "requestCount": "integer",
    "requestSuccess": "integer",
    "readingCount": "integer"
  }
}

Device: object

Modbus device profile

deviceId: integer 0 ≤ x ≤ 255

ID of device

equipmentTemplate: string (2 to 255 chars)

Name of modbus template

equipmentName: string (3 to 255 chars)

Name of device

status: object

Device current status

connection: boolean

Connection status. If all tag request success, return true, others return false

totalRequestCount: integer

Total number of request count

totalRequestSuccess: integer

Total numver of success request count

totalReadingCount: integer

Total number of reading count

lastPoll: object

Last pulling status

at: string

Pulling Timestamp

elapsedMs: integer

Pulling costs how many milliseconds

requestCount: integer

Number of requests in this pulling

requestSuccess: integer

Number of success requests in this pulling

readingCount: integer

Number of reading in this pulling

Example
{
  "deviceId": "integer",
  "equipmentTemplate": "string",
  "equipmentName": "string",
  "status": {
    "connection": "boolean",
    "totalRequestCount": "integer",
    "totalRequestSuccess": "integer",
    "totalReadingCount": "integer",
    "lastPoll": {
      "at": "string",
      "elapsedMs": "integer",
      "requestCount": "integer",
      "requestSuccess": "integer",
      "readingCount": "integer"
    }
  }
}

ModbusListEquipment: object

Modbus equipment object

equipmentName: string (1 to 255 chars)

Name of equipment

equipmentTags: object[]

Tag List of equipment

object

Equipment's tag entry

name: string (2 to 255 chars)

Name of tag

unit: string

Unit of tag

function: string read-coils, read-input-registers, read-discrete-inputs, read-holding-registers, write-single-coil, write-single-register, write-multiple-coils, write-multiple-registers

Function to retrieve the tag value

address: integer 0 ≤ x ≤ 655350

Address of the tag 0x0000(0) <= value <= 0xFFFF(65535)

quantity: integer 1 ≤ x ≤ 655350

Quantity of tag

type: string uint16, uint32, uint64, int16, int32, int64, float32, float64, string, boolean

Data type of tag

enableByteOrder: boolean

Enable byte order function

byteOrder: string BA, CDAB, DCBA, GHEFCDAB, HGFEDCBA

Switch input byte order

enableInvalidValue: boolean

Enable invalid value function

invalidValue: integer[]

Array size is equals to quantity (if input == INVALID_VALUE, assume the value is not valid)

integer
description: string (up to 65535 chars)

User edited description of tag

enableAutoScaling: boolean

Enable auto scaling function

autoScalingMode: string intercept, point

Mode of auto scaling function

autoScaling: object

V = input * S + O output = ((input-sourceMin) * (targetMax-targetMin) / (sourceMax-sourceMin)) + targetMin

slope: number
offset: number
sourceMin: number
sourceMax: number
targetMin: number
targetMax: number
Example
{
  "equipmentName": "string",
  "equipmentTags": [
    {
      "name": "string",
      "unit": "string",
      "function": "string",
      "address": "integer",
      "quantity": "integer",
      "type": "string",
      "enableByteOrder": "boolean",
      "byteOrder": "string",
      "enableInvalidValue": "boolean",
      "invalidValue": [
        "integer"
      ],
      "description": "string",
      "enableAutoScaling": "boolean",
      "autoScalingMode": "string",
      "autoScaling": {
        "slope": "number",
        "offset": "number",
        "sourceMin": "number",
        "sourceMax": "number",
        "targetMin": "number",
        "targetMax": "number"
      }
    }
  ]
}

ModbusListEquipmentTag: object

Equipment's tag entry

name: string (2 to 255 chars)

Name of tag

unit: string

Unit of tag

function: string read-coils, read-input-registers, read-discrete-inputs, read-holding-registers, write-single-coil, write-single-register, write-multiple-coils, write-multiple-registers

Function to retrieve the tag value

address: integer 0 ≤ x ≤ 655350

Address of the tag 0x0000(0) <= value <= 0xFFFF(65535)

quantity: integer 1 ≤ x ≤ 655350

Quantity of tag

type: string uint16, uint32, uint64, int16, int32, int64, float32, float64, string, boolean

Data type of tag

enableByteOrder: boolean

Enable byte order function

byteOrder: string BA, CDAB, DCBA, GHEFCDAB, HGFEDCBA

Switch input byte order

enableInvalidValue: boolean

Enable invalid value function

invalidValue: integer[]

Array size is equals to quantity (if input == INVALID_VALUE, assume the value is not valid)

integer
description: string (up to 65535 chars)

User edited description of tag

enableAutoScaling: boolean

Enable auto scaling function

autoScalingMode: string intercept, point

Mode of auto scaling function

autoScaling: object

V = input * S + O output = ((input-sourceMin) * (targetMax-targetMin) / (sourceMax-sourceMin)) + targetMin

slope: number
offset: number
sourceMin: number
sourceMax: number
targetMin: number
targetMax: number
Example
{
  "name": "string",
  "unit": "string",
  "function": "string",
  "address": "integer",
  "quantity": "integer",
  "type": "string",
  "enableByteOrder": "boolean",
  "byteOrder": "string",
  "enableInvalidValue": "boolean",
  "invalidValue": [
    "integer"
  ],
  "description": "string",
  "enableAutoScaling": "boolean",
  "autoScalingMode": "string",
  "autoScaling": {
    "slope": "number",
    "offset": "number",
    "sourceMin": "number",
    "sourceMax": "number",
    "targetMin": "number",
    "targetMax": "number"
  }
}

DHCPServer: object

DHCP Server configuration

available: boolean

DHCP server is available or not (the interface must be "static IP" and/or worked as a WiFi AP), default should be false.

name: string (1 to 255 chars)

Name of dhcp server

enable: boolean

Enable dhcp server

netmask: string (7 to 15 chars)

Netmask of dhcp server

startIp: string (7 to 15 chars)

Range IP start

endIp: string (7 to 15 chars)

Range IP end

domainNameServers: string[]

Domain name servers

string (7 to 15 chars)
domainName: string (up to 255 chars)

Domain name

leaseTime: integer 60 ≤ x ≤ 65535

Lease time of dhcp pool

Example
{
  "id": 1,
  "name": "eth0",
  "available": false,
  "enable": false,
  "subnet": "192.168.3.0",
  "netmask": "255.255.255.0",
  "startIp": "192.168.3.100",
  "endIp": "192.168.3.150",
  "domainNameServers": [
    "8.8.8.8",
    "1.1.1.1",
    "2.2.2.2"
  ],
  "domainName": "cloud5566",
  "leaseTime": "3600"
}

DHCPServerCollection: object

Collection of DHCP Servers and overview status

status: boolean

DHCP Server is enable or not

collection: object[]

All of dhcp server instance config

object

DHCP Server configuration

available: boolean

DHCP server is available or not (the interface must be "static IP" and/or worked as a WiFi AP), default should be false.

name: string (1 to 255 chars)

Name of dhcp server

enable: boolean

Enable dhcp server

netmask: string (7 to 15 chars)

Netmask of dhcp server

startIp: string (7 to 15 chars)

Range IP start

endIp: string (7 to 15 chars)

Range IP end

domainNameServers: string[]

Domain name servers

string (7 to 15 chars)
domainName: string (up to 255 chars)

Domain name

leaseTime: integer 60 ≤ x ≤ 65535

Lease time of dhcp pool

Example
{
  "status": true,
  "collection": [
    {
      "id": 1,
      "name": "eth0",
      "available": false,
      "enable": false,
      "subnet": "192.168.3.0",
      "netmask": "255.255.255.0",
      "startIp": "192.168.3.100",
      "endIp": "192.168.3.150",
      "domainNameServers": [
        "8.8.8.8",
        "1.1.1.1",
        "2.2.2.2"
      ],
      "domainName": "cloud5566",
      "leaseTime": "3600"
    }
  ]
}

DNS:

source: string

The current dns corresponging source, may be a network interface or fixed for fixed DNS (readonly)

dns: string[]

Current DNS setting(s) (readonly).

string
enableFixed: boolean

Using fixed DNS (true) or by interface (false), false if not given.

fixedDns: string[]

DNS settings if enableFixed is true.

string
Example
{
  "enableFixed": false,
  "fixedDns": [],
  "source": "eth0",
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ]
}

Ethernet:

id: integer

Identifier of an Ethernet interface.

enable: boolean

Set interface UP.

wan: boolean

Define the interface type is WAN (true) or LAN (false)

name: string

Indicate the interface name.

enableDhcp: boolean

Enable (true) the dhcp client or using the static IP (false).

ip: string

IP address for the Ethernet interface.

mac: string

The identical MAC address.

netmask: string

Subnet mask for the Ethernet interface.

subnet: string

A subnet (short for "subnetwork") is an identifiably separate part of an organization's network.

broadcast: string

A broadcast address is a logical address at which all devices connected to a multiple-access communications network are enabled to receive datagrams.

gateway: string

Gateway is a router or a proxy server that routes between networks.

dns: string[]

The Domain Name System (DNS) is a hierarchical distributed naming system for computers, services, or any resource connected to the Internet or a private network.

string
status: boolean

Current status for the Ethernet interface, false for down and true for up.

restart: boolean

true means that view must be restarted after receiving the response.

Example
{
  "id": 1,
  "wan": true,
  "name": "eth0",
  "ip": "192.168.3.127",
  "mac": "FF:FF:FF:FF:FF:FF",
  "netmask": "255.255.255.0",
  "subnet": "192.168.3.0",
  "gateway": "192.168.3.254",
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ],
  "status": true,
  "enable": true,
  "enableDhcp": false
}

UrlInfo: object

Url information

url: string (1 to 4096 chars)

Url address

headers: object

Headers

Example
{
  "url": "https://server/upload",
  "headers": {
    "accessToken": "MOXAMOXA-TEST-SYSTEM"
  }
}

ImportInfo: object

Import information

file: object

Url information

url: string (1 to 4096 chars)

Url address

headers: object

Headers

scopes: string[]

Import scopes (only selected scopes' configuration will be imported)

string modbus, time, dns, ethernet, cellular, openvpn, dhcpd, serial, portforwarding, program, applications, system
Example
{
  "file": {
    "url": "https://server/upload",
    "headers": {
      "accessToken": "MOXAMOXA-TEST-SYSTEM"
    }
  },
  "scopes": [
    "string"
  ]
}

ModbusSlave:

enable: boolean

Enable/Disable ModbusSlave function

host: string

IP or Hostname of Modbus Slave

port: integer

Port number of Modbus Slave

unitId: integer

Modbus Device ID (default 0xFF for Modbus-TCP)

ignoreUnitId: boolean

Ignore Unit ID

anyHost: boolean

Bind Modbus Slave at any network interface

Example
{
  "enable": true,
  "host": "0.0.0.0",
  "port": 502,
  "unitId": 255,
  "ignoreUnitId": false,
  "anyHost": true
}

MappingEntry:

id: integer

Identity for MappingEntry

reference: string

Modbus access address (or offset)

quantity: integer

Modbus access quantity

equipmentName: string (3 to 255 chars)

Equipment Name of Tag

equipmentType: string

Type of Tag

tagName: string (2 to 255 chars)

Tag Name of Tag

Example
{
  "id": 1,
  "reference": "0x40000",
  "quantity": 1,
  "equipmentName": "My_ioLogik-E2242",
  "equipmentType": "modbus",
  "tagName": "ai0"
}

ModbusWriteEquTagReq: object

Modbus Write Request of (Equipment,Tag)

valueType: string
value: object
Example
{
  "valueType": "string",
  "value": "object"
}

ModbusReadRsp: object

Modbus Read Response

equipmentName: string
tagName: string
valueType: string
value: object
Example
{
  "equipmentName": "string",
  "tagName": "string",
  "valueType": "string",
  "value": "object"
}

ModbusWriteRsp: object

Modbus Write Response

equipmentName: string
tagName: string
Example
{
  "equipmentName": "string",
  "tagName": "string"
}

OpenVPN:

enable: boolean

Enable OpenVPN service.

ovpnFileExist: boolean

When OpenVPN configuration file is uploaded, set true.

connection: boolean

When OpenVPN client is connected to server, set true.

vpnRemoteIp: string

IP of OpenVPN server.

vpnLocalIp: string

IP of OpenVPN client.

Example
{
  "enable": true,
  "ovpnFileExist": true,
  "connection": true,
  "vpnRemoteIp": "10.9.8.1",
  "vpnLocalIp": "10.9.8.2"
}

OpenVPNConfig:

file: object
url: string
headers: object
Example
{
  "file": {
    "url": "http://192.168.31.113:18080/url",
    "headers": {
      "X-Mx-AccessToken": "MOXAMOXA-TEST-SYSTEM"
    }
  }
}

OpenVPNPostConfig:

url: string
headers: object
Example
{
  "url": "http://192.168.31.113:18080/url",
  "headers": {
    "X-Mx-AccessToken": "MOXAMOXA-TEST-SYSTEM"
  }
}

OpenVPNConfigURL:

url: string
Example
{
  "url": "http://192.168.31.113:18080/url"
}

Programs: array

object
id: number

ID of this program

name: string (2 to 255 chars)

Program name

enable: boolean

Enable program

startMode: string boot, period

Program start mode

args: string (up to 2048 chars)

arguments

period: number 0 ≤ x ≤ 65535

Period execution time (unit minutes)

timeout: number 0 ≤ x ≤ 65535

execution timeout (in seconds, 0 means no timeout)

lastExcutedTime: string (date-time)

Last program has been excuted time (iso 8601)

fileExist: boolean

User program uploaded or not

logsExist: boolean

Logs avaliable for download or not

Example
{
  "id": 1,
  "name": "my-user-program",
  "enable": true,
  "startMode": "period",
  "args": "--url http://localhost",
  "period": 10,
  "timeout": 1,
  "lastExcutedTime": "2017-01-09T06:46:01.181Z",
  "fileExist": true,
  "logsExist": true,
  "file": {
    "url": "http://remote-download-url/file.tar.gz",
    "headers": {
      "authorization": "xxxxxxx"
    }
  }
}

Program: object

id: number

ID of this program

name: string (2 to 255 chars)

Program name

enable: boolean

Enable program

startMode: string boot, period

Program start mode

args: string (up to 2048 chars)

arguments

period: number 0 ≤ x ≤ 65535

Period execution time (unit minutes)

timeout: number 0 ≤ x ≤ 65535

execution timeout (in seconds, 0 means no timeout)

lastExcutedTime: string (date-time)

Last program has been excuted time (iso 8601)

fileExist: boolean

User program uploaded or not

logsExist: boolean

Logs avaliable for download or not

Example
{
  "id": 1,
  "name": "my-user-program",
  "enable": true,
  "startMode": "period",
  "args": "--url http://localhost",
  "period": 10,
  "timeout": 1,
  "lastExcutedTime": "2017-01-09T06:46:01.181Z",
  "fileExist": true,
  "logsExist": true,
  "file": {
    "url": "http://remote-download-url/file.tar.gz",
    "headers": {
      "authorization": "xxxxxxx"
    }
  }
}

UpdateProgram:

id: number

ID of this program

name: string (2 to 255 chars)

Program name

enable: boolean

Enable program

startMode: string boot, period

Program start mode

args: string (up to 2048 chars)

arguments

period: number 0 ≤ x ≤ 65535

Period execution time (unit minutes)

timeout: number 0 ≤ x ≤ 65535

execution timeout (in seconds, 0 means no timeout)

lastExcutedTime: string (date-time)

Last program has been excuted time (iso 8601)

fileExist: boolean

User program uploaded or not

logsExist: boolean

Logs avaliable for download or not

file: object
url: string

Download link

header: object

Headers for download link

Example
{
  "file": {
    "url": "http://remote-download-url/file.tar.gz",
    "headers": {
      "authorization": "xxxxxxx"
    }
  },
  "id": 1,
  "name": "my-user-program",
  "enable": true,
  "startMode": "period",
  "args": "--url http://localhost",
  "period": 10,
  "timeout": 1,
  "lastExcutedTime": "2017-01-09T06:46:01.181Z",
  "fileExist": true,
  "logsExist": true
}

Upload: object

file: object
url: string

Download link

header: object

Headers for download link

Example
{
  "file": {
    "url": "string",
    "header": "object"
  }
}

Download:

url: string
headers: object
Example
{
  "url": "http://download/file"
}

DefaultRoute:

interface: string

Indicate the interface name (readonly).

gateway: string

Gateway is a router or a proxy server that routes between networks (readonly).

priorityList: string[]
string (2 to 255 chars)

interface for default route

Example
{
  "interface": "eth0",
  "gateway": "192.168.3.254",
  "priorityList": [
    "wwan0",
    "eth0"
  ]
}

PortMapping:

id: integer

Identifier for a Port Mapping rule.

enable: boolean

Indicate to enable (true) or disable (false) the rule.

service: string (up to 255 chars)

The service name for Port Mapping.

extPort: object

External port(s) of the rule.

start: integer 1 ≤ x ≤ 65535

Start port of the rule.

end: integer 1 ≤ x ≤ 65535

End port of the rule.

intPort: object

Internal port(s) of the rule.

start: integer 1 ≤ x ≤ 65535

Start port of the rule.

end: integer 1 ≤ x ≤ 65535

End port of the rule.

intIp: string

Destination IP address for the rule.

protocol: string tcp, udp, both

Specify the protocol for the rule.

Example
{
  "id": 1,
  "enable": true,
  "service": "http",
  "extPort": {
    "start": 8080,
    "end": 8080
  },
  "intPort": {
    "start": 80,
    "end": 80
  },
  "intIp": "192.168.5.123",
  "protocol": "tcp"
}

SSNAT:

id: integer

Identifier for a simple SNAT rule.

enable: boolean

Indicate to enable (true) or disable (false) the rule.

service: string (up to 255 chars)

The service name for simple SNAT. Default to 0.

priority: integer 0 ≤ x ≤ 999

Rule priority, larger number has the higher priority.

portStart: integer 1 ≤ x ≤ 65535

Start port of the rule.

portEnd: integer 1 ≤ x ≤ 65535

End port of the rule.

intIp: string

Internal (source) IP address for the source NAT.

protocol: string tcp, udp, both

Specify the protocol for the rule.

outInterface: string (2 to 255 chars)

Could be the interface name or "wan" to indicate a WAN interface.

Example
{
  "id": 1,
  "enable": true,
  "priority": 0,
  "service": "http",
  "protocol": "both",
  "intIp": "192.168.5.123",
  "portStart": 80,
  "portEnd": 80,
  "outInterface": "wan"
}

FirewallWanHttps:

enable: boolean

Indicate to enable (true) or disable (false) the rule.

Example
{
  "enable": false
}

Serial: object

Serial interface configuration

id: integer

ID of serial interface

dev: string (1 to 1024 chars)

Serial interface physical path

devDisplayName: string

Display name of serial interface

mode: string rs232, rs485-2w, rs422/rs485-4w

Mode of serial interface

Example
{
  "id": 1,
  "dev": "/dev/ttyM0",
  "devDisplayName": "PORT-1",
  "mode": "rs232"
}

Serials: array

Collection of serial interfaces

object

Serial interface configuration

id: integer

ID of serial interface

dev: string (1 to 1024 chars)

Serial interface physical path

devDisplayName: string

Display name of serial interface

mode: string rs232, rs485-2w, rs422/rs485-4w

Mode of serial interface

Example
[
  {
    "id": 1,
    "dev": "/dev/ttyM0",
    "devDisplayName": "PORT-1",
    "mode": "rs232"
  },
  {
    "id": 2,
    "dev": "/dev/ttyM1",
    "devDisplayName": "PORT-2",
    "mode": "rs485-2w"
  },
  {
    "id": 3,
    "dev": "/dev/ttyM2",
    "devDisplayName": "PORT 3",
    "mode": "rs422/rs485-4w"
  }
]

Service: object

Service status / configuration

id: integer

Service ID

enable: boolean

Enable/Disable service

name: string

Name of service

status: string

Current status of service

Example
{
  "id": 1,
  "enable": true,
  "name": "ssh",
  "status": true
}

SystemStatus: object

System status

hostname: string (1 to 63 chars)

Hostname

version: string

Version of system

uptimeSec: string

System uptime (unit: seconds)

cpuUsage: number

CPU usage (in percentage)

memoryUsage: number

System memory usage (in percentage)

memory: integer

System total memory (unit: byte)

disks: object[]
object

Disk information

name: string

Disk alias

mount: string

Mount point

device: string

Physical device node path

usage: object

Usage of this disk

total: integer

Total size (unit: byte)

used: integer

Used size (unit: byte)

free: integer

Free size (unit: byte)

percent: number

Percent of used size

Example
{
  "hostname": "Moxa",
  "version": "1.1.0-1",
  "uptimeSec": 312956,
  "cpuUsage": 5.7,
  "memoryUsage": 63.8,
  "memory": 257286144,
  "disks": [
    {
      "name": "system",
      "mount": "/",
      "device": "rootfs",
      "usage": {
        "total": 770695168,
        "used": 497655808,
        "free": 217038848,
        "percent": 64.6
      }
    },
    {
      "name": "sd1",
      "mount": "/media/sd-mmcblk1p1",
      "device": "/dev/mmcblk1p1",
      "usage": {
        "total": 770695168,
        "used": 497655808,
        "free": 217038848,
        "percent": 64.6
      }
    }
  ]
}

Disk: object

Disk information

name: string

Disk alias

mount: string

Mount point

device: string

Physical device node path

usage: object

Usage of this disk

total: integer

Total size (unit: byte)

used: integer

Used size (unit: byte)

free: integer

Free size (unit: byte)

percent: number

Percent of used size

Example
{
  "name": "string",
  "mount": "string",
  "device": "string",
  "usage": {
    "total": "integer",
    "used": "integer",
    "free": "integer",
    "percent": "number"
  }
}

NetworkInterfaces: array

Network Interfaces

string
Example
{
  "url": "https://server/upload",
  "headers": {
    "accessToken": "MOXAMOXA-TEST-SYSTEM"
  }
}

SystemPassword: object

System Password

password: string (4 to 255 chars)

password

Example
{
  "passowrd": "thisisyourpassword"
}

SystemProperties: object

System Properties

aliasName: string MOXA IoT Gateway (up to 255 chars)

Alias name of this device

gps: object

GPS location information

lat: number (float) 0

latitude

lng: number (float) 0

longitude

Example
{
  "gps": {
    "lat": 121.123,
    "lng": 22.456
  },
  "aliasName": "my iot gateway"
}

CustomPropertiesUpdate: object

Request payload for updating custom property

Example
{
  "myKey": "myValue"
}

SystemPropertiesUpdate: object

Request payload for updating system property

data:
Example
{
  "data": {
    "lat": 121.123,
    "lng": 22.456
  }
}

Equipments: array

system tags

object
equipmentName: string (3 to 255 chars)

equipment name of tags

equipmentTags: object[]

list of tags

object
name: string (1 to 255 chars)

Name of tag

dataType: string boolean, uint16, uint32, uint64, int16, int32, int64, float32, float64, string, bytearray

Data type of tag

access: string ro, wo, rw

Access type of tag

size: integer

Size of tag in byte

description: string (up to 4096 chars)

Description of tag

Example
[
  {
    "equipmentName": "string",
    "equipmentTags": [
      {
        "name": "string",
        "dataType": "string",
        "access": "string",
        "size": "integer",
        "description": "string"
      }
    ]
  }
]

Time: object

Time configuration

time: string

Current system time (format: iso 8601)

timezone: string

Current timezone

ntp: object

NTP configuration

enable: boolean

Enable NTP client

server: string (1 to 2048 chars)

Target NTP server

interval: integer 60 ≤ x ≤ 2592000

Time sync interval in seconds (at least: 60 seconds.)

Example
{
  "time": "2015-03-26T16:27:48.611441Z",
  "timezone": "Asia/Taipei",
  "ntp": {
    "enable": true,
    "server": "pool.ntp.org",
    "interval": 86400
  }
}

NTP: object

NTP configuration

enable: boolean

Enable NTP client

server: string (1 to 2048 chars)

Target NTP server

interval: integer 60 ≤ x ≤ 2592000

Time sync interval in seconds (at least: 60 seconds.)

Example
{
  "enable": false,
  "server": "pool.ntp.org",
  "interval": 86400
}

Timezone: object

Timezone information

zone: object[]

TZ zone list with cca2 and TZ

object

ISO 3166 alpha-2 country code and zone name

cca2: string

ISO 3166 alpha-2 country code

name: string

zone name

offset: string

zone offset (format should be "+0800", etc)

iso3166: object[]

ISO 3166 alpha-2 country codes

object

ISO 3166 alpha-2 country code and country name

cca2: string

ISO 3166 alpha-2 country code

name: string

The usual English name for the coded region

Example
{
  "zone": [
    {
      "cca2": "AD",
      "name": "Europe/Andorra",
      "offset": "+0100"
    },
    {
      "cca2": "AE",
      "name": "Asia/Dubai",
      "offset": "+0400"
    },
    {
      "cca2": "AF",
      "name": "Asia/Kabul",
      "offset": "+0430"
    }
  ],
  "iso3166": [
    {
      "cca2": "AD",
      "name": "Andorra"
    },
    {
      "cca2": "AE",
      "name": "United Arab Emirates"
    },
    {
      "cca2": "AF",
      "name": "Afghanistan"
    }
  ]
}

TimezoneZone: object

ISO 3166 alpha-2 country code and zone name

cca2: string

ISO 3166 alpha-2 country code

name: string

zone name

offset: string

zone offset (format should be "+0800", etc)

Example
{
  "cca2": "string",
  "name": "string",
  "offset": "string"
}

TimezoneIso3166: object

ISO 3166 alpha-2 country code and country name

cca2: string

ISO 3166 alpha-2 country code

name: string

The usual English name for the coded region

Example
{
  "cca2": "string",
  "name": "string"
}

FirmwareInfo: object

Firmware Info

delay: integer

Delay time in seconds before execute the upgrading process

file: object

Remote firmware meta data

url: string (1 to 4096 chars)

URL for downloading firmware

physicalPath: string (1 to 4096 chars)

File's physical path on machine

headers: object

Headers for downloading firmware if necessary

Example
{
  "delay": 3,
  "file": {
    "url": "http://192.168.31.81:5000/api/v1/download/1234",
    "headers": {
      "accessToken": "MOXAMOXA-TEST-SYSTEM"
    }
  }
}

WiFiIface:

id: integer

Identifier for an WiFi interface.

name: string

Interface name.

product: string

Product model of the WiFi module.

mode: string

Given WiFi interface mode. Could be one of "ap", "client".

capabilities: string[]

Indicate current capability that module supports.

string ap, client
enable: boolean

Enable WiFi Networking.

ap: object

Configuration of WiFi AP mode.

enableBlacklist: boolean

Using blacklist or not.

mode: string bg, bgn, ac
ssid: string

SSID of a WiFi AP.

channel: integer
security: object
mode: string none, wpa, wpa2, wpa/wpa2, eap
encryption: string tkip, aes, tkip/aes
password: string

ASCII passphrase (8 ~ 63) or HEX pre-shared key (64) for WPA-Personal, or password for Radius.

radiusServerIp: string
radiusServerPort: integer 1 ≤ x ≤ 65535
radiusSharedSecret: string
broadcastSsid: boolean
shortPreamble: boolean
beacon: integer
ip: string

IP address.

netmask: string

Subnet mask.

client: object

Configuration of WiFi client mode

enableDhcp: boolean

Enable (true) the dhcp client or using the static IP (false).

networks: object[]

List of networks for WiFi client to connect.

object

A WiFi AP configuration.

priority: integer

This field can be used to give higher priority for credentials (and similarly in struct wpa_ssid for network blocks) to change the Interworking automatic networking selection behavior. Default is 0.

ssid: string

SSID of a WiFi AP.

bssid: string

BSSID (MAC) of a WiFi AP.

security: string none, wep, wpa, wpa2, wpa/wpa2, eap

Security of the WiFi AP.

password: string

Password of access point, Could be one of 1. WEP key. Length 5, 13, 16, 29 for ASCII keys or 10, 26, 32, 58 for HEX keys. 2. WPA-PSK key. ASCII passphrase (8 ~ 63) or HEX pre-shared key (64). 3. EAP key. Max length 64

username: string (up to 64 chars)

Username for EAP (Enterprise Access Point).

ip: string

IP address. "" when not connected.

netmask: string

Subnet mask. "" when not connected.

gateway: string

Gateway IP address. "" when not connected.

dns: string[]

A list of DNS IP addresses. [] when not connected.

string
usage: object

Data usage.

txkbyte: integer

Amount of data transmitted, in Kbytes.

rxkbyte: integer

Amount of data received, in Kbytes.

checkalive: object

Keep-alive configuration.

enable: boolean

Enable/disable WiFi connection keep-alive by ping.

targetHost: string

IP address to ping.

intervalSec: integer

Check alive interval.

Example
{
  "id": 1,
  "name": "wlan0",
  "product": "WPEQ-353ACNI",
  "capabilities": [
    "client",
    "ap"
  ],
  "mode": "client",
  "enable": true,
  "status": true,
  "client": {
    "enableDhcp": true,
    "networks": [
      {
        "ssid": "test-none",
        "security": "none"
      },
      {
        "ssid": "test-wpa",
        "security": "wpa",
        "password": "12345678",
        "priority": 5
      },
      {
        "ssid": "test-eap",
        "security": "eap",
        "username": "moxa",
        "password": "moxa",
        "priority": 10
      },
      {
        "ssid": "test-wep",
        "security": "wep",
        "password": "12345",
        "priority": 1
      }
    ],
    "signal": 100,
    "ip": "111.70.146.125",
    "netmask": "255.255.255.252",
    "gateway": "111.70.146.126",
    "dns": [
      "168.95.1.1",
      "168.95.192.1"
    ],
    "usage": {
      "txkbyte": 40023,
      "rxkbyte": 3493
    },
    "checkalive": {
      "enable": true,
      "targetHost": "8.8.8.8",
      "intervalSec": 60
    }
  },
  "ap": {
    "mode": "bg",
    "ssid": "moxa-test",
    "channel": 11,
    "security": {
      "mode": "none"
    }
  }
}

WiFiIfaceBlacklist:

id: integer

Identifier for an WiFi AP blacklist MAC.

mac: string

A MAC address.

description: string

Description of the MAC address.

Example
{
  "id": 1,
  "mac": "01:23:45:67:89:0a",
  "description": "test1"
}

WiFiAP:

bssid: string

BSSID (MAC) of a WiFi AP

ssid: string

SSID of a WiFi AP.

frequency: string

Frequency of a WiFi AP.

signal: integer

Signal of a WiFi AP (in dBm).

security: integer none, wpa, wpa2, wpa/wpa2, eap

Security mode of a WiFi AP (in dBm).

Example
{
  "bssid": "string",
  "ssid": "string",
  "frequency": "string",
  "signal": "integer",
  "security": "integer"
}