def main(): zigbee = ZigBeeDevice('/dev/ttyUSB0', 9600) try: zigbee.open() data = 'Zigbee node %s sending data' % (zigbee.get_node_id()) data = data.encode('utf-8') rssi_raw = zigbee.get_parameter("DB") rssi_val = struct.unpack('=B', rssi_raw) print(rssi_val) #packet_receive = zigbee.send_data_broadcast(data) #data_packet = packets.XBeePacket() #packet = data_packet.create_packet(data, OperatingMode.API_MODE) #packet_receive = zigbee.send_packet(packet) def packet_received_callback(packet): packet_dict = packet.to_dict() api_data = packet_dict[DictKeys.FRAME_SPEC_DATA][DictKeys.API_DATA] print(api_data) print(packet_receive) #zigbee.add_packet_received_callback(packet_received_callback) finally: if zigbee is not None and zigbee.is_open(): zigbee.close()
print("from: {}, RSSI: {}, Data: {}".format(addr, rssi, bytes(data).decode())) return packet_received_callback # # def do_discovery(device): # network = device.get_network() # network.start_discovery_process() # # while network.is_discovery_running(): # time.sleep(0.5) # # print("Discovery complete!") # devices = network.get_devices() # for d in devices: # name = d.get_parameter("NI").decode("utf-8") # print("Name is: " + name) # if name == "jeremy": # d.set_parameter("NI", "NEWNAME".encode()) # d.execute_command("WR") # print("renamed!") if __name__ == "__main__": my_device = ZigBeeDevice("COM5", 9600) my_device.open() set_node_and_pan(my_device, "test_device", "1234") my_device.add_packet_received_callback(generate_packet_callback(my_device)) print("At startup, last received packet strength: -" + str(ord(my_device.get_parameter("DB"))) + "dB")