I been working with XAP for the past couple of months with the objective of making a fully distributed HA environment. It started as I
was looking for a solution where my 1-wire data collection could be run independent of Homeseer. I'm continually restarting Homeseer and disrupting the data collection as I evaluate new development activities.
XAP provides a very nice solution to the problem and it has the advantage of being a documented standard with a supportive and growing community. It allows interfaces and applications to be run on any computer of a network without the problems associated with DCOM, authorizations, or object bindings.
The structure I have setup is geared to many individual small applicaitons doing one specific function and interfacing with the XAP framework. It is like an army of agents running on the network. Agents can come and go without disruption of the network overall.
At this time I have a small set of "tools" upon which the environment is being bootstrapped. This is in addition to the core tools available from the XAP organization. I also have a plugin host that allows each homeseer plugin to be run by itself. Each plugin is now its own application and not bound to Homeseer, but interfaces to homeseer via the XAP framework. The binding element is an XAP Homeseer plugin that makes Homeseer act as just another agent on the network.
A this time I have the following working
1. mcsXAP: Homeseer plugin which allows homeseer to participate in the XAP environment. It includes triggering capability and message source capability.
2. xapScope: Application that stores XAP traffic in a database much like one would use a storage scope to observe waveforms
3. xapWritelog: Application that collects all hs.Writelog commands from the network and stores them in a database. Functionally similiar to UltraLog, but applies to any application on the XAP network rather than just Homeseer. Actually could be replaced by Ultralog, but used initally during the bootstrap.
4. xapProcess: Application that can start, stop, restart, and collect RAM and CPU utilization statistics for processes running anywhere on the network.
5. xapConfig: Application to consolidate access to all applications on the XAP network. It provides access to the setup pages and a control GUI to interact with xapProcess. This allows a control console to be run on any computer and prevents the task bar from filling up with icons to get access to the various agents.
6. xapTemp0x: Application that interfaces with Temp05/08. Readings are placed on the XAP network and control of outputs also routed via the same mechanism.
7. xapDataCollection: Application that grabs classes of data and store to a database. It is the companion to xapTemp0x and mcsTemperature plugin. The other 1-wire and CSV input components of mcsTemperature will be split out as well in the future.
8. HomeseerOverThere(HOT): Host for Homeseer Plugins. Multiple instances of HOT are run with each instance holding a Homeseer plugin. I have tried a variety of plugins for basic functionality. The MR26a, CM19A, ADIOcelot are fully tested as I/O type units. The W800 was
shown to not work in this environment. mcsMOvement is tested as an example of one that does not have an IO interface, but provides
value-added processing. Most of the pluigns available from the updater were run just to demonstrate interface compatibiltiy, but no
testing of these beyond that point.
The attached document has been evolving as the development proceeds. I'm posting it now to see the level of interest, obtain any feedback, and see if any others would like to be involved in the development.
was looking for a solution where my 1-wire data collection could be run independent of Homeseer. I'm continually restarting Homeseer and disrupting the data collection as I evaluate new development activities.
XAP provides a very nice solution to the problem and it has the advantage of being a documented standard with a supportive and growing community. It allows interfaces and applications to be run on any computer of a network without the problems associated with DCOM, authorizations, or object bindings.
The structure I have setup is geared to many individual small applicaitons doing one specific function and interfacing with the XAP framework. It is like an army of agents running on the network. Agents can come and go without disruption of the network overall.
At this time I have a small set of "tools" upon which the environment is being bootstrapped. This is in addition to the core tools available from the XAP organization. I also have a plugin host that allows each homeseer plugin to be run by itself. Each plugin is now its own application and not bound to Homeseer, but interfaces to homeseer via the XAP framework. The binding element is an XAP Homeseer plugin that makes Homeseer act as just another agent on the network.
A this time I have the following working
1. mcsXAP: Homeseer plugin which allows homeseer to participate in the XAP environment. It includes triggering capability and message source capability.
2. xapScope: Application that stores XAP traffic in a database much like one would use a storage scope to observe waveforms
3. xapWritelog: Application that collects all hs.Writelog commands from the network and stores them in a database. Functionally similiar to UltraLog, but applies to any application on the XAP network rather than just Homeseer. Actually could be replaced by Ultralog, but used initally during the bootstrap.
4. xapProcess: Application that can start, stop, restart, and collect RAM and CPU utilization statistics for processes running anywhere on the network.
5. xapConfig: Application to consolidate access to all applications on the XAP network. It provides access to the setup pages and a control GUI to interact with xapProcess. This allows a control console to be run on any computer and prevents the task bar from filling up with icons to get access to the various agents.
6. xapTemp0x: Application that interfaces with Temp05/08. Readings are placed on the XAP network and control of outputs also routed via the same mechanism.
7. xapDataCollection: Application that grabs classes of data and store to a database. It is the companion to xapTemp0x and mcsTemperature plugin. The other 1-wire and CSV input components of mcsTemperature will be split out as well in the future.
8. HomeseerOverThere(HOT): Host for Homeseer Plugins. Multiple instances of HOT are run with each instance holding a Homeseer plugin. I have tried a variety of plugins for basic functionality. The MR26a, CM19A, ADIOcelot are fully tested as I/O type units. The W800 was
shown to not work in this environment. mcsMOvement is tested as an example of one that does not have an IO interface, but provides
value-added processing. Most of the pluigns available from the updater were run just to demonstrate interface compatibiltiy, but no
testing of these beyond that point.
The attached document has been evolving as the development proceeds. I'm posting it now to see the level of interest, obtain any feedback, and see if any others would like to be involved in the development.
Comment