|
|
@ -297,8 +297,8 @@ class InverterPacketFragment: |
|
|
|
|
|
|
|
class HoymilesNRF: |
|
|
|
"""Hoymiles NRF24 Interface""" |
|
|
|
tx_channel_id = 0 |
|
|
|
tx_channel_list = [40] |
|
|
|
tx_channel_id = 2 |
|
|
|
tx_channel_list = [3,23,40,61,75] |
|
|
|
rx_channel_id = 0 |
|
|
|
rx_channel_list = [3,23,40,61,75] |
|
|
|
rx_channel_ack = False |
|
|
@ -332,6 +332,12 @@ class HoymilesNRF: |
|
|
|
:rtype: bool |
|
|
|
""" |
|
|
|
|
|
|
|
self.next_tx_channel() |
|
|
|
|
|
|
|
if HOYMILES_TRANSACTION_LOGGING: |
|
|
|
c_datetime = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") |
|
|
|
logging.debug(f'{c_datetime} Transmit {len(packet)} bytes channel {self.tx_channel}: {hexify_payload(packet)}') |
|
|
|
|
|
|
|
if not txpower: |
|
|
|
txpower = self.txpower |
|
|
|
|
|
|
@ -363,13 +369,13 @@ class HoymilesNRF: |
|
|
|
""" |
|
|
|
Receive Packets |
|
|
|
|
|
|
|
:param timeout: receive timeout in nanoseconds (default: 12e8) |
|
|
|
:param timeout: receive timeout in nanoseconds (default: 5e8) |
|
|
|
:type timeout: int |
|
|
|
:yields: fragment |
|
|
|
""" |
|
|
|
|
|
|
|
if not timeout: |
|
|
|
timeout=12e8 |
|
|
|
timeout=5e8 |
|
|
|
|
|
|
|
self.radio.setChannel(self.rx_channel) |
|
|
|
self.radio.setAutoAck(False) |
|
|
@ -415,7 +421,7 @@ class HoymilesNRF: |
|
|
|
self.radio.setChannel(self.rx_channel) |
|
|
|
self.radio.startListening() |
|
|
|
|
|
|
|
time.sleep(0.005) |
|
|
|
time.sleep(0.004) |
|
|
|
|
|
|
|
def next_rx_channel(self): |
|
|
|
""" |
|
|
@ -433,6 +439,15 @@ class HoymilesNRF: |
|
|
|
return True |
|
|
|
return False |
|
|
|
|
|
|
|
def next_tx_channel(self): |
|
|
|
""" |
|
|
|
Select next channel from hop list |
|
|
|
|
|
|
|
""" |
|
|
|
self.tx_channel_id = self.tx_channel_id + 1 |
|
|
|
if self.tx_channel_id >= len(self.tx_channel_list): |
|
|
|
self.tx_channel_id = 0 |
|
|
|
|
|
|
|
@property |
|
|
|
def tx_channel(self): |
|
|
|
""" |
|
|
@ -612,10 +627,6 @@ class InverterTransaction: |
|
|
|
|
|
|
|
packet = self.tx_queue.pop(0) |
|
|
|
|
|
|
|
if HOYMILES_TRANSACTION_LOGGING: |
|
|
|
c_datetime = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") |
|
|
|
logging.debug(f'{c_datetime} Transmit {len(packet)} | {hexify_payload(packet)}') |
|
|
|
|
|
|
|
self.radio.transmit(packet, txpower=self.txpower) |
|
|
|
|
|
|
|
wait = False |
|
|
|