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 EX15 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 EX15 device to create a response

  1. Select a device in Remote Manager that is configured to allow shell access to the admin user, and click Actions > Open Console. Alternatively, log into the EX15 local command line as a user with shell access.

    Depending on your device configuration, you may be presented with an Access selection menu. Type shell to access the device shell.

  2. At the shell prompt, use the python command with no parameters to enter an interactive Python session:

    # python
    Python 3.10.1 (main, Mar 30 2023, 23:47:13) [GCC 11.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    

  3. Import the device_request module:
    >>> from digidevice import device_request
    >>>
  4. 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"
    >>>
  5. Register a callbackup function that will be called when the device receives a SCI request from Remote Manager:
    >>> device_request.register("myTarget", handler)
    >>>

Note Leave the interactive Python session active while completing task two, below. Once you have completed task two, exit the interactive session by using Ctrl-D. You can also exit the session using exit() or quit().

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>