docs: def _initialize_data(self):
          """
          This method is called once on construction. After that, it may be
          manually called again to reset the device to its default state.
  
          After the first call during construction, the class is frozen.
  
          This means that attempting to define a new member variable will
          raise an exception. This is to prevent typos from inadvertently
          and silently adding new members instead of accessing existing ones.
          """
          self.serial_command_mode = False
          self.pump_overspeed = False
  
          self.start_commanded = False
          self.stop_commanded = False
          self.hold_commanded = False
  
          # Real device remembers values from last run, we use arbitrary defaults
          self.temperature_rate = 5.0  # Rate of change of temperature in C/min
          self.temperature_limit = 0.0  # Target temperature in C
  
          self.pump_speed = 0  # Pump speed in arbitrary unit, ranging 0 to 30
          self.temperature = 24.0  # Current temperature in C
  
          self.pump_manual_mode = False
          self.manual_target_speed = 0