Well to be honest I think if you take methodical approach to it then its really achieveable. My process was to look at each switch in the centre console one by one. Figure out which wires the switch actually switches. There'll likely only be two for each switch and it'll either make the contacks or break them when you push it. I then looked for the wire that 'goes live' when the switch is on and would usually power the little light in or around the button to indicate that you've turned something on.
The only exceptions are the dials which are usually just rotary potentiometers or variable resistors. With these I just measured their resistance at the various positions (fan directions or heat settings in my case) and I used relays and individual fixed resistors to essentially create a number of 'fixed potentiometers' that were switched in and out of the circuit using the USB I/O board and a few relays. You could replicate the dials using stepper motors or even digital potentiometers but frankly thats too complicated and not worth the effort.
As an example, my original temerature dial obviously had infinite settings for the fan heat, you could move it the tiniest amount and alter the heat output. But in my software system now I actually only have 7 settings from fully cold to fully hot and those are more than enough. Of course you wouldnt know that there were only 7 settings from using my front-end, it looks like a normal dial. infact, here they are:
The lines mark out where i've defined HTML image maps to respond to where the user clicks, anywhere in the first triangle switches to the first 'fixed potentiometer' and anywhere in the second switches to the second, so on and so on.
The dial that controlled my fan power wasnt a potentiometer, it was a rotary switch and I could tell from the size of the cables/connections on the back that it was directly switching the power for the fan. But there was still a simple solution, I just installed i think 6 power relays to again replicate the dial in its various positions and switch the fan current.
The feedback is the easy part. The 12v that the car would normally use to light up an indicator bulb is wired into a potential divider to drop it to 5v and is pumped straight into the digitial inputs and onto the software. Any 5v feedback can go stright into the inputs without dropping down. The inputs on my board are very high impedance so don't have to worry about them trying to draw any current and messing anything else up.
It's actually a really simple system. The only problem is that you end up with a pretty sizeable circuit board with lots and lots of wires attached to it, lol. Most of which are carrying 12v. So getting them all into, in my case, quite a cramped dashboard without any issues is a challenge and quite nerve racking, lol.
I also had a challenge in finding feedback sources for some of the buttons that didnt have lights. For these I had to get to know the A/C controller board in the car real well and start tapping off voltage sources where I could find them, lol.
Anyway I think i'm getting a bit carried away here, lol. I do this alot when I start talking about the technical stuff in the car. Only difference is the people i'm usually explaining it to couldn't care less, lol, hopefully thats not the case here.
Well back to the install and I'm glad to say that all the wiring is done and i'm now on to a final cabling check, I'm recording all the fuse values that I've used for the various power feeds and making sure that they're appropriate, I dont want them blowing under normal use because they're too small but I also dont want them to not blow soon enough if there's a problem because they're too large.
The subs should be able to go in tomorrow for their set-up. Im certainly on the finishing straight.