I've finally had some time to look at how I'm going to handle the communication. I've definitely decided to go with CANbus. The next thought I've had is do I want it to be OBD II compliant. I think that this will add a much more complexity to the project but it also allows for a structure that is already established. All the reading that I have done shows that while there are certain way for the diagnostic to work most of it are just suggestions not hard requirements. The biggest thing I have yet to figure out is exactly how the information is passed around the network.
I know that the usually information is given rather than requested. The thing I'm still trying to figure out is should the address apply to specific modules or do addresses apply to a certain task. Here's the two scenarios that are playing through my mind. The first would be a module in the engine bay that is monitoring multiple parameters. It would be hard to be sure what information that sensor is sending. So it would almost be better to have an address for the different parameters. The other scenario that I can imagine is for the first part that I'm going to make which is the lights. The modules for the lights will essentially be the same. Which means that the data going will be almost the same. So if I can assign a different address to each one it makes control pretty easy.
One thing that typing that out has helped me realize is. The addressee will mostly apply to different aspects rather than a specific module. This means that some module may have many different addresses that they use while there might be multiple modules that reply to one address. Know I really need to start programing so I can work out the ideas I have.