From 5724969696cfe34ba20c3dac3d1f5d2bfee36bcf Mon Sep 17 00:00:00 2001 From: nathan wagner Date: Sat, 1 Jan 2022 17:47:30 -0500 Subject: [PATCH] updating gen file for generic app functions --- gen.py | 38 ++++++++++++++++++++++++++++++++++++++ main.py | 14 ++++++++------ spec.py | 36 ------------------------------------ 3 files changed, 46 insertions(+), 42 deletions(-) create mode 100644 gen.py diff --git a/gen.py b/gen.py new file mode 100644 index 0000000..5f911a9 --- /dev/null +++ b/gen.py @@ -0,0 +1,38 @@ + + +def attribute_result(kwargs): + attr_list = kwargs['attributes'] + return_array='' + for i in attr_list: + if i == 0: #zcl version default 0x2 + return_array = b'\x00\x00' + return_array = return_array+b'\x00\x20\x03' + if i == 1: #Application Version, gonna be \x01 didn't make it 0 didn't make it + return_array = b'\x01\x00' + return_array = return_array+b'\x00\x20\x01' + if i == 2: #stack version + return_array = b'\x02\x00' + return_array = return_array+b'\x00\x20\x03' + if i == 3: #hardware version + return_array = b'\x03\x00' + return_array = return_array+b'\x00\x20\x01' + if i == 4: #manufacturer name + return_array = b'\x04\x00' + return_array = return_array+b'\x00\x42\x0B\x44\x69\x67\x69\x20\x4e\x61\x74\x68\x61\x6e' + if i == 5: #model identifier this is used for z2m tie + return_array = b'\x05\x00' + return_array = return_array+b'\x00\x42\x0F\x44\x69\x67\x69\x20\x47\x61\x72\x61\x67\x65\x44\x6f\x6f\x72' + if i == 6: # dateCode + return_array = b'\x06\x00' + return_array = return_array + b'\x00\x42\x08\x32\x30\x32\x31\x30\x36\x31\x35' + if i == 7: #power source did make it + return_array=b'\x07\x00' + return_array = return_array + b'\x00\x30\x04' + if i == 17: #physical environment + return_array=b'\x11\x00' + return_array = return_array + b'\x00\x30\x19' + if i == 16384: #swbuildID , gonna be E didn't make it 24 didn't make it + return_array = b'\x00\x40' + return_array = return_array+b'\x00\x42\x01\x45' + + return return_array \ No newline at end of file diff --git a/main.py b/main.py index b88a22c..1cd3f5e 100644 --- a/main.py +++ b/main.py @@ -7,7 +7,7 @@ import spec import ubinascii from machine import I2C from machine import Pin -from machine import Timer +import gen import struct # print(" +-------------------------------------+") @@ -62,7 +62,6 @@ lame = 0 # send=1 send=0 time.sleep(1) - def fancy_transmit(payload, source_ep, dest_ep, cluster,profile): send = 0 while send==0: @@ -81,7 +80,7 @@ fancy_transmit( payload=initial_payload, source_ep=0, dest_ep=0, cluster=19,prof print("receiving") diff = 3600000 first_report = False -timestamp = time.tick_ms() +timestamp = time.ticks_ms() while 1 != 0: blorp = xbee.receive() if blorp is not None: @@ -89,6 +88,9 @@ while 1 != 0: if blorp['cluster'] == 6: #genOnOffCluster in HA Profile if blorp['profile'] == 260: #HA profile cluster_name, seq, CommandType, command_name, disable_default_response, kwargs = spec.decode_zcl(blorp['cluster'], blorp['payload']) + print(CommandType) + print(command_name) + print(kwargs) if 'command' in kwargs: if kwargs['commands'][0] == 0: ad4.value(1) @@ -124,7 +126,7 @@ while 1 != 0: print(command_name) print(kwargs) if 'attributes' in kwargs: - attr_bytes=spec.attribute_result(kwargs) + attr_bytes=gen.attribute_result(kwargs) #payload: control byte, code bytes(2), seq copy, command identifier(read_attributes_response, #payload = bytes([4, 30, 16, seq, 1, attr_bytes, 0, 8, 0]) payload = bytes([12, 30, 16, seq, 1]) @@ -151,12 +153,12 @@ while 1 != 0: print("Node descriptor response integer payload discard") #for key, value in blorp.items(): #1 print (key, ' : ', value) - if (diff < time.diff(time.ticks_ms() - timestamp)) or ( not first_report ) : + if (diff < time.ticks_diff(time.ticks_ms(), timestamp)) or ( not first_report ) : timestamp = time.ticks_ms() first_report = True zcl_head = bytes([12, 30, 16, 171, 10]) payload = zcl_head + bytes([0,0,10,0]) #for now only return off for state report - fancy_transmit(payload=payload, source_ep=blorp[8], dest_ep=blorp[1], cluster=6, profile=260) + fancy_transmit(payload=payload, source_ep=8, dest_ep=1, cluster=6, profile=260) #print(xbee.receive()) diff --git a/spec.py b/spec.py index 263864c..cc15978 100644 --- a/spec.py +++ b/spec.py @@ -797,39 +797,3 @@ def get_cluster_rx_command(cluster_name, command_name): # } -def attribute_result(kwargs): - attr_list = kwargs['attributes'] - return_array='' - for i in attr_list: - if i == 0: #zcl version default 0x2 - return_array = b'\x00\x00' - return_array = return_array+b'\x00\x20\x03' - if i == 1: #Application Version, gonna be \x01 didn't make it 0 didn't make it - return_array = b'\x01\x00' - return_array = return_array+b'\x00\x20\x01' - if i == 2: #stack version - return_array = b'\x02\x00' - return_array = return_array+b'\x00\x20\x03' - if i == 3: #hardware version - return_array = b'\x03\x00' - return_array = return_array+b'\x00\x20\x01' - if i == 4: #manufacturer name - return_array = b'\x04\x00' - return_array = return_array+b'\x00\x42\x0B\x44\x69\x67\x69\x20\x4e\x61\x74\x68\x61\x46' - if i == 5: #model identifier this is used for z2m tie - return_array = b'\x05\x00' - return_array = return_array+b'\x00\x42\x0F\x44\x69\x67\x69\x20\x47\x61\x72\x61\x67\x65\x44\x6f\x6f\x72' - if i == 6: # dateCode - return_array = b'\x06\x00' - return_array = return_array + b'\x00\x42\x08\x32\x30\x32\x31\x30\x36\x31\x35' - if i == 7: #power source did make it - return_array=b'\x07\x00' - return_array = return_array + b'\x00\x30\x04' - if i == 17: #physical environment - return_array=b'\x11\x00' - return_array = return_array + b'\x00\x30\x19' - if i == 16384: #swbuildID , gonna be E didn't make it 24 didn't make it - return_array = b'\x00\x40' - return_array = return_array+b'\x00\x42\x01\x45' - - return return_array \ No newline at end of file