From d052d4dede72a114d3eec64c94155a0af9b37e65 Mon Sep 17 00:00:00 2001 From: nathan wagner Date: Thu, 23 Dec 2021 19:49:06 -0500 Subject: [PATCH] 04 and 05 cluster id's functioning for zdo --- build/main.mpy | Bin 1402 -> 1861 bytes main.py | 81 ++++++++++++++++++++++++++++++++++--------------- scratch.md | 20 ++++++++++-- 3 files changed, 74 insertions(+), 27 deletions(-) diff --git a/build/main.mpy b/build/main.mpy index b56b1792b1917003acdfa8e25b8a128d4c84f2e4..56754f87fea01a6d3326f763774f282c20523724 100644 GIT binary patch literal 1861 zcmah~-EZ4e6u0xye5^@)Q`aHOz{V+3o3u?Drbu*5(9}rnrnO6%1*tTGni8|6nNS1x>@j1G`51;EhVMdgG z=D$z>9$+HZN)JrUd06UbMt8M${Q2VIV!3=C#a7|b>e}MFYs&>oToK!j8U8iHXC^#o=D9T=Qb9Z-7+1}Z>x4VZDT-vb?Z5=mpk8sI0c3eNw z%|pk<_H!=Tv#ke)i3!KMM@_5e8dldK)n|eFOC>}+x+QbMCBLwMO7{Q&-O4kcAg276 za+L@Hyd7hx#sPRyuM2FJy?={k?jyiF*!=DZZB5%)$Hrs7x%TZTU{3leYGS-)T6Pby z^_PDr-YH@^q<%e6ek9ZyriOxm&zDZU?)&&5jlcxC3uh40VLI+CNVK22%S2<+lsrW0x9Z(}h2iy_8Ij z&Si2}_9Wu{MDL`?4fR(Tl;v~4Hb>bKE;rUchvq2P+$EB^DI}v4BxBqaP@V(^%F+e! z*D;1cia{?WK>hW|pPTs0x*lg++`e%Dr{0EX8d_J!<@cP~@!Y#GS&lH8PidT$ux(qm zBRIJ0uHbIF2lMN$P_tpY@znaOj?w9vSb~E>w~d}_+0y^^Ox=45rt%J)^{?AO0*Lqk z+tO&{rMBVdn%!={o%~?pp9eao>Cw(J_kI~3-F2O1;O|2JC{AW{ytE}hu`Zpgmn%nK F{R>=))L{Ss delta 739 zcmaJ;%WD%s7@yf~9u0l$XLq-x3fpEQZjx=2)Fef1t!yLKmVyC;rciX7ZtK#d4VzF} zie!>1NIi(oMZt>~&mR2;JoY3a0nt#83?r3#))(JQ8<*2&EE&_rwJ|pu)nj*bT^o-sXU%Aw zS!Q&3CZ;E1=43K4ttGh9;wL(8o;r)k$)piC5hW~$YMlAheQol?5bk{0gwkgr|h^pjI{*5*0G8K zAAFtr*|gTl{4@d|4GXhEBtuJru~u>H9d~Pk!7S+L9-!2Z{0LD6=XNjRt#QsmLB(Ob zvVhS_i%|h%>&(4sa#~2s=@y&QvdR241jBL|#Gx=~Qka|w?Y`TBfy4BTkQ%kxpvXE~ zM`*RO?bQGmzJJb7v;j*{eA>x-^tW(}UKO=VB~YY5@kuA&Bz$&cfhhGCGu@TlV2;Qf zRiUPDgdT~?Dh$aA<5nObDTE6|+N7sz=MIG~9O>kz&V&Q}U~v$sSN^Tr`qgBBy~Q@` zgAV$pI2An>waqRbqYygz*|Q-T!?U;QRkzV# SN2#m)I`o}Cfem`(H~s>uajZ)K diff --git a/main.py b/main.py index 39f6af3..53df80b 100644 --- a/main.py +++ b/main.py @@ -14,41 +14,45 @@ import struct # default to everything off and 0 at power on. # in the future, we can try to reclaim previous state. # Hopefully this lamp won't turn off very often +def status_cb(status): + print("received status: {:02x}".format(status)) - +xbee.modem_status.callback(status_cb) # arduino_addr = 0x48 # senddata = 0 time.sleep(3) x = xbee.XBee() #xbee.atcmd('NT', 0xFF) #tp = xbee.atcmd('TP')1A +xbee.atcmd('KY',b'\x5A\x69\x67\x42\x65\x65\x41\x6C\x6C\x69\x61\x6E\x63\x65\x30\x39') print(xbee.atcmd('MY')) print("transmitting") srcaddr = int(xbee.atcmd('MY')) print(xbee.atcmd('AI')) xbee.atcmd('CN') -print(srcaddr) +time.sleep(3) srcarry = srcaddr.to_bytes(2,"big") -print(srcarry) + + initial_payload=bytes([171, srcarry[1], srcarry[0], 141, 194, 209, 65, 0, 162, 19, 0, 142]) -leave_load=bytes([171, 141, 194, 209, 65, 0, 162, 19, 0, 2]) +leave_load=bytes([171, srcarry[1], srcarry[0], 209, 65, 0, 162, 19, 0, 2]) print(initial_payload) #xbee.transmit(xbee.ADDR_COORDINATOR, b'\xAB\xF7\x6A\x8D\xC2\xD1\x41\x00\xA2\x13\x00\x8E', source_ep=0, dest_ep=0, cluster=19, profile=0, tx_options=0) #xbee.transmit(xbee.ADDR_COORDINATOR, b'\xAB\xF7\x6A\x8D\xC2\xD1\x41\x00\xA2\x13\x00\x8E', source_ep=0, dest_ep=0, cluster=19, profile=0, tx_options=0) send=0 lame = 0 -while lame < 3: - xbee.receive() - lame += 1 +#while lame < 3: +# xbee.receive() +# lame += 1 -while send==0: - try: - if xbee.transmit(xbee.ADDR_COORDINATOR, leave_load, source_ep=0, dest_ep=0, cluster=52, profile=0, tx_options=0) is None: - send = 1 - print("leaving") - except OSError as e: - print("leaving transmit error") - send=1 +#while send==0: +# try: +# if xbee.transmit(xbee.ADDR_COORDINATOR, leave_load, source_ep=0, dest_ep=0, cluster=52, profile=0, tx_options=0) is None: +# send = 1 +# print("leaving") +# except OSError as e: +# print("leaving transmit error") +# send=1 send=0 time.sleep(1) while send==0: @@ -67,14 +71,37 @@ while 1 != 0: b = bytearray(blorp['payload']) print(b[0]) payload=bytes([b[0], 00, b[1], b[2], 1, 8]) - xbee.transmit(xbee.ADDR_COORDINATOR,payload,source_ep=0,dest_ep=0,cluster=32773, profile=0, tx_options=0) + try: + if xbee.transmit(xbee.ADDR_COORDINATOR,payload,source_ep=0,dest_ep=0,cluster=32773, profile=0, tx_options=0) is None: + send = 1 + print("sent-endpoint-response") + except OSError as e: + print("joining transmit error") + if blorp['cluster']==4: #simple descriptor request print(bytes(blorp['payload'])) b = bytearray(blorp['payload']) print(b[0]) payload = bytes([b[0], 00, b[1], b[2], 14, 8, 4, 1, 2, 0, 6, 3, 0, 0, 3, 0, 6, 0, 0]) - xbee.transmit(xbee.ADDR_COORDINATOR, payload, source_ep=0,dest_ep=0,cluster=32772, profile=0, tx_options=0) - if blorp['cluster'] == 0: + try: + if xbee.transmit(xbee.ADDR_COORDINATOR, payload, source_ep=0,dest_ep=0,cluster=32772, profile=0, tx_options=0) is None: + send = 1 + print("simple descriptor response") + except OSError as e: + print("joining transmit error") + + if blorp['cluster'] == 0: #network address request + if blorp['profile'] == 260: + resp = bytearray(blorp['payload']) + payload = bytes([b[0], 0, b[1], b[2]]) + try: + if xbee.transmit(xbee.ADDR_COORDINATOR, payload, source_ep=blorp['dest_ep'], dest_ep=blorp['source_ep'], cluster=blorp['cluster'], profile=blorp['profile'], + tx_options=0) is None: + send = 1 + print("joining") + except OSError as e: + print("joining transmit error") + print(bytes(blorp['payload'])) b = bytearray(blorp['payload']) for x in b: @@ -83,16 +110,22 @@ while 1 != 0: print(bytes(blorp['payload'])) b = bytearray(blorp['payload']) print(b[0]) - payload = bytes([b[0], 00, b[1], b[2], 14, 8, 4, 1, 2, 0, 6, 3, 0, 0, 3, 0, 6, 0, 0]) - xbee.transmit(xbee.ADDR_COORDINATOR, payload, source_ep=0, dest_ep=0, cluster=32772, profile=0, - tx_options=0) + payload = bytes([b[0], 00, b[1], b[2], 4, 143, 120, 8, 80, 160, 0, 1, 44, 160, 0, 0]) + try: + if xbee.transmit(xbee.ADDR_COORDINATOR, payload, source_ep=0, dest_ep=0, cluster=32772, profile=blorp['profile'], + tx_options=0) is None: + send = 1 + print("joining") + except OSError as e: + print("joining transmit error") + if blorp['cluster'] == 32770: #node descriptor response print(bytes(blorp['payload'])) b = bytearray(blorp['payload']) - print("Node descriptor response integer payload") - for x in b: - print(x) + print("Node descriptor response integer payload discard") print(blorp) + #for key, value in blorp.items(): + #1 print (key, ' : ', value) #print(xbee.receive()) #print("temperature") diff --git a/scratch.md b/scratch.md index f0bad2c..3b9135e 100644 --- a/scratch.md +++ b/scratch.md @@ -34,6 +34,20 @@ note flipLw these to interpret 0 00000000 0 00000000 - - - +my own response for this: +add one to sequence number +0 +b[1] +b[0] +000100 4 +10001111 143 +01111000 120 +00001000 8 +01010000 80 +10100000 160 +00000000 0 +00000001 1 +00101100 44 +10100000 160 +00000000 0 +00000000 0