How do you intend to control the many relays? Individual lines to every relay will sum up into a huge number of wires. Better were a bus system with addressable nodes (I2C, CAN, Ethernet...), that also can be extended at any time. Line drivers are almost required, for secure signal transmission, so that I2C can not be used across a house.
I'm not happy with your installation plans. What looks good for a breadboard model, is not normally applicable in a larger area.
Don't forget fuses, or you risk failure of your entire installation on a local problem.
I'd suggest RS485 from the master out to the remotes, with the remotes having intelligence to receive a serial message and manage the relays from there. Way less wiring, each remote can be powered locally. Remotes can then report status too if you want to set up sensors, or have light switches that can be turned on manually at the remotes sites, temperature, etc.Can make a little custom card with equivalent of a Promini, RS485 chip (MAX488 perhaps), wallwart for power, relay driver (shift register like TPIC6B595) and that can also control other things, some sensors, etc.
Using an opto would provide high reliability and could handle long cable runs. However, you'll need a separate power supply. Yeah, there'll be a practical limit to how many relays you would want to control like this due to the increased wiring and digital outputs required.
Next comes the power source for each node, for operating the controller, Ethernet shield, relays etc. PoE is possible, but only with one voltage and limited current. AFAIK it also requires a splitter, to separate the power from the signal lines. In this case every node should have a fuse on its power line, so that an inadvertent short does not shut down the entire network supply. If higher voltage or current is required by an actuator, a local power supply is required on such nodes, at least a step-up or step-down regulator, or a wall wart or other mains supply.
I like the circuit and it doesnt seem that much harder than the current one. Would you recommend implementing something like this?
What do you mean on practical limit to how many relays I want to control like this?
So in a 3 gang switch, I would need 1 x hot, 1 x adapter ground, 1 x arduino ground, 2 pins x 3 = 9 lines, its a shame cat 6 only has 8. Maybe i can send arduino things through cat 6 and external power supply through phone cable?
I am at a crossroads as the two most helpful people on this thread are giving differing advice.
Yes, I recommend using opto drivers, especially if using one main Arduino that controls "dumb" (non-MCU) relay modules at various distant locations.
Yes, that's a good possibility. Also, the phone cable would be totally isolated from the cat6 (the cat6 wiring is the input side of the opto, the phone cable is the relay coil +DC and ground).
Could use a hybrid solution. One master MCU communicating with slaves that cover an area (room or floor/level). Each slave MCU would would control how many relays are required for each area through cat6.