Hi Flump,
In your project context...
Upstream - Means build an (external / remote) device to support a web server & virtual buttons - which will instruct some other PC/device to turn your controlled outputs on/off
Downstream - use a PC running a web serverr - to instruct some (external / remote) device to turn connected outputs on/off?
Neither is a tidy solution unless your problem
explicitly requires two separate 'computers'...
Since your requirement for 'web' access already defines the need for 'remote' control, one 'computer' would typically be enough to do everything you want.
i.e. << upstream --- downstream >>
USER (phone, tablet/PC, web browser)
<-||-> Web server
<---> Output drivers
<===> 'real world' control I/O
Does that make more sense ? Everything between -||- and === can be achieved in one box if that will fit your project topology.
The only
physical boundary you have to consider in most cases is between thre remote and the web-server (which may require security / port-forwarding/NATting etc)
...I would like to build a web controlled usb interface
this is the idea:-
a web page would have two button on it which are ON or OFF
when someone clicks the button it sends a signal to my computer
which sends a signal down a usb lead to activate something and make it ON or OFF
You could implement the web 'server' to hold your 'buttons page' on --
(i) a dedicated computer (higher standby power) or
(b) a small embedded controller (low standby power) - like an Arduino with network connectivity.
Of course somewhere else - you'll need a PC/phone/tablet to display the 'web page', and to click on the 'virtual' buttons.