Traits and Attributes

Device models in the IoT system are composed of Traits and Attributes:

Traits: Define the capabilities and behaviors a device supports (e.g., OnOff, Brightness, LockUnlock)
Attributes: Configure and customize how traits behave (e.g., brightness range, supported modes, command-only operation)

Trait

type: string

Attribute

Type: Object with name and value properties, where value is an attribute specified structure or type.

Examples of attributes

{
  "name": "sensorProfile",
  "value": {
    "bmi"   : {"Min": 0, "Max":  100, "Unit": "kg/m2"   },
    "vfr"   : {"Min": 0, "Max":   50, "Unit": ""        },
    "bmr"   : {"Min": 0, "Max": 3000, "Unit": "kcal/day"},
    "bf"    : {"Min": 0, "Max":  100, "Unit": "%"       },
    "ma"    : {"Min": 0, "Max":  100, "Unit": ""        },
    "bw"    : {"Min": 0, "Max":  100, "Unit": "%"       },
    "amr"   : {"Min": 0, "Max": 6000, "Unit": "kcal/day"},
    "height": {"Min": 0, "Max":  300, "Unit": "cm"      },
    "weight": {"Min": 0, "Max":  300, "Unit": "kg"      },
    "bm"    : {"Min": 0, "Max":  100, "Unit": "%"       },
    "bn"    : {"Min": 0, "Max":  100, "Unit": "%"       }
  }
}
{
  "name": "intermittent",
  "value": true
}
{ "name": "timeStepRange", "value": {"max": 86400, "min": 0.1, "step": 0.1} }

Traits and Attributes Reference Table

TraitDescriptionRelated Attributes
OnOffPower control (on/off)commandOnlyOnOff, queryOnlyOnOff, intermittent, timeStepRange, supportOnOffDelegated, detectFunctions
BrightnessBrightness controlcommandOnlyBrightness, availableDimmingTypes, fade, colorProfile, brightnessRangeConfigurable
ColorSettingColor control (RGB/HSV)colorModel, colorTemperatureRange, commandOnlyColorSetting
LockUnlockLock/unlock control(No specific attributes)
OpenCloseOpen/close control (doors, blinds)openDirection, queryOnlyOpenClose, discreteOnlyOpenClose, commandOnlyOpenClose, motorReversible
FanSpeedFan speed controlavailableFanSpeeds, reversible, commandOnlyFanSpeed, supportsFanSpeedPercent
HumiditySettingHumidity controlhumiditySetpointRange, commandOnlyHumiditySetting, queryOnlyHumiditySetting, humiditySetpointStep
ModesMode selectionavailableModes, commandOnlyModes
TogglesToggle switchesavailableToggles, commandOnlyToggles
StartStopStart/stop operationspausable, availableZones
TemperatureControlTemperature controltemperatureRange, temperatureStepCelsius, temperatureUnitForUX, queryOnlyTemperatureControl, commandOnlyTemperatureControl
TemperatureSettingThermostat controlavailableThermostatModes, thermostatTemperatureUnit, bufferRangeCelsius, commandOnlyTemperatureSetting, queryOnlyTemperatureSetting, thermostatTemperatureRange
SmartConnectSmart connectioncommandOnlyOnOff, formFactor
UltronCommandUltron device commandsultronCmdList, rebootTime, fwUpgradeTime, postStringAsLog, mqttOnDemand, supportMcuLog
UltronConfigUltron configurationschedulable, periodicity, aperiodicity, sensorSupportNotify, sensorConfigurable, schedulableVersion, supportDefaultActions, availableDimmingTypes, iotConfigurableIntervals, meshConfigurableIntervals, supportGatewayOff, motorReversible
ReportStateState reportingforceUpdateCapability, supportMcuLog
SensorSensor Data functionalitysensorProfile
DetectorDetection functionalitydetectorEvents, detectorSensitivity, detectorCooldownTime
CustomModesCustom mode selectionavailableCustomModes
CustomSlidersCustom slidersavailableCustomSliders
CustomTogglesCustom togglesavailableCustomToggles
SetpointsSetpoint controlavailableRanges
ThermostaticValveThermostatic valvethermostaticValveProfile

Example response of /usr/v5/GetGroupDevices

{
  "result": 0,
  "devices": {
    "BLU303-C026DADDDDDD": {
      "sn": "BLU303-C026DADDDDDD",
      "mac": "C026DADDDDDD",
      "activated": true,
      "ver": {"hwVer": "LUA-API-2", "fwVer": "LUA-EXE-1"},
      "models": {
        "fora_w600_data": { // key is endpoint Name(iotDev, or iotName)
          "type": "ULTRON_SENSOR",
          "traits": ["Sensor"],
          "disabled": false,
          "attrs": [
            {
              "name": "sensorProfile",
              "value": {
                "bmi"   : {"Min": 0, "Max":  100, "Unit": "kg/m2"   },
                "vfr"   : {"Min": 0, "Max":   50, "Unit": ""        },
                "bmr"   : {"Min": 0, "Max": 3000, "Unit": "kcal/day"},
                "bf"    : {"Min": 0, "Max":  100, "Unit": "%"       },
                "ma"    : {"Min": 0, "Max":  100, "Unit": ""        },
                "bw"    : {"Min": 0, "Max":  100, "Unit": "%"       },
                "amr"   : {"Min": 0, "Max": 6000, "Unit": "kcal/day"},
                "height": {"Min": 0, "Max":  300, "Unit": "cm"      },
                "weight": {"Min": 0, "Max":  300, "Unit": "kg"      },
                "bm"    : {"Min": 0, "Max":  100, "Unit": "%"       },
                "bn"    : {"Min": 0, "Max":  100, "Unit": "%"       }
              }
            }
          ]
        },
        "Ultron Device": { // 
          "type": "ULTRON",
          "traits": ["UltronCommand", "ReportState", "UltronConfig"],
          "disabled": false,
          "attrs": [
            {"name": "fwUpgradeTime", "value": 60},
            {
              "name": "sensorConfigurable",
              "value": {
                "fora_w600_data": [
                  "height", "weight", "bmi",    "bmr",    "bf",     "bm",
                  "bn",     "bw",     "vfr",    "amr",    "ma"
                ]
              }
            }
          ]
        }
      },
      "configs": [
        {
          "config": "SensorConfig",
          "items": {
            "sensorConfigs"       : null,
            "reportInterval"      :    1,
            "samplingInterval"    :    1,
            "notificationInterval":    0,
            "firstShot"           :    0,
            "validBefore"         :    0
          }
        }
      ],
      "displayName": "體脂計",
      "iconUrl": "https://storage.googleapis.com/cms-customer-file-beta/BL/BLU303/20220719T055454/icon.png",
      "connType": "BLE", // --> When connectType is BLE => should use `/usr/v5/GetBleTopology`
      "subConnType": "BleConnectAlways",               // to get online status of BLE devices.
      "nonnative": true,
      "createdTime": "2023-03-31T05:40:23.074637Z"
    },
    "UT3702-ESEEEEE": {
      "sn": "UT3702-ESEEEEE",
      "mac": "4C11AEEEEEEE",
      "activated": true,
      "ver": {
        "hwVer"      : "A",
        "fwVer"      : "1.10.02",
        "countryCode": "TW",
        "otaFwVer"   : "1.01.02"
      },
      "models": {
        "OUTLET1": {
          "type": "OUTLET",
          "traits": ["Sensor", "OnOff"],
          "disabled": false,
          "attrs": [
            {
              "name": "sensorProfile",
              "value": {
                "watt_hour": {"Min": 0, "Max": 50000, "Unit": "kWh" },
                "watt"     : {"Min": 0, "Max":  1800, "Unit": "Watt"},
                "current"  : {"Min": 0, "Max": 15000, "Unit": "mA"  },
                "voltage"  : {"Min": 0, "Max":   240, "Unit": "V"   }
              }
            },
            {"value": true, "name": "intermittent"},
            {
              "name": "timeStepRange",
              "value": {"max": 86400, "min": 0.1, "step": 0.1}
            }
          ]
        },
        "Ultron Device": {
          "type": "ULTRON",
          "traits": ["UltronCommand", "ReportState", "UltronConfig"],
          "disabled": false,
          "attrs": [
            {"value": 20, "name": "rebootTime"},
            {"name": "fwUpgradeTime", "value": 60},
            {"name": "iotConfigurableIntervals", "value": true},
            {
              "name": "schedulable",
              "value": { "OUTLET1": ["OnOff"] }
            },
            {"name": "schedulableVersion", "value": 1},
            {"name": "periodicity", "value": true},
            {"value": true, "name": "aperiodicity"},
            {
              "name": "supportDefaultActions",
              "value": {
                "OUTLET1": {
                  "cmdNames"  : ["OnOff"           ],
                  "situations": ["power", "network"]
                }
              }
            }
          ]
        }
      },
      "configs": [
        {
          "config": "DefaultActions",
          "items": {
            "dev": ["OUTLET1"],
            "act": [
              {
                "cmds": [
                  { "command": "OnOff", "params": {"on": true} }
                ]
              },
              {
                "cmds": [
                  { "command": "OnOff", "params": {"on": false} }
                ]
              }
            ],
            "behaviors": [
              {"defaultAction": "power:0:0"   },
              {"defaultAction": "network:0:-1"}
            ]
          }
        },
        {
          "iotName": "OUTLET1",
          "config": "TimeStep",
          "items": {"value": 600, "enabled": true}
        }
      ],
      "displayName": "陽台風扇",
      "fwChannel": "Stable",
      "iconUrl": "https://storage.googleapis.com/cms-customer-file-beta/UT/UT3702/20220719T055519/icon.png",
      "createdTime": "2023-03-31T05:40:23.074637Z"
    },
    "UTU301-ESAAAAA": {
      "sn": "UTU301-ESAAAAA",
      "mac": "38FDFEAAAAAA",
      "activated": true,
      "ver": {"hwVer": "A", "fwVer": "1.11.12", "countryCode": "TW"},
      "models": {
        "Ultron Button": {
          "type": "AIRFORES",
          "traits": ["SmartConnect"],
          "disabled": false,
          "attrs": [
            {"name": "commandOnlyOnOff", "value": false   },
            {"name": "formFactor",       "value": "button"}
          ]
        },
        "Ultron Device": {
          "type": "ULTRON",
          "traits": [
            "UltronCommand",    "BluetoothGateway", "ReportState",
            "ApiResponse",      "UltronConfig"
          ],
          "disabled": false,
          "attrs": [
            {"name": "rebootTime", "value": 20},
            {"name": "fwUpgradeTime", "value": 60},
            {"name": "iotConfigurableIntervals", "value": true},
            {"name": "supportGatewayOff", "value": true},
            {
              "value": { "Ultron Sensor": ["temp", "rh"] },
              "name": "sensorConfigurable"
            }
          ]
        },
        "Ultron Sensor": {
          "type": "ULTRON_SENSOR",
          "traits": ["Sensor"],
          "disabled": false,
          "attrs": [
            {
              "name": "sensorProfile",
              "value": {
                "temp": {"Min": -40, "Max":  85, "Unit": "ºC"},
                "rh"  : {"Min":   0, "Max": 100, "Unit": "%" }
              }
            }
          ]
        },
        "SENSOR": {
          "type": "SENSOR",
          "traits": ["TemperatureControl", "HumiditySetting"],
          "disabled": false,
          "attrs": [
            {
              "name": "temperatureRange",
              "value": {"minThresholdCelsius": -40, "maxThresholdCelsius": 85}
            },
            {"value": "C", "name": "temperatureUnitForUX"},
            {"name": "queryOnlyTemperatureControl", "value": true},
            {"name": "queryOnlyHumiditySetting", "value": true}
          ]
        }
      },
      "configs": [
        {
          "config": "SensorConfig",
          "items": {
            "sensorConfigs"       : null,
            "reportInterval"      :  300,
            "samplingInterval"    :  300,
            "notificationInterval":  900,
            "firstShot"           :    0,
            "validBefore"         :    0
          }
        },
        { "config": "DisableGateway", "items": {"disabled": false} }
      ],
      "displayName": "客廳溫濕度",
      "fwChannel": "Beta",
      "iconUrl": "https://storage.googleapis.com/cms-customer-file-beta/UT/UTU301/20220719T055530/icon.png",
      "createdTime": "2023-04-26T14:09:01.559076Z"
    },
    "UTU307-F565A5BBBBBB": {
      "sn": "UTU307-F565A5BBBBBB",
      "mac": "F565A5BBBBBB",
      "activated": true,
      "ver": {"hwVer": "LUA-API-2", "fwVer": "LUA-EXE-3"},
      "models": {
        "Ultron Device": {
          "type": "ULTRON",
          "traits": ["UltronCommand", "ReportState", "UltronConfig"],
          "disabled": false,
          "attrs": [
            {"name": "fwUpgradeTime", "value": 60},
            {
              "name": "sensorConfigurable",
              "value": { "ULTRON_SENSOR": ["temp", "power", "rh"] }
            }
          ]
        },
        "SENSOR": {
          "type": "SENSOR",
          "traits": ["TemperatureControl", "HumiditySetting"],
          "disabled": false,
          "attrs": [
            {
              "value": {
                "minThresholdCelsius": -50,
                "maxThresholdCelsius": 100
              },
              "name": "temperatureRange"
            },
            {"name": "temperatureUnitForUX", "value": "C"},
            {"name": "queryOnlyTemperatureControl", "value": true},
            {"name": "queryOnlyHumiditySetting", "value": true}
          ]
        },
        "ULTRON_SENSOR": {
          "type": "ULTRON_SENSOR",
          "traits": ["Sensor"],
          "disabled": false,
          "attrs": [
            {
              "name": "sensorProfile",
              "value": {
                "temp" : {"Min": -50, "Max": 100, "Unit": "ºC"},
                "power": {"Min":   0, "Max": 100, "Unit": "%" },
                "rh"   : {"Min":   0, "Max": 100, "Unit": "%" }
              }
            }
          ]
        }
      },
      "configs": [
        {
          "config": "SensorConfig",
          "items": {
            "sensorConfigs": {
              "ULTRON_SENSOR": {
                "power": {
                  "reportInterval": 30,
                  "samplingInterval": 30,
                  "notificationInterval": 30,
                  "details": {
                    "Normal": {
                      "enableAction": false,
                      "triggerInterval": [20, 100],
                      "enableNotification": false
                    },
                    "FallingWarning": {
                      "enableAction": false,
                      "triggerInterval": [10, 20],
                      "enableNotification": true
                    },
                    "FallingCritical": {
                      "enableAction": false,
                      "triggerInterval": [0, 10],
                      "enableNotification": true
                    }
                  }
                }
              }
            },
            "reportInterval": 30,
            "samplingInterval": 30,
            "notificationInterval": 0,
            "firstShot": 0,
            "validBefore": 0
          }
        }
      ],
      "displayName": "房間溫濕度",
      "fwChannel": "Stable",
      "iconUrl": "https://storage.googleapis.com/cms-customer-file-beta/UT/UTU307/20220719T055533/icon.png",
      "connType": "BLE",
      "subConnType": "BleAdvOnly",
      "createdTime": "2023-03-31T05:40:23.074637Z",
      "followers": [
        "3QzRBk5vxYYy1ATOzWzfnTcUMeB3",
        "ikzD1yjLAgSEoNeyDBQpeWaxdcq2",
        "o0wcFFgbulZQwEz044O7tuZfrBq1"
      ]
    },
    "UTU400-ESCCCCC": {
      "sn": "UTU400-ESCCCCC",
      "mappedSN": "BE2200-ESCCCCC",
      "mac": "38FDFECCCCCC",
      "activated": true,
      "certifiedBrand": true,
      "certifiedModel": true,
      "ver": {
        "hwVer"      : "A",
        "fwVer"      : "1.11.13",
        "countryCode": "TW",
        "mcuFwVer"   : "Panasonic | LJ-16690B13"
      },
      "models": {
        "Ultron Sensor": {
          "type": "ULTRON_SENSOR",
          "traits": ["Sensor"],
          "disabled": false,
          "attrs": [
            {
              "name": "sensorProfile",
              "value": {
                "watt_hour" : {"Min":  0, "Max":  25.5, "Unit": "kWh" },
                "temp"      : {"Min": -9, "Max":  60,   "Unit": "ºC"  },
                "filter"    : {"Min":  0, "Max":   1,   "Unit": "bool"},
                "current"   : {"Min":  0, "Max":  25.5, "Unit": "A"   },
                "real_power": {"Min":  0, "Max": 255,   "Unit": "Watt"}
              }
            }
          ]
        },
        "Ultron Sensor 2": {
          "type": "ULTRON_SENSOR",
          "traits": ["Sensor"],
          "disabled": false,
          "attrs": [
            {
              "name": "sensorProfile",
              "value": { "temp": {"Min": -9, "Max": 60, "Unit": "ºC"} }
            }
          ]
        },
        "Ultron Device": {
          "type": "ULTRON",
          "traits": [
            "UltronCommand",    "BluetoothGateway", "ReportState",
            "UltronConfig"
          ],
          "disabled": false,
          "attrs": [
            {"name": "rebootTime", "value": 20},
            {"name": "fwUpgradeTime", "value": 60},
            {"name": "iotConfigurableIntervals", "value": true},
            {"value": true, "name": "postStringAsLog"},
            {
              "value": {
                "Ultron Sensor": [
                  "temp",       "filter",     "current",    "real_power",
                  "watt_hour"
                ],
                "Ultron Sensor 2": ["temp"]
              },
              "name": "sensorConfigurable"
            },
            {
              "name": "schedulable",
              "value": { "AC_UNIT": ["OnOff"] }
            },
            {"name": "periodicity", "value": true}
          ]
        },
        "AC_UNIT": {
          "type": "AC_UNIT",
          "traits": [
            "OnOff",              "TemperatureSetting", "CustomModes",
            "CustomToggles"
          ],
          "disabled": false,
          "attrs": [
            {
              "name" : "availableThermostatModes",
              "value": "cool,dry,fan-only,auto,heat"
            },
            {
              "name": "thermostatTemperatureRange",
              "value": {"minThresholdCelsius": 16, "maxThresholdCelsius": 30}
            },
            {"name": "thermostatTemperatureUnit", "value": "C"},
            {
              "name": "availableCustomModes",
              "value": [
                {
                  "name": "FanSpeed",
                  "settings": ["0", "1", "2", "3", "4", "5"],
                  "ordered": true
                },
                {
                  "name": "StartTimer",
                  "settings": [
                    "0",  "1",  "2",  "3",  "4",  "5",  "6",  "7",  "8",  "9",
                    "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
                    "20", "21", "22", "23", "24"
                  ],
                  "ordered": true
                },
                {
                  "name": "Timer",
                  "settings": [
                    "0",  "1",  "2",  "3",  "4",  "5",  "6",  "7",  "8",  "9",
                    "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
                    "20", "21", "22", "23", "24"
                  ],
                  "ordered": true
                },
                { "name": "Filter", "settings": ["0"], "ordered": true }
              ]
            },
            {
              "name": "availableCustomToggles",
              "value": [
                "SleepMode",     "AirClean",      "SelfCleaning",
                "FastOperation"
              ]
            }
          ]
        }
      },
      "displayName": "客廳冷氣",
      "fwChannel": "Beta",
      "hwType": "PAC",
      "iconUrl": "https://storage.googleapis.com/cms-customer-file-beta/UT/UTU400/20220719T055608/PAC.png",
      "createdTime": "2023-04-26T14:14:06.415193Z"
    }
  }
}