Advanced Device Search
This section provides the details on how the advanced device search functions. WSO2 IoT Server maintains the details of the devices that are enrolled with it by running a background task. This task adds a few operations to the devices such as the device_info
, device_location
and the application_list
. Further, you can add more device operations and execute the advanced search as explained below:
Prerequisite
This feature is only available on the WSO2 IoT Server 3.10-Update1 pack. Download the WSO2 IoT Server 3.10-Update1 pack to try it out.
Navigate to the respective device types XML file in
<IOTS_HOME>/repository/deployment/server/devicetypes/<DEVICE_TYPE>.xml
file.Add the new operations under the task configurations operations tag as shown below:
<TaskConfiguration> <Enable>true</Enable> <Frequency>600000</Frequency> <TaskClass>org.wso2.carbon.device.mgt.core.task.impl.DeviceDetailsRetrieverTask</TaskClass> <Operations> <Operation> <Name>{OPERATION_CODE}</Name> <RecurrentTimes>{HOW_OFTEN_THE_OPERATION_NEEDS_TO_BE_ADDED}</RecurrentTimes> </Operation> </Operations> </TaskConfiguration>
For
<RecurrentTimes>
define how often the above operation should be called when running the task operationExample: If you define it as 5 that means the operation will be added to the task at every 5th run of the task.
Example:
<TaskConfiguration> <Enable>true</Enable> <Frequency>30000</Frequency> <TaskClass>org.wso2.carbon.device.mgt.core.task.impl.DeviceDetailsRetrieverTask</TaskClass> <Operations> <Operation> <Name>DEVICE_INFO</Name> <RecurrentTimes>1</RecurrentTimes> </Operation> <Operation> <Name>APPLICATION_LIST</Name> <RecurrentTimes>5</RecurrentTimes> </Operation> <Operation> <Name>DEVICE_LOCATION</Name> <RecurrentTimes>1</RecurrentTimes> </Operation> </Operations> </TaskConfiguration>
The user executes the advanced search for devices via the WSO2 device management console or the REST API.
- WSO2 IoTS goes through the search request received via the console or the REST API to check for the following details:
Checks if the values provided for Key field match the
D
EVICE_DETAILS
database table properties.- If the value you defined for the Key field is not a property in the
D
EVICE_DETAILS
table, it will then form akey:value
pair and pass the details to theD
EVICE_INFO
database table in WSO2 IoTS.
- Once WSO2 IoTS aggregates all the results for the given search query the final search result will be provided.