There are parallel port drivers out there for Linux that allow you to control individual lines of a parallel port so that you could use them to control relays, etc... presumably some of these drivers would allow bidirectionality as well so that you could read states as well.
You would need to write a "wrapper" piece of code around the driver API to translate between the DCE protocol and the driver's API. But note that the expectation is that you present DCE commands to LMCE which are high level (like turn power on, set vol level x, arm PIR device y, dim light to 20%, etc) not primitives like set line 1 to true, line 8 to false, etc. This is so LMCE doesn't need to know what operations are needed to achieve a particular lighting, security, media, climate, etc outcome, it simply issues the appropriate high level command to the appropriate device(s), and those DCE devices (your wrapper) know how to translate these commands into the specific actions needed to achieve that outcome. Thus the wrapper is likely to need a considerable amount of logic in it even if you hard-build it for a specific purpose. The more you build it to be a generic interface, the more logic will need to be built in and configuration data to customise this logic (either through the UI wizard or through the admin site).
Ultimately, you could end up with an equivalent to the GSD for parallel. Where it is a generic parallel driver DCE device that accepts commands which it then translates into specific actions by reading chunks of Ruby code assigned to each DCE command and executes that code. The Ruby code in turn then provides the logic required to set/read the parallel lines to achieve the task.
Its a lot of work - you should be aware that parallel ports are a technilogical dead end. Nothing new comes out with parallel ports because they have reached the end of their usefulness in terms of data transfer rates. It is vastly easier and cheaper to achieve the same transfer rate with serial technologies. Consequently, it won't be long before you can't even find a mobo that has a parallel port (the same has already happened for 232 style serial ports!)
You are almost certainly better off looking at USB options instead, even if you have a legacy device you can probably set it up using a USB->parallel device....