You might like to look at this:
http://www.fritz-hut.com/2012/09/04/arduinopiv1.0-includes-api/
He's got an interesting approach exposing the API on the web. I did ponder doing everything in PHP as I'm used to PHP for web apps. But what I'm not so sure about is having PHP run full-time as a control loop for a heater, for example - whereas python can quite happily do this.
My natural tendency is to write everything in C or C++, but that's too much like being at work 
Yes, I feel the same way!
You could have the PID loop running on the Arduino (libraries available for that!) and just pass the set point to it from the PI. That would be my approach if I ever get around to it.
An embedded micro would indeed be ideal for that kind of thing.
Wouldn't take much of a control loop, really PIDs are overkill for running a resistive heating element .
What I like about python is that tweeking it is very very easy. I know from work that python scripts can run for extended times (we've has some simulators running weeks) and there are python scrypt mining proxies (EG stratum) that I've used for extended times as well. So I'm happy enough to do it that way on the Pi, though perhaps with a crontab based watchdog
just in case.
So the idea of a python web interface with AJAX style JSON comms to an always-running control script appeals quite a lot.
It could log all actions, something like
12:45 [control] user set temp to 65C
12:45 [action] heater 1 ON
14:11 [control] temp reached target of 65C
14:11 [action] heater 1 OFF
14:15 [control] temp 63C below hysteresis threshold
14:15 [action] heater 1 ON
14:17 [control] temp reached target of 63C
14:17 [action] heater 1 OFF
15:01 [control] user enabled circulation pump 1
15:01 [action] pump 1 ON
What could possibly go wrong?
