def get_nbr_info(ws): global device_manager info = {} t1 = tlvlib.create_get_tlv64(0, tlvlib.VARIABLE_UNIT_BOOT_TIMER) t2 = tlvlib.create_get_tlv128(0, tlvlib.VARIABLE_SW_REVISION) t3 = tlvlib.create_get_tlv256(device_manager.brm_instance, 0x101) enc, tlvs = tlvlib.send_tlv([t1,t2,t3], "localhost") info['BootedAt'] = tlvlib.get_start_ieee64_time_as_string(tlvs[0].int_value) info['Uptime'] = tlvlib.convert_ieee64_time_to_string(tlvs[0].int_value) info['BorderRouterSW'] = tlvlib.convert_string(tlvs[1].value) info['SerialInterface'] = "/dev/" + tlvlib.convert_string(tlvs[2].value) t1 = tlvlib.create_get_tlv32(device_manager.radio_instance, tlvlib.VARIABLE_RADIO_PAN_ID) t2 = tlvlib.create_get_tlv32(device_manager.radio_instance, tlvlib.VARIABLE_RADIO_CHANNEL) t3 = tlvlib.create_get_tlv128(device_manager.brm_instance, 0x105) enc, tlvs = tlvlib.send_tlv([t1,t2,t3], "localhost") info['PanID'] = "0x%04x"%tlvs[0].int_value info['Channel'] = tlvs[1].int_value info['SerialRadioSW'] = tlvlib.convert_string(tlvs[2].value) ws.sendMessage(json.dumps(info))
def get_nbr_info(ws): global device_manager info = {} t1 = tlvlib.create_get_tlv64(0, tlvlib.VARIABLE_UNIT_BOOT_TIMER) t2 = tlvlib.create_get_tlv128(0, tlvlib.VARIABLE_SW_REVISION) t3 = tlvlib.create_get_tlv256(device_manager.brm_instance, 0x101) enc, tlvs = tlvlib.send_tlv([t1, t2, t3], "localhost") info['BootedAt'] = tlvlib.get_start_ieee64_time_as_string( tlvs[0].int_value) info['Uptime'] = tlvlib.convert_ieee64_time_to_string(tlvs[0].int_value) info['BorderRouterSW'] = tlvlib.convert_string(tlvs[1].value) info['SerialInterface'] = "/dev/" + tlvlib.convert_string(tlvs[2].value) t1 = tlvlib.create_get_tlv32(device_manager.radio_instance, tlvlib.VARIABLE_RADIO_PAN_ID) t2 = tlvlib.create_get_tlv32(device_manager.radio_instance, tlvlib.VARIABLE_RADIO_CHANNEL) t3 = tlvlib.create_get_tlv128(device_manager.brm_instance, 0x105) enc, tlvs = tlvlib.send_tlv([t1, t2, t3], "localhost") info['PanID'] = "0x%04x" % tlvs[0].int_value info['Channel'] = tlvs[1].int_value info['SerialRadioSW'] = tlvlib.convert_string(tlvs[2].value) ws.sendMessage(json.dumps(info))
def tlvtemp(ws, ip): de = ws.get_device_manager().get_device(ip) if de: instance = de.get_instance(tlvlib.INSTANCE_TEMP_GENERIC) if instance: t1 = tlvlib.create_get_tlv32(instance, tlvlib.VARIABLE_TEMPERATURE) try: enc, tlvs = tlvlib.send_tlv(t1, ip) if tlvs[0].error == 0: temperature = tlvs[0].int_value if temperature > 100000: temperature = round((temperature - 273150) / 1000.0, 2) print "\tTemperature:",temperature,"(C)" ws.sendMessage(json.dumps({"temp":temperature,"address":ip})) else: print "\tTemperature error", tlvs[0].error except socket.timeout: print "Temperature - no response from node", ip ws.sendMessage(json.dumps({"error":"No response from node " + ip}))
def tlvtemp(ws, ip): de = ws.get_device_manager().get_device(ip) if de: instance = de.get_instance(tlvlib.INSTANCE_TEMP_GENERIC) if instance: t1 = tlvlib.create_get_tlv32(instance, tlvlib.VARIABLE_TEMPERATURE) try: enc, tlvs = tlvlib.send_tlv(t1, ip) if tlvs[0].error == 0: temperature = tlvs[0].int_value if temperature > 100000: temperature = round((temperature - 273150) / 1000.0, 2) print "\tTemperature:", temperature, "(C)" ws.sendMessage( json.dumps({ "temp": temperature, "address": ip })) else: print "\tTemperature error", tlvs[0].error except socket.timeout: print "Temperature - no response from node", ip ws.sendMessage( json.dumps({"error": "No response from node " + ip}))
arg = 2 if len(sys.argv) > arg: host = sys.argv[arg] print "HOST: ", host arg += 1 if len(sys.argv) > arg: instance = int(sys.argv[arg]) d = tlvlib.discovery(host) print "Product label:", d[0][0], " type: %016x"%d[0][1], " instances:", len(d[1]) print "Booted at:",tlvlib.get_start_ieee64_time_as_string(d[0][2]),"-",tlvlib.convert_ieee64_time_to_string(d[0][2]) if verbose and instance <= 0: t1 = tlvlib.create_get_tlv128(0, tlvlib.VARIABLE_SW_REVISION) t2 = tlvlib.create_get_tlv32(0, tlvlib.VARIABLE_BOOTLOADER_VERSION) t3 = tlvlib.create_get_tlv64(0, tlvlib.VARIABLE_CHASSIS_CAPABILITIES) t4 = tlvlib.create_get_tlv32(0, tlvlib.VARIABLE_RESET_CAUSE) enc, tlvs = tlvlib.send_tlv([t1,t2,t3,t4], host, show_error=False) revision = "" if tlvs[3].error == 0: print "Last reset cause:", tlvlib.get_reset_cause_as_string(tlvs[3].int_value) if tlvs[0].error == 0: revision += "SW revision: " + tlvlib.convert_string(tlvs[0].value) if tlvs[1].error == 0: revision += "\tBootloader: " + str(tlvs[1].int_value) if tlvs[2].error == 0: revision += " Cap.: %016x"%tlvs[2].int_value if revision != "": print revision
if arg < len(sys.argv): usage() instance = tlvlib.find_instance_with_type(host, tlvlib.INSTANCE_LEDS_GENERIC, verbose) if not instance: print "Could not find a leds instance in", host exit() ts = [] # Control leds via bit mask (only on/off) if op is not None: if led is not None: t = tlvlib.create_set_tlv32(instance, op, led) ts.append(t) t = tlvlib.create_get_tlv32(instance, tlvlib.VARIABLE_LED_CONTROL) ts.append(t) enc,tlvs = tlvlib.send_tlv(ts, host) t = tlvs[len(tlvs) - 1] if t.error == 0: print "Current leds:",bin(t.int_value) exit() # Control leds via states (supports multicolor leds) VARIABLE_LED_STATE = 0x105 if state is not None: t = tlvlib.create_set_vector_tlv(instance, VARIABLE_LED_STATE, tlvlib.SIZE32, led - 1, 1, struct.pack("!L", state)) ts.append(t)
def get_image_status(instance, host, port): t = tlvlib.create_get_tlv32(instance, tlvlib.VARIABLE_IMAGE_STATUS) enc, tlvs = tlvlib.send_tlv(t, host, port) if tlvs[0].error == 0: return tlvs[0].int_value return None
print "Failed to discover the device. Probably the device is offline or sleeping." exit() producttype = "%016x" % d[0][1] print "---- Upgrading ----" print "Product label:", d[0][0], " type:", producttype, "instances:", len(d[1]) print "Booted at:", tlvlib.get_start_ieee64_time_as_string( d[0][2]), "-", tlvlib.convert_ieee64_time_to_string(d[0][2]) i = 1 upgrade = 0 for data in d[1]: if data[0] == tlvlib.INSTANCE_IMAGE: print "Instance " + str( data[2]) + ": type: %016x" % data[0], " ", data[1] t1 = tlvlib.create_get_tlv64(i, tlvlib.VARIABLE_IMAGE_VERSION) t2 = tlvlib.create_get_tlv32(i, tlvlib.VARIABLE_IMAGE_STATUS) t3 = tlvlib.create_get_tlv64(i, tlvlib.VARIABLE_IMAGE_TYPE) enc, tlvs = tlvlib.send_tlv([t1, t2, t3], host, port) tlv = tlvs[0] tlvstatus = tlvs[1] tlvtype = tlvs[2] print "\tVersion: %016x" % tlv.int_value, " ", tlvlib.parse_image_version( tlv.int_value), "inc:", str(tlv.int_value & 0x1f) print "\tImage Type: %016x" % tlvtype.int_value, " Status:", tlvlib.get_image_status_as_string( tlvstatus.int_value) if (tlvstatus.int_value & tlvlib.IMAGE_STATUS_ACTIVE) == 0: upgrade = i label = data[1] upgrade_status = tlvstatus.int_value upgrade_version = tlv.int_value upgrade_type = binascii.hexlify(tlvtype.value)
usage() instance = tlvlib.find_instance_with_type(host, tlvlib.INSTANCE_LEDS_GENERIC, verbose) if not instance: print "Could not find a leds instance in", host exit() ts = [] # Control leds via bit mask (only on/off) if op is not None: if led is not None: t = tlvlib.create_set_tlv32(instance, op, led) ts.append(t) t = tlvlib.create_get_tlv32(instance, tlvlib.VARIABLE_LED_CONTROL) ts.append(t) enc, tlvs = tlvlib.send_tlv(ts, host) t = tlvs[len(tlvs) - 1] if t.error == 0: print "Current leds:", bin(t.int_value) exit() # Control leds via states (supports multicolor leds) VARIABLE_LED_STATE = 0x105 if state is not None: t = tlvlib.create_set_vector_tlv(instance, VARIABLE_LED_STATE, tlvlib.SIZE32, led - 1, 1, struct.pack("!L", state)) ts.append(t)
host = sys.argv[arg] print "HOST: ", host arg += 1 if len(sys.argv) > arg: instance = int(sys.argv[arg]) d = tlvlib.discovery(host) print "Product label:", d[0][0], " type: %016x" % d[0][1], " instances:", len( d[1]) print "Booted at:", tlvlib.get_start_ieee64_time_as_string( d[0][2]), "-", tlvlib.convert_ieee64_time_to_string(d[0][2]) if verbose and instance <= 0: t1 = tlvlib.create_get_tlv128(0, tlvlib.VARIABLE_SW_REVISION) t2 = tlvlib.create_get_tlv32(0, tlvlib.VARIABLE_BOOTLOADER_VERSION) t3 = tlvlib.create_get_tlv64(0, tlvlib.VARIABLE_CHASSIS_CAPABILITIES) t4 = tlvlib.create_get_tlv32(0, tlvlib.VARIABLE_RESET_CAUSE) enc, tlvs = tlvlib.send_tlv([t1, t2, t3, t4], host, show_error=False) revision = "" if tlvs[3].error == 0: print "Last reset cause:", tlvlib.get_reset_cause_as_string( tlvs[3].int_value) if tlvs[0].error == 0: revision += "SW revision: " + tlvlib.convert_string(tlvs[0].value) if tlvs[1].error == 0: revision += "\tBootloader: " + str(tlvs[1].int_value) if tlvs[2].error == 0: revision += " Cap.: %016x" % tlvs[2].int_value if revision != "": print revision