Hi there! I’m working with Inheco CPAC units and was wondering how to go about defining them for use as temperature controllers in PLR.
resource-wise probably a PlateHolder?
Do you know anything about the serial interface this device uses? I reverse engineered the inheco thermoshake protocol (which was difficult due to an incorrectly implemented crc8 checksum). See this file
There is also a TemperatureController front end class that your interface should use
to be honest, i don’t know much about it. i was assuming i’d define it as a TemperatureController, but would it be a PlateHolder with TemperatureController capabilities?
TemperatureController is actually already a ResouceHolder. Let me think about how to model this best
the other thing to do is write a backend class, which for temperature controllers is simple:
class TemperatureControllerBackend(MachineBackend, metaclass=ABCMeta):
  @abstractmethod
  async def set_temperature(self, temperature: float):
    """Set the temperature of the temperature controller in Celsius."""
  @abstractmethod
  async def get_current_temperature(self) -> float:
    """Get the current temperature of the temperature controller in Celsius"""
  @abstractmethod
  async def deactivate(self):
    """Deactivate the temperature controller."""
the way i do this is use the official program and observe firmware commands using wireshark. for inheco, the software is freely available online
per this doc, the cpac use the standard inheco Firmware Command Set. doc available here. you will probably need the checksum code from thermoshaker backend. the ‘demo tool’ (gui to firmware) is available after free inheco account creation: Login.
will look into all of this, thanks
I’d also recommend talking with Inheco directly.
They are a great company and in my experience support integration of their machines … Because they understand that they’re selling more machines that way.
No guarantee but worth a shot.
Any recommendations on how to setup the dimensions of this thing? figure it’s just defining a new resource holder, but would love some guidance
Following up on this thread, I was able to use the InhecoThermoShakeBackend for some basic interfacing with the CPAC.
great!
is there functionality that is not supported yet? otherwise it would be nice to split the InhecoThermoShakeBackend into a cpac backend (share code) so that it can be used as a TemperatureControllerBackend
i realize i forgot to respond to mackenzie:
Yes a new ResourceHolder (probably a PlateHolder to be specific is best)
The size is 80 mm x 89 mm x 129 mm
The child_location (ResourceHolder — PyLabRobot documentation) needs to be measured
wanna contribute it to PLR @agar ? ![]()