OpenHab
- Manages Internet & house wide context (e.g. winter)
- Orchestrates processes that involve things beyond the Arduinos like calendars, LAN devices, etc.
REST proxy
- Deal with things that have complex state which cannot be deterministically controlled by the Arduinos
- Mechanized awnings
- Things that the state may be affected by external things like an electrical failure (e.g. A/C, space heaters)
Master Node
- Manages some global context (e.g. night time, need lights, etc.)
- Orchestrates house wide processes
- Water heater
- Global lighting schemes
- Courtesy lights (these rules could be pushed ot slaves but for flexibility reasons they are on the master)
- The master node includes an slave node that plays by the same rules as everybody else
Slave Node
- Should deal with all the local automatism
- Lights
- RFID access control (accounts are stored locally)
- Does not have an idea of time, state or context
- A little bit of global context is provided by the master through SetMode (e.g. night time, winter). This is used to change lighting logic
Surrogate
- No state in memory (may report value of sensors)
- Interaction
- Slaves poll surrogates and copy their info to the slave’s memory (acquired by the master during extended poll)
- Surrogate state is changed by commands directly from the master (tunneled using the C command)
- For details on payload see RESTServer.cpp:606
- The slaves process the surrogate inputs and generate events if needed (no event or constants are assigned by resourceProcesor.pl)