This strikes a chord. I have been mulling over options for a similar network, though in my case I was thinking of a home- rather than greenhouse automation, but I think the requirements might be very similar.
First, re. Gordons suggestions of "more Raspis": This would be a good solution when either the number of sensors/actuators is limited, or their locations are clustered, so that many of them can be connected to each Raspi without special transceivers. If, however, you have a large number of sensors and actuators, fairly evenly distributed over a sizeable area, I think some form of lightweight network would make better sense.
My main conclusions to date:
-Use RS485 (see http://en.wikipedia.org/wiki/RS-485
) for transport. This is a "multi-drop" (meaning, for practical wiring purposes, daisychain-able) bus, using differential (twisted wire pair) signalling for long reach. (Up to 1200 meters according to that wikipedia article, but I suspect that that is a best case, using special RS485 cable, low baud rate, and few devices connected. But, even if we can only manage a tenth of that reach, I think we would have solved very many problems.) Transceivers for this bus are also very cheap.
-Use CAT5/5e/6 network cable and RJ45 connectors, as these are both ubiquitous and cheap. This cable is not a quite perfect fit for RS485, which calls for 120 ohms characteristic impedance and shield, while network cable has a characteristic impedance of 100 ohms, and while you can get it shielded (STP; shielded twisted pair), the more common and cheaper variety is unshielded (UTP; unshielded twisted pair). The impedance is close enough though, that it has been used successfully for RS485, and I expect that in a reasonably interference free environment, even the unshielded version will give good results.
-Another reason to use network cable is that it gives us extra wires which we can use for power delivery. Not very high power, since the wires are thin, but sufficient to run a microcontroller and a few sensors; more power hungry devices, like most actuators, would still require their own power supplies.
-As RS485 only defines the transport layer, we will need to select or design a communication protocol. Here, I am not quite certain what is best. I have been looking at Modbus, which is a common protocol for industrial devices, but find it a bit limiting. I would have liked to extend it with stuff like automatic address allocation and standardized device ID and capabilities reporting.
-Last but not least, drivers and software will need to be written for the Raspi, and a reference firmware (to be adapted to each case) for the microcontrollers of the slave devices. I could handle the microntroller end, once the protocol has been settled, but I am a Linux noob, and I confess that I find the thought of jumping into the deep end by starting my "Linux experience" with writing device drivers, somewhat scary
I have some more thoughts on this matter (how much power we can deliver, how to make the best use of it, best wiring scheme, how to implement automatic addressing, etc.), but this post is already too long. I can expand on it later, if anybody is interested.
Best regards, Kári.