Use Python to respond to Digi Remote Manager SCI requests

The device_request Python module allows you to interact with Digi Remote Manager by using Remote Manager's Server Command Interface (SCI), a web service that allows users to access information and perform commands that relate to their devices.

Use Remote Manager's SCI interface to create SCI requests that are sent to your EX12-PR device, and use the device_request module to send responses to those requests to Remote Manager.

See the Digi Remote Manager Programmers Guide for more information on SCI.

Task one: Use the device_request module on your EX12-PR device to create a response

  1. Import the device_request module:
    from digidevice import device_request
  2. Create a function to handle the request from Remote Manager:
    def handler(target, request):
         print ("received request %s for target %s" % (request, target))
         return "OK"
    
  3. Register a callbackup function that will be called when the device receives a SCI request from Remote Manager:
    device_request.register("myTarget", handler)

Task two: Create and send an SCI request from Digi Remote Manager

The second step in using the device_request module is to create an SCI request that Remote Manager will forward to the device. For example, you can create in SCI request a the Remote Manager API explorer:

  1. In Remote Manager, click Documentation > API Explorer.
  2. Select the device to use as the SCI target:
    1. Click SCI Targets.
    2. Click Add Targets.
    3. Enter or select the device ID of the device.
    4. Click Add.
    5. Click OK.
  3. Click Examples > SCI > Data Service > Send Request.

    Code similar to the following will be displayed in the HTTP message body text box:

    <sci_request version="1.0">
      <data_service>
      <targets>
        <device id="00000000-00000000-0000FFFF-A83CF6A3"/>
      </targets>
        <requests>
          <device_request target_name="myTarget">
            my payload string
          </device_request>
        </requests>
      </data_service>
    </sci_request>

    Note The value of the target_name parameter in the device_request element must correspond to the target parameter of the device_request.register function in the Python script. In this example, the two are the same.

  4. Click Send.

    Once that the request has been sent to the device, the handler on the device is executed.

    • On the device, you will receive the following output:
      received request
             my payload string
            for target myTarget
      
    • In Remote Manager, you will receive a response similar to the following:
      <sci_reply version="1.0">
        <data_service>
          <device id="00000000-00000000-0000FFFF-A83CF6A3"/>
            <requests>
              <device_request target_name="myTarget" status="0">OK</device_request>
            </requests>
          </device>
        </data_service>
      </sci_request>