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
. If you want to 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-Update-1 pack. Download the WSO2 IoT Server 3.10-Update-1 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.