This documentation is for WSO2 IoT Server 3.1.0. View the documentation for the latest release.
Page Comparison - Writing Device Plugins via Java Code (v.3 vs v.4) - IoT Server 3.1.0 - WSO2 Documentation

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


  1. Implement an interface for Raspberry Pi. For more information, see the implementation of DeviceManagerService for Raspberry Pi.

    titleWhy is this step required?

    WSO2 IoTS IoT Server can have many device types. These device types will be registered on WSO2 CDMF when the OSGI runtime starts. For the new device type to be registered with the CDMF, it needs to have an interface that the OSGI identifies at its runtime. The DeviceManagementService interface is implemented for this reason. Therefore, it is important that you implement the DeviceManagementService interface extended from org.wso2.carbon.device.mgt.common.spi
    DeviceManagementService. You are able to implement methods unique to a device by overriding the methods defined in the interface.

    Example: Implementing the interface DeviceManagementServiceShown below is the DeviceManagementService interface.

    Code Block
    public interface DeviceManagementService {
        void init() throws DeviceManagementException;
        String getType();
        OperationMonitoringTaskConfig getOperationMonitoringConfig();
        DeviceManager getDeviceManager();
        ApplicationManager getApplicationManager();
        ProvisioningConfig getProvisioningConfig();
        PushNotificationConfig getPushNotificationConfig();
        PolicyMonitoringManager getPolicyMonitoringManager();
    titleClick here to know more about the methods used to create the interface.
    • getType()
      Retrieves the name of the device-type.

    • init()
      The custom initialization implementations need to be included here.

    • getOperationMonitoringConfig()  
      Returns an object, which is an implementation of the org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig interface.
    • getDeviceManager()
      Returns an object, which is an implementation of the interface org.wso2.carbon.device.mgt.common.DeviceManager.

    • getApplicationManager()
      Returns an object, which is an implementation of the interface. 

    • getProvisioningConfig()
      Returns the provisioning details, which includes the name of the tenant domain the device-type needs to be registered to and indicates whether the device-type is to be shared with all the tenants.
      true represents that the device-type should be visible to all tenants and false represents that it is not visible to other tenants.

    • getPolicyMonitoringManager()  
      Returns an object, which is an implementation of the org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager interface.
  2. Implement the DeviceManager interface. For more information, see the implementation the implementation of DeviceManager for Raspberry Pi .

    titleWhy is this step required?

    Implement the interface DeviceManager for Connected Cup Raspberry Pi via the org.wso2.carbon.device.mgt.common.DeviceManager in order to implement the getDeviceManager()method that is shown in step 1. The DeviceManager interface will be used for enrolling, disenrolling, activating and deactivating a device. 

  3. Create a Database Access Object (DAO) on the created DeviceManager interface to manage data source connections.

  4. Register as an OSGI service.

    Code Block
    ServiceRegistration raspberrypiServiceRegRef = bundleContext.registerService(DeviceManagementService.class.getName(), new RaspberrypiManagerService(), null);


    RaspberrypiManagerService is the implementation of the interface showed in step 1.

  5. Start the IoT Server.

    Code Block
    cd <IoTS_HOME>