With a 328, you can probably do enough html code to control all of it, just not very pretty though.
HTML requires a lot of space... especially on an Arduino where it's very limited.
On my Mega though, it's no problem. 10-15 devices is not an issue, especially if they're just Digital I/O.
However, I wrote an Android App instead, so that all the UI are handled by the Android device instead so proccessing is lower on the Arduino side. But it's definitely possible just to run everything on the arduino if it's a Mega... the 328 might be pushing it. The 168 is definitely a no go since it barely handled 4 devices code before it start crashing and doing all sorts of weird stuff.
Using HTML get, you will definitely run out of memory before you run out of pins and sensors. I tried that method with my computer on the browser, and no matter how simple and clean I made it, I still have trouble when it get a little elaborate. I think I had six buttons, two temperature sensor, and two relays. Ohh and X10 for home automation.
I suggest going to a Arduino Mega if you're going to do a lot of coding for the extra storage space. And pins.... if you need them.
I'm starting to take up iOS programming for another app... once I figure out how it work. I'll try to cross-implement my already in place arduino codes to work with it... that way I'll have android app and iPhone app.
If you ever get started, please post your findings and implementation :-)
Which Thermostat are you using that you're communicating to the Arduino with??
I'm doing the same thing as you, except, with no thermostat.
My arduino is acting as the thermostat, using 2 analog temperature sensor, it reads in the average temp, display it on an LCD with a couple buttons so I can change the set temp.
A relay is used to control the HVAC. I measured the power on the AC control line, it's 30V AC to turn on the AC, FAN, or HEAT. Ofcourse the FAN has to be on first, then either of the other two. I used three relays to do this, and I always make sure the fan goes on about a minute before the AC or HEAT turns on, then stay on an extra minute after HEAT or AC shuts off. Also a 5 minute between the AC turning on/ and turning on again... apparently this was one of the feature on my old thermostat so I re-implemented it just to be safe.
In order to communicate with the internet and control, I used a PHP script, so if there's an issue, it emails to my Gmail using phpmailer script. Besides that, I can control it directly through the web using HTML...
I'm moving away from PHP, so I can use Android App and remove my home server computer from the equation for less failure point. So I'm trying to serve the whole web page on the Arduino. I'll let you know how that work out.
Using the App Inventor TinyWebDB, I was able to communicate with Arduino Ethernet shield using JSON request. It was a little difficult to figure out at first, but once I got it to send values back and forth, it work well.
This is an App I created using Google App Inventor for Android, which communicates with an Arduino with ethernet shield.
The lights and AMP for speakers for outdoor is controlled by X10. The curtains uses an H-Bridge and a small motor from a small battery operated screw driver and pulley system. The HVAC is controlled using some Solid State Relays and a couple analog temperature sensors.
It seems you're trying to do what I've accomplished.
If you need a parts list, I'll provide one. I think I did all of it for fairly cheap. Just a lot of research and programming time... but if you want to follow my route, I'll save you the headache and trouble my sharing my codes and source code for the app.
My previous project, I used PHP and a home server to run the home automation, but seeing how my homeserver draws 200 watts, I cant leave it on 24/7, so that kill the automation idea on it.
I reorganized all my ideas and managed to run ALL of it on the Arduino with an ethernet shield instead!! Actually... it's a seeeduino mega, which is an arduino mega 1024 clone. But you can probably do all of it on a Arduino 328.
I prototyped on a 168, and it ran out of memory and would glitch a lot. So it's better to go with something with more memory. Also, I originally planned on using all the pins on the Mega for inputs and relays, but adding X10 saved me a whole bunch of pins, so I'm barely using up the pins available on the 328 when I prototyped.
Anywho, without further ado... here's the video:
A basic description: This is an App I created using Google App Inventor for Android, which communicates with an Arduino with ethernet shield. The lights and AMP for speakers for outdoor is controlled by X10. The curtains uses an H-Bridge and a small motor from a small battery operated screw driver and pulley system. The HVAC is controlled using some Solid State Relays and a couple analog temperature sensors.
Wow, I haven't been on here a while, but I'm interested! Good idea! Never thought about this before.
You're going a little more extensive than I would've gone with it though.
I would just add some 240V SSR to the arduino so I can control the timer and when the pool goes on/off so I can measure power usage vs chlorine level.
If you switch to using UV light filter (kinda expensive), you wont even need to worry about measuring chlorine level, just pH.
Why do you need to actuate the 2" valves for?
You can get one of those irrigation solenoid controlled valve and control those with arduino if all you're doing is using it to fill up the pool when it's low, or turn on a water line for a slide or something.
I'm going to incorporate this into my pool!
I'm using X-10 right now for home automation along with an Arduino. Shouldn't be difficult to add a couple valves for random stuff like that.
What I did, is use a boolean value as a flag for each of the light. Depending on the state of the boolean value for the light, it displays different color for the button, making it the status. Ofcourse this is only in the Arduino and does not reflect the actual reading in the light itself. Because X10 receiving is pretty slow, I didn't want the website to wait for the arduino to read all the X10 state first before opening up the page. Since using the interface is the ONLY way to turn on/off the light, it'll always be in sync with the boolean value. If I use the hardwired X10 remote control to turn on/off the light, then the light will be out of sync. The work-around I used for this is to use designated control for turning on/off the light instead of "toggle" it on/off. This way, if the light is OFF, but the Arduino thinks it's on... all I have to do is turn it "off" on the interface, then the arduino will issue X10 command for off... which the light will ignore since it's already off. Then it'll be back in sync, so the next time I press the button, it'll turn on. This way, if it ever get out of sync, I press the button twice, and it'll sync itself back up again.
As I add more lights, I'll create an Array instead of different booleans... that way I can save more light, and simplify my codes. Also need to create a method that will generate the buttons and another method to take in the toggle commands so I dont use up so much memory of the Arduino.
Haha, it's been in the testing phase for three months!!! Still trying to find the appropriate relays to work for the 220v wall unit for the movie theater room... but the central heat/air is working pretty smoothly.
As for the Microcontroller, I'm running a Seeeduino Mega, which is pretty much the same as a Arduino Mega 1280. I will probably upgrade to the Mega 2560 soon since I will need more memory. I'm already using up 13K of memory on the Mega with just 4 lights and the code for the curtains. Ofcourse, it's not optimized, a lot of redundant coding that could be broken up into functions. But the project is growing and HTML takes a lot of room... Hopefully the 1280 will be enough once I optimize the codes.
I originally planned to use the mega because of the extra pins since I was going to use solid-state-relays to control the lights. Bought 40 of them too... expensive. But it was SUCH a pain to wire them in... and how to run them parallel with switches so the switch can still be used... couldn't figure out the implementation. So I switched to X10 and never looked back. It was much simpler, and easier to configure and no wiring required. It work with very small delay, and is pretty reliable with a repeater and a 2-phase bridge. The X10 transceiver I'm using is http://www.x10.com/products/x10_tw523.htm. Now I just need to buy more X10 modules.