def get_device_id(): """\ Retrieves the Device ID from the Digi device. """ value = "" query_base = '<rci_request version="1.1"><%s><%s/>' \ '</%s></rci_request>' try: query = query_base % ('query_setting', 'mgmtglobal', 'query_setting') raw_data = process_rci_request(query) setting_tree = ElementTree().parsestring(raw_data) device_id = setting_tree.find('deviceId') value = device_id.text except AttributeError: # PLATFORM: this might be an x2e query = query_base % ('query_state', 'device_info', 'query_state') raw_data = process_rci_request(query) setting_tree = ElementTree().parsestring(raw_data) device_id = setting_tree.find('deviceid') value = device_id.text # normalize to the old NDS format if not value.startswith('0x'): value = ''.join(('0x', value)) value = value.replace('-', '') except: _tracer.error("get_device_id(): Unable to retrieve Device ID") raise return value
def simple_rci_query(query_string): """\ Perform an RCI query and return raw RCI response. This query uses only socket operations to POST the HTTP request, it does not rely on any other external libraries. """ return process_rci_request(query_string)
def get_ethernet_mac_string(): """\ Returns the Ethernet MAC address as a string, using RCI 'device_info' Example: "00:40:9D:6A:72:F6" """ if sys.platform == 'digiconnect': # in Connect/ConnectPort, looking for: # <device_info> # <mac>00:40:9d:52:1d:6e</mac> # </device_info> info = query_state("device_info") for item in info: mac = item.find('mac') if mac != None: return mac.text elif sys.platform == 'linux2': # in X2e ZB/3G, looking for # <interface_info name="eth0"> # <mac>00:40:9d:52:1d:6e</mac> # </interface_info> response = process_rci_request( '<rci_request version="1.1"><query_state /></rci_request>') # there may be a cleaner method, but we have multiple possible nodes # like <interface_info name="eth0"> and <interface_info name="wlan0"> # I couldn't find a cleaner way to find <interface_info name="eth0"> if # it is NOT the first interface_info root = ElementTree().parsestring(response) inf_list = root.findall('interface_info') interface_node = None for node in inf_list: if interface_node is None: # save the very first 'interface_info' we find, but keep going interface_node = node if node.attrib['name'] in ('eth0'): # break and use this one interface_node = node break # this will return string like '00:40:9d:5c:1b:05" or None if interface_node is not None: return interface_node.findtext('mac') return None
def get_address(self): """\ Retrieves the current iDigi SMS phone number from the Digi device. """ phnum = "" try: query = '<rci_request version="1.1"><query_setting><idigisms/>' \ '</query_setting></rci_request>' raw_data = process_rci_request(query) setting_tree = ElementTree().parsestring(raw_data) phnum = setting_tree.find("phnum") phnum = phnum.text except Exception, e: self.__tracer.error(e) pass
def get_address(self): """\ Retrieves the current SMS phone number from the Digi device. """ phnum = "" try: query = '<rci_request version="1.1"><query_setting><idigisms/>' \ '</query_setting></rci_request>' raw_data = process_rci_request(query) setting_tree = ElementTree().parsestring(raw_data) phnum = setting_tree.find("phnum") phnum = phnum.text except Exception, e: sms_idigi_client_tracer.error(e) pass
def get_device_id(): """\ Retrieves the Device ID from the Digi device. """ value = "" try: query = '<rci_request version="1.1"><query_setting><mgmtglobal/>' \ '</query_setting></rci_request>' raw_data = process_rci_request(query) setting_tree = ElementTree().parsestring(raw_data) device_id = setting_tree.find("deviceId") value = device_id.text except: _tracer.error("get_device_id(): Unable to retrieve Device ID") raise return value