dev
This commit is contained in:
parent
44010dba02
commit
506587283c
|
|
@ -20,7 +20,15 @@ class TecnaMarpossProvasetT3(ModbusComponent):
|
|||
self.modbus_error_signal.connect(self.handle_modbus_error)
|
||||
|
||||
def config_changed(self):
|
||||
super().config_changed()
|
||||
self.log.info("Configuring Tecna Marposs component...")
|
||||
try:
|
||||
super().config_changed()
|
||||
self.log.info("Successfully connected to Modbus device")
|
||||
except Exception as e:
|
||||
self.log.error(f"Failed to connect to Modbus device: {str(e)}")
|
||||
# Re-raise to let the reconfig_on_error decorator handle it
|
||||
raise
|
||||
|
||||
self._store_recipes_signal.connect(self._store_recipes)
|
||||
self.model = self.config[self.name]["model"].lower()
|
||||
if self.model == "t3p":
|
||||
|
|
@ -29,18 +37,25 @@ class TecnaMarpossProvasetT3(ModbusComponent):
|
|||
self.registers = t3l_registers
|
||||
else:
|
||||
raise NotImplementedError(f"tecna t3 model {self.model!r} not implemented.")
|
||||
|
||||
self.log.info("Setting measure units...")
|
||||
self.set_measure_units()
|
||||
|
||||
try:
|
||||
self.log.info("Getting measure units and configuration...")
|
||||
self.units = self.get_measure_units()
|
||||
self.max_program_number = self.read("Max number of programs")
|
||||
self.saver_label_count = min(abs(int(self.config[self.name].get("saver_label_count", 1))), 0b1111)
|
||||
self.saver_print_on_fail = 1 if self.config[self.name].get("saver_print_on_fail", "no").lower() in {"yes", "y", "on", "true", "1", "x"} else 0
|
||||
self.saver_label_template = min(abs(int(self.config[self.name].get("saver_label_template", 1))), 0b11111111)
|
||||
self.model = self.config[self.name]["model"].lower()
|
||||
self.log.info(f"units: {self.units}")
|
||||
self.log.info(f"Configuration complete. Units: {self.units}")
|
||||
except Exception as e:
|
||||
error_message = f"Error during config_changed operation: {str(e)}"
|
||||
self.log.error(error_message)
|
||||
self.tecna_error_signal.emit(True, error_message)
|
||||
# Re-raise to let the reconfig_on_error decorator handle it
|
||||
raise
|
||||
|
||||
_pressure_units = {"mH2O": 0, "mbar": 1, "kPa": 2, "mmHg": 3, "inH2O": 4, "psi": 5, "mmH2O": 6, } # (se fondoscala <=6 bar)
|
||||
_leak_units = {"mmH2O": 0, "mbar": 1, "Pa": 2, "mmHg": 3, "inH2O": 4, "psi": 5, }
|
||||
|
|
@ -257,12 +272,21 @@ class TecnaMarpossProvasetT3(ModbusComponent):
|
|||
if round_me in info.keys():
|
||||
info.update({round_me: float(f"{info[round_me]:.2f}")})
|
||||
self.log.debug(str(info))
|
||||
|
||||
# If we got here, the connection is working
|
||||
self._ready = True
|
||||
super()._get([info])
|
||||
except Exception as e:
|
||||
error_message = f"Error during _get operation: {str(e)}"
|
||||
self.log.error(error_message, exc_info=True)
|
||||
self.tecna_error_signal.emit(True, error_message)
|
||||
raise # Re-raise the exception for further upstream handling
|
||||
|
||||
# Mark component as not ready to trigger reconnection on next get call
|
||||
self._ready = False
|
||||
|
||||
# Don't raise the exception, let the periodic get call handle reconnection
|
||||
# The next call to get will attempt to reconfigure the component
|
||||
# This avoids using while loops or explicit reconnection attempts
|
||||
|
||||
@Component.reconfig_on_error
|
||||
def _set(self, val=None):
|
||||
|
|
@ -499,8 +523,19 @@ class TecnaMarpossProvasetT3(ModbusComponent):
|
|||
# Emit the Tecna-specific error signal with True and the error message
|
||||
#self.tecna_error_signal.emit(True, error_message)
|
||||
self.log.error(f"Modbus error encountered: {error_message}")
|
||||
|
||||
# Mark component as not ready to trigger reconnection on next get call
|
||||
# This is especially important for connection errors
|
||||
if "Connection error" in error_message:
|
||||
self.log.warning("Connection error detected, marking component as not ready for reconnection")
|
||||
self._ready = False
|
||||
|
||||
return True, error_message
|
||||
else:
|
||||
# Emit no error (False)
|
||||
self.tecna_error_signal.emit(False, "")
|
||||
return False, None
|
||||
|
||||
# If no error, the connection is working
|
||||
self._ready = True
|
||||
|
||||
return False, None
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user