I'm currently working on a GPL'd, Linux-based, power management
system for off grid houses. As I own an off-grid house, I figured I'd
put my 20 year background in embedded systems, robotics, and factory
automation to work.
The heart of AbelMon is it's ability to use a multitude of sensors and devices through carefully designed APIs. The core concept behind AbelMon is simple. It's pretty common in an off-grid situation to have fully charged batteries, but still have power from photovoltaic panels, or wind generators. Most folks living off grid learn to do things like wait till this time to do laundry, pump water, etc...
What AbelMon is intended to do is to mix data logging and power monitoring to enable the software to control where the power gets distributed in this case automatically. Many things, like running heaters, pumping water into a cistern, or occasionally turning on a basement vent fan to get rid of trapped radon gas. Most diversion load systems handle only one simple relay, and have no logic behind them.
How the power is distributed is based on a device profile. Some devices, like water pumps can be turned on and off at any time with no damage done. Other operations, like doing a load of laundry has a certain amount of time and power they need to finish the operation once started. AbelMon uses this data to efficiently schedule how much power goes where.
FeaturesWhen AbelMon is initially released, it will support the following features. This is not vaporware, just a huge project in it's early stages of development, and currently, entirely self funded by my other consulting work.
Initially this supports the GDB protocol, (for remote debugging :-), the X10 CM11A protocol, which is very common for a wide range of devices, and Trace inverters. The simulators are great for regression testing and debugging protocols, cause you can talk to both ends of the connection. On startup, AbelSim creates a pseudo tty for the other programs to connect to just like there was a real serial cable.
The heart of AbelSim is it's XML based serial protocol engine. The protocol engine uses an XML file to describe the various behaviours of the protocol transmission, and the serial handling code does the rest. This enables one to simply add support for any serial based device, like X10 controllers.