Example: Update the XBee .gbl firmware synchronously with Python 3.0

import base64
import requests
 
# Location of firmware image
firmware_path = 'XBXC.gbl'
 
# Remote Manager device ID of the device being updated
device_id = '00010000-00000000-03526130-70153378'
 
# Remote Manager username and password
username = "my_Remote_manager_username"
password = "my_remote_manager_password"
 
url = 'https://remotemanager.digi.com/ws/sci'
 
# Get firmware image
fw_file = open(firmware_path, 'rb')
fw_data = fw_file.read()
fw_data = base64.encodebytes(fw_data).decode('utf-8')
 
# Form update_firmware request
data = """
<sci_request version="1.0">
  <update_firmware filename="firmware.gbl">
    <targets>
      <device id="{}"/>
    </targets>
    <data>{}</data>
  </update_firmware>
</sci_request>
""".format(device_id, fw_data)
 
# Post request
r = requests.post(url, auth=(username, password), data=data)
if (r.status_code != 200) or ("error" in r.content.decode('utf-8')):
    print("firmware update failed")
else:
    print("firmware update success")