Folks,
I am no network master but have a reasonable understanding of some of the basic issues and would like to find/design a network specifically for a home automation project.
I don't want to get into hardware in this thread but it is likely going to use RS485 modules in true hardware layer so I do not want to be mucking about with colossian detection.
Obviously I could simply go with modbus, or similar, but that by definition has a single point of failure which I would like to avoid.
I could also use modbus and have some sort of token passing code to allow multiple masters to take control as needed that is likely to add significant overhead with respect to development.
However in both these cases lack of a master, for whatever reason, would stop all data transfer and the master, or worse the current master, would effectively have to control everything.
What I want to achieve, at a high level, is a multi node network in a star topology, preferably with the ability to have more than one node on a given leg.
Each node would 'Own' one/some addresses/devices for which it alone could transmit status data. However all nodes would listen to the bus continually scanning for status changes that they may need to act on.
A physical device could be split across nodes, perhaps with a device address common to all nodes and an address prefix per node.
Considder a lamp dimmer, potentially with multiple points of control and/or implimentation.
The lamp is a device on a node or nodes.
Each input is a device on a node.
A command, perhaps ramp to level, would be broadcast by a command device.
Any node owning that device would excited the command and report it's status.
Any node mapped to manage that device, other than the originator of the original command, would update its command status.
Simple ... Alas not at all
There needs to be a way to 'schedule' data transmissions or everything will simply try to talk simultaneously and the system will fail.
The schedule needs to adapt to the number of nodes and devices automatically, without simply having a huge predefined address space that for the most part would be unoccupied.
High level code will be required to decide what to do when there is a conflict of a device fails to respond.
My gut is telling me that a command device should probably only ever issue a transient action request and that device status should be handled separately but I realise that there may be other applicable models.
SO...
Having said all that I Know that this simple description of what is more a wish list than a plan for a protocol is going to need some serious thought. What I am hoping is that there is some model that I am currently unaware of that will do this, the benefit being that all, and there will be many, problems will already have been considered.
I want to implimentation the scheme using Arduino hardware but at this stage I expect that that is of little conciquence.
Thoughts people,
Am I missing something fundamental?
Is there a better/different approach?
Is there a name for a system that consists of many devices all with their own agenda sharing access to a broadcast data pool?
Is anything commercial working this way? (I suspect that Clipsal CBus may be)
Feel free to be frank, I am under no illusions here, just because I want this thing to be relatively simple doesn't mean that it is possible.
Cheers,
Al
.
I am no network master but have a reasonable understanding of some of the basic issues and would like to find/design a network specifically for a home automation project.
I don't want to get into hardware in this thread but it is likely going to use RS485 modules in true hardware layer so I do not want to be mucking about with colossian detection.
Obviously I could simply go with modbus, or similar, but that by definition has a single point of failure which I would like to avoid.
I could also use modbus and have some sort of token passing code to allow multiple masters to take control as needed that is likely to add significant overhead with respect to development.
However in both these cases lack of a master, for whatever reason, would stop all data transfer and the master, or worse the current master, would effectively have to control everything.
What I want to achieve, at a high level, is a multi node network in a star topology, preferably with the ability to have more than one node on a given leg.
Each node would 'Own' one/some addresses/devices for which it alone could transmit status data. However all nodes would listen to the bus continually scanning for status changes that they may need to act on.
A physical device could be split across nodes, perhaps with a device address common to all nodes and an address prefix per node.
Considder a lamp dimmer, potentially with multiple points of control and/or implimentation.
The lamp is a device on a node or nodes.
Each input is a device on a node.
A command, perhaps ramp to level, would be broadcast by a command device.
Any node owning that device would excited the command and report it's status.
Any node mapped to manage that device, other than the originator of the original command, would update its command status.
Simple ... Alas not at all
There needs to be a way to 'schedule' data transmissions or everything will simply try to talk simultaneously and the system will fail.
The schedule needs to adapt to the number of nodes and devices automatically, without simply having a huge predefined address space that for the most part would be unoccupied.
High level code will be required to decide what to do when there is a conflict of a device fails to respond.
My gut is telling me that a command device should probably only ever issue a transient action request and that device status should be handled separately but I realise that there may be other applicable models.
SO...
Having said all that I Know that this simple description of what is more a wish list than a plan for a protocol is going to need some serious thought. What I am hoping is that there is some model that I am currently unaware of that will do this, the benefit being that all, and there will be many, problems will already have been considered.
I want to implimentation the scheme using Arduino hardware but at this stage I expect that that is of little conciquence.
Thoughts people,
Am I missing something fundamental?
Is there a better/different approach?
Is there a name for a system that consists of many devices all with their own agenda sharing access to a broadcast data pool?
Is anything commercial working this way? (I suspect that Clipsal CBus may be)
Feel free to be frank, I am under no illusions here, just because I want this thing to be relatively simple doesn't mean that it is possible.
Cheers,
Al
.