mirror of
https://github.com/lumapu/ahoy.git
synced 2025-04-29 18:26:21 +02:00
Merge pull request #928 from betacentauri/main
[rpi] Use tx channel hopping and decrease timeout and increase retries
This commit is contained in:
commit
dbb352801e
3 changed files with 23 additions and 10 deletions
|
@ -2,6 +2,7 @@
|
|||
|
||||
ahoy:
|
||||
interval: 5
|
||||
transmit_retries: 5
|
||||
|
||||
logging:
|
||||
filename: 'hoymiles.log'
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -128,6 +128,7 @@ def main_loop(ahoy_config):
|
|||
dtu_name = ahoy_config.get('dtu', {}).get('name', 'hoymiles-dtu')
|
||||
sunset.sun_status2mqtt(dtu_ser, dtu_name)
|
||||
loop_interval = ahoy_config.get('interval', 1)
|
||||
transmit_retries = ahoy_config.get('transmit_retries', 5)
|
||||
|
||||
try:
|
||||
do_init = True
|
||||
|
@ -144,7 +145,7 @@ def main_loop(ahoy_config):
|
|||
sys.exit(999)
|
||||
if hoymiles.HOYMILES_DEBUG_LOGGING:
|
||||
logging.info(f'Poll inverter name={inverter["name"]} ser={inverter["serial"]}')
|
||||
poll_inverter(inverter, dtu_ser, do_init, 3)
|
||||
poll_inverter(inverter, dtu_ser, do_init, transmit_retries)
|
||||
do_init = False
|
||||
|
||||
if loop_interval > 0:
|
||||
|
|
Loading…
Add table
Reference in a new issue