diff --git a/src/main.py b/src/main.py index 7c68ddd..f499bc7 100644 --- a/src/main.py +++ b/src/main.py @@ -41,52 +41,52 @@ async def main(): status = await inverter_client.get( ReadRegister.inverter_reg_status, slave_id ) - except ReadException as error: - LOGGER.error(f"Can't read register, {ReadRegister.inverter_reg_status}. " - f"Error code: {error}. Sleep for 10 min") - await asyncio.sleep(10*60) # Sleep 5 min - LOGGER.info(f"-- INVERTER -- Status: {status}") + LOGGER.info(f"-- INVERTER -- Status: {status}") - if ( - status.value == rv.DEVICE_STATUS_DEFINITIONS.get(0x0200) - or FORCE_GET - ): # Inverter is active, Get data - LOGGER.info("-- INVERTER -- Send measured values") - for register in ReadRegister.reg_to_read_measured: - result = await get_inverter_data(inverter_client, register) - send_data( - mqtt_client, - format_data_to_serialized_json(result), - f"measure/{result.name}", - ) - if count == 6: # Every 1 min - LOGGER.info("-- INVERTER -- Send calculated values") - for register in ReadRegister.reg_to_read_calculated: + if ( + status.value == rv.DEVICE_STATUS_DEFINITIONS.get(0x0200) + or FORCE_GET + ): # Inverter is active, Get data + LOGGER.info("-- INVERTER -- Send measured values") + for register in ReadRegister.reg_to_read_measured: result = await get_inverter_data(inverter_client, register) send_data( mqtt_client, format_data_to_serialized_json(result), - f"calculated/{result.name}", + f"measure/{result.name}", ) + if count == 6: # Every 1 min + LOGGER.info("-- INVERTER -- Send calculated values") + for register in ReadRegister.reg_to_read_calculated: + result = await get_inverter_data(inverter_client, register) + send_data( + mqtt_client, + format_data_to_serialized_json(result), + f"calculated/{result.name}", + ) - if count == 30: # Every 5 min - LOGGER.info("-- INVERTER -- Send status/alarm") - for register in ReadRegister.reg_to_read_status: - result = await get_inverter_data(inverter_client, register) - send_data( - mqtt_client, - format_data_to_serialized_json(result), - f"status/{result.name}", - ) - count = 0 - else: - LOGGER.debug("-- INVERTER -- Not Active, No need to read values") + if count == 30: # Every 5 min + LOGGER.info("-- INVERTER -- Send status/alarm") + for register in ReadRegister.reg_to_read_status: + result = await get_inverter_data(inverter_client, register) + send_data( + mqtt_client, + format_data_to_serialized_json(result), + f"status/{result.name}", + ) + count = 0 + else: + LOGGER.debug("-- INVERTER -- Not Active, No need to read values") - count += 1 + count += 1 - LOGGER.info(f"Sleeping {REQUEST_INTERVAL}") - await asyncio.sleep(REQUEST_INTERVAL) + LOGGER.info(f"Sleeping {REQUEST_INTERVAL}") + await asyncio.sleep(REQUEST_INTERVAL) + except ReadException as error: + LOGGER.error(f"Can't read register, {ReadRegister.inverter_reg_status}. " + f"Error code: {error}. Sleep for 10 min") + await asyncio.sleep(60) # Sleep 1 min def send_data(