|
|
@ -16,7 +16,8 @@ radio = RF24(22, 0, 1000000) |
|
|
|
dtu_ser = 99978563412 # identical to fc22's |
|
|
|
|
|
|
|
# inverter serial numbers |
|
|
|
inv_ser = 444473104619 # identical to fc22's #99972220200 |
|
|
|
#inv_ser = 444473104619 # identical to fc22's #99972220200 |
|
|
|
inv_ser = 114174608145 # my inverter |
|
|
|
|
|
|
|
# all inverters |
|
|
|
#... |
|
|
@ -91,28 +92,33 @@ def main_loop(): |
|
|
|
radio.openWritingPipe(ser_to_esb_addr(inv_ser)) |
|
|
|
radio.flush_rx() |
|
|
|
radio.flush_tx() |
|
|
|
radio.openReadingPipe(0,ser_to_esb_addr(dtu_ser)) |
|
|
|
radio.openReadingPipe(1,ser_to_esb_addr(inv_ser)) |
|
|
|
radio.openReadingPipe(1,ser_to_esb_addr(dtu_ser)) |
|
|
|
#radio.openReadingPipe(1,ser_to_esb_addr(inv_ser)) |
|
|
|
radio.startListening() |
|
|
|
|
|
|
|
if ctr==1: |
|
|
|
if ctr<3: |
|
|
|
radio.printPrettyDetails() |
|
|
|
|
|
|
|
t_end = time.monotonic_ns()+1e9 |
|
|
|
while time.monotonic_ns() < t_end: |
|
|
|
has_payload, pipe_number = radio.available_pipe() |
|
|
|
if has_payload: |
|
|
|
size = radio.payloadSize |
|
|
|
size = radio.getDynamicPayloadSize() |
|
|
|
payload = radio.read(size) |
|
|
|
print(f"Received {size} bytes on pipe {pipe_number}: {payload}") |
|
|
|
print(f"Received {size} bytes on pipe {pipe_number}: " + |
|
|
|
" ".join([f"{b:02x}" for b in payload])) |
|
|
|
|
|
|
|
radio.stopListening() # put radio in TX mode |
|
|
|
radio.setChannel(41) |
|
|
|
radio.setChannel(40) |
|
|
|
radio.openWritingPipe(ser_to_esb_addr(inv_ser)) |
|
|
|
|
|
|
|
if ctr<3: |
|
|
|
radio.printPrettyDetails() |
|
|
|
|
|
|
|
ts = int(time.time()) |
|
|
|
payload = compose_0x80_msg(src_ser_no=dtu_ser, dst_ser_no=inv_ser, ts=ts) |
|
|
|
print(f"{ctr:5d}: len={len(payload)} | " + " ".join([f"{b:02x}" for b in payload])) |
|
|
|
radio.write(payload) # will always yield 'True' b/c auto-ack is disabled |
|
|
|
radio.write(payload) # will always yield 'True' because auto-ack is disabled |
|
|
|
ctr = ctr + 1 |
|
|
|
|
|
|
|
|
|
|
|