I evaluated couple of choices for wired setup (I don't want to use wireless unless absolutely necessary - its more expensive, slower and potential reliability&security issues, also devices need to deal with power supplying).
- 1wire is good for slow & non-critical sensors (e.g. temps). Since its polling bus its not as good for event reporting and fast reaction like motion sensing & switches, as it gets slower and slower for more devices. Also its hardware community not that huge, it almost all centered around Dallas Semi.
- Ethernet. Very good performance & all features you may need - but may be actually overkill for home automation. Fairly expensive if you counter cost of switches, also local interfaces (e.g. for Arduinos) are not cheap either. And power supply gets cumbersome (its not that hard e.g. via PoE splitters but not as easy as with USB and adds even more extra cost).
So personally I've decided to use USB (yes, plain vanilla USB 2.0) to provide wiring backbone of my home automation:
- USB cables & hubs (esp. if you just go with 2.0) are dirt cheap
- its very time-proven and obviously community & manufacturing support is massive
- its high performance & reliable. You get bidirectional high-speed communication, with asynchronous events almost instant reporting
- it provides 5V power at same time
Its fairly easy to get reasonable cables up to 5m (I recommend cables with 20AWG power supply wires which will get minimal voltage drop for low-power). For longer distances I'll just put powered hub in the middle.
I will use Arduino nanos with mysensors firmware as termination points. So basic topology is:
Code: Select all
= Pi
-> direct-connected sensors
=> Self-powered hub ("near hub")
=> Arduino A
-> sensor/actuator
-> sensor/actuator
....
=> Arduino B
-> sensor/actuator
-> sensor/actuator
....
=> Self-powered hub ("far hub")
=> Arduino C
-> sensor/actuator
-> sensor/actuator
....
=> RFLink
...
Assume each => is about 5m USB cable possible, so can cover quite distance.
-> is sensor-dependant cable, but also could cover some distance, creating local "star" network of sensor/actuator coverage around each Arduino local controller.
P.S. And btw, yes, you can just put USB over existing ethernet cable pairs directly (or use active USB-ethernet adapters for some/all segments).