This manual describes version 0.1 of Power Guru.
Copyright © 2005 Rob Savoye
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this link or in the file COPYING-DOCS distributed with this manual.
This manual is part of a collection of GNOME manuals distributed under the GFDL. If you want to distribute this manual separately from the collection, you can do so by adding a copy of the license to the manual, as described in section 6 of the license.
Many of the names used by companies to distinguish their products and services are claimed as trademarks. Where those names appear in any GNOME documentation, and the members of the GNOME Documentation Project are made aware of those trademarks, then the names are in capital letters or initial capital letters.
DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT:
DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.
Revision History | |
---|---|
Revision Power Guru Manual V0.1 | May 2005 |
GNOME Documentation Project |
Table of Contents
This is power monitoring system for Xantrex (was Trace) and Outback Power Systems products.
Power Guru is a tool for remotely controlling Xantrex and Outback Power Systems products. In my case, an old Trace 4024 and an Outback MX-60.
This all started when I bought a fixer upper, off-grid house... Like many projects, this one seems to have fallen into my lap, more than it was a concious idea. Over time, the concept has evolved into an actual product in development. That project, AbelMon, is a much larger project, and this application Power Guru, is part of that project spun off into a standalone application.
There are other similar products, but for WinDoze are Right Hand Engineer's Winverter or Maui Solar Software's TraceTools.
PowerGuru is an interface to your Inverter or charge controller. It's main purpose is to handle the low-level work of reading and writing from these devices. At this level PowerGuru is an SDK for C,C++, or Java programers to work with Xantrex and Outback products.
The backend of PowerGuru is a daemon that runs all the time and is connected via serial ports to your power production equipment. This daemon handles all the ugly work of interfacing with each device. The daemon has two modes, one is data-logging mode, and the other is a command mode.
The goals of this are project are to make it easy to datalog or remotely control your inverter or charge controller. The daemon is designed to be reasonably small, so it can run on 12VDC low-power computer systems 24 hours a day, 7 days a week. Since everything is done through a network interface, a GUI can use the SDK to talk to the backend for all functionality. This makes it easier for somebody (not me, I suck at GUIs) to write good GUIs, without having to reverse engineer these protocols like I have. I'd prefer to stick to bit-twiddling.
If I'm not home, like on a business trip, I want to be able to check on the status of my house while I'm gone. I have had weird things happen like needing to reboot the charge controller, or a few fuses in the combiner box blowing for no apparent reason. I'd also like to be able to store the default configuration settings for my inverter or controller, and set a new one with my prefered default settings off disk after a full system reset.
If a house is a rental and you are the landlord, or you have an off-grid vacation house, or you are a solar installer, and want to offer remote support for your customers as an additional service, this is the type of thing I want PowerGuru to support.
In this mode, the PowerGuru daemon just polls all the devices that have output data, and writes it directly to an SQL database. The time between data collection cycles can be set by the user, since the amount of data can be huge, and doesn't often vary much.
In this mode, the PowerGuru daemon acts as the remote agent to control the device. Client programs use a network connection (I'm contemplating using SNMP) to operate the commands supported by each device. This enables the settings of each device to be stored and set remotely.
There are two planned user interfaces for PowerGuru. One is web based, and will enable the plotting of the logged data in various forms. The other interface is designed to run standalone without the need for a PHP enabled web server. It is also designed to be run from a PDA or laptop in the field with a direct serial connection to the device. This is for installers so they can download the default settings they prefer to the device, or extract the current device settings to store in a disk file.
The web interface is written in PHP, and should be supported by most all web servers and browsers. This is primarily a data mining and display application to plot the power readings in graphical manner. This UI is currently under development.
I want to be able to run PowerGuru on multiple systems, namely Linux, Darwin, and Win32. The choice of a cross-platform user interface toolkit that runs on all three is not a trivial decision. Most PDAs these days runs Qtopia (written in QT), PalmOS, or WinCE. Other than Java, a language I truly dislike, the only multi-platform solution supported on all platforms is QT. (called Qtopia on a PDA) I'm not a GUI programer, I'm an embedded systems type, so I'd prefer to only write the GUI once.
I have long prefered GTK+/GNOME over QT/KDE mostly cause I'm a "free software" purist, and I'm not sure I want to learn either QT or Java right now anyway. The original GUI for PowerGuru back when it was still called "TraceGUI" was written in GTK1.2, using the Glade prototyper. This can run on Linux, Darwin and Win32, but not my PDA.
It is possible to run Tcl/Tk on most PDAs as an addon package. For my Zaurus it needs an X11 environment (I run OpenZaurus (a Debian port) on my Zaurus), plus Gentoo also runs on the Zaurus with X11 support. There are also native Tcl/Tk ports for PalmOS and WinCE, and it has a visual development environment as well. I also used to be one of the Tcl/Tk maintainers, so I wouldn't have the learning curve and time drain of using QT or Java.
PowerGuru supports multiple protocols, since it supports multiple devices. As documentation of these protocols is often non-existant or there is a lot of supporting info needed by developers that isn't covered in the existing manuals, I figured I'd document my experiences with these systems from my perspective as an embedded systems engineer with over 25 years experience.
The SWCA cable is required for all communication to a Xantrex inverter. The female DB25 connector on the inverter is labeled as remote, but it is not a standard RS232-C port. It's actually a "Xantrex Remote Port". The SWCA cable supplied by Xantrex converts this remote interface to a standard RS232-C, where it can communicate to a PC.
The SWCA Cable also comes with an ancient DOS program, which should be thrown out. All this program does is supply a very simple GUI that is a clone of the display on the inverter. If you wanted braindead software, you wouldn't be reading this manual for PowerGuru;
Other similar products, but for WinDoze are Right Hand Engineer's Winverter or Maui Solar Software's TraceTools.
The Xantrex series of inverters don't support a true remote protocol, like most of us think of them. All the inverter gives us is a simple ASCII based terminal interface. As the inverter's control panel is a 16 character by 2 line LCD display, all output from the inverter fits into 38 character wide lines.
All the settings are continuously displayed while you are at that menu item. This example shows the output from the Meter Menu's Input Amps AC item:
All data stops being displayed when a different menu heading is selected. There are other problems, since there appears to be no flow control, and a half-duplex connection as well. If there is a lot of output from the meters, when you send a character it often gets ignored. I've found it necessary to send the command character several times until the inverter responds. If you send them too fast, they also get ignored.
To work around this problem, at least in my own software, I had to create a data structure that contains all the command strings that come from the inverter. This way when I go to a desired menu item under a particualar heading, I can check the display to make sure the program is actually where it thinks it is. This synchronization makes sure we're at the proper place before reading or setting data. It also makes it a little slower, but accuracy is important.
The top data logging speed of a Xantrex inverter is about 3-4 complete traversals of all 8 meters per minute. It is also possible to cache readings, and then write them all at once to the database. This is for modem or other intermittent forms of communication to an outside database.
The serial port on the SWCA cable defaults to 9600 baud, no parity, 8 data bits. I've used both Minicom and Ckermit to successfully control my inverter, as well as my own C/C++ code.
It is possible to control the inverter via a terminal program. Each of the buttons on the inverter's control panel has a keyboard equivalant.
Keystroke | Function |
---|---|
key | Select Inverter. 1 through 8 is the inverter's ID number. 1 is the default. |
key | Menu Headings Left (minus) |
key | Menu Heading Right (plus) |
key | Menu Item Up |
key | Menu Item Down |
or key | Set Point Lower |
or key | Set Point Higher |
key | Inverter On/Off (same as the red button on the inverter control panel) |
key | Generator On/Off (same as the green button on the inverter control panel) |
key | Setup Menu (same as pushing the green and red butons on the inverter's control panel at the same time) |
or key | LED Status |
key | Version number of SWCA |
key | Set Terminal Mode |
This is a list of all of the commands as they are displayed by the inverter. Spacing, etc... are important, since lacking a real protocol, we're stuck parsing these text messages for what we want.
This is a list of all the User menus. Most users menus don't change anything about how the inverter operates but the time of day setting, and the generator timers. Most of these menues are informational
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Inverter | Enumeration | This sets the inverter mode. Off is self explanatory. Search mode puts the inverter in a power-saving mode, and only comes out when the load is over the search limit. (usually 16 watts) |
CHG avail. only | none | Information message |
Press red or | none | Information message |
to move cursor. | none | Information message |
Inverter OFF to | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Generator | Enumeration | This sets the generator mode. Auto is for Auto Start, and EQ is for equalizing batteries. |
Gen under/over | none | Information message |
Generator start | none | Information message |
Generator sync | none | Information message |
Load Amp Start | none | Information message |
Voltage Start | none | Information message |
Exercise Start | none | Information message |
Move cursor to | none | Information message |
generator error. | none | Information message |
If no start in 6 | none | Information message |
If Gen starts & | none | Information message |
then stops the | none | Information message |
not attempt | none | Information message |
gen auto start | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Press reset now | Enumeration | This sets the generator mode. Auto is for Auto Start, and EQ is for equalizing batteries. |
Revision 4.10 | none | Information message |
5916 195th St NE | none | Information message |
98223 USA | none | Information message |
Ph 360-435-8826 | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Inverter/charger | integer | The amount of current the inverter (or when it's in charging mode) is putting out. |
Input | integer | The amount of current that the inverter is receiving from a power source, like the generator. |
Load | integer | This is the amount of current that is being used by AC devices. |
Battery actual | float | This is the actual voltage in DC of the battery bank. |
Battery TempComp | float | This is the temperature compensation voltage in DC. |
Inverter | integer | This is the AC output voltage of the interter. |
Grid (AC1) | integer | This is the AC input voltage of the power grid (assuming you have a grid intertie system). |
Generator (AC2) | integer | This is the AC input voltage from the generator. |
Read Frequency | integer | This is the frequency in Hertz of the inverter. In the US, this should be around 60. |
AC1 & AC2 volts | none | Information message |
inverter synced | none | Information message |
Batt volt actual | none | Information message |
LBCO,HBCO,LBX, | none | Information message |
and gen starting | none | Information message |
Batt volt temp | none | Information message |
float,bulk,eq & | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Over Current | Boolean | This is ON when the inverter is putting out too much current |
Transformer | Boolean | This is on when the inverters transformer is too hot. |
Heatsink | Boolean | This is ON when the heat sink is too hot. |
High Battery | Boolean | This is ON when the batteries are over voltage. |
Low Battery | Boolean | This is ON when the batteries are low. |
AC source wired | Boolean | This is ON when you have a wiring problem. |
External error | Boolean | This is ON when there is an error in stacked inverters. |
Generator start | Boolean | This is ON when there is an error in starting the generator. |
Generator sync | Boolean | If this is ON, there is a power problem with your generator. |
Gen under/over | Boolean | This is ON when the generator is over or under speed. |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Clock hour | time | This sets the hours part of the current time. |
Set Clock minute | time | This sets the hours part of the current time. |
Set Clock second | time | This sets the seconds part of the current time. |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Start Quiet | time | This is the the start of the time period when the when your generator won't be started automatically. |
End Quiet | time | This is the the end of the time period when your generator won't be started automatically. |
inverter synced | none | Information message |
Gen doesnt run | none | Information message |
time unless batt | none | Information message |
than LBCO volts | none | Information message |
or load > load | none | Information message |
To defeat timers | none | Information message |
If exercise days | none | Information message |
gen will always | none | Information message |
This is a list of all the setup menus. Unlike the user menus, you should know what you are doing before you change any of these values. If something goes wrong, reset your inverter to the factory defaults.
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Grid Usage | Enumeration | This sets the grid usage. |
Set Low battery | integer | This sets the low battery cut out voltage. |
Set LBCO delay | integer | This sets the LBCO delay. |
Set Low battery | Boolean | This sets the low battery cut in voltage. |
Set High battery | integer | This sets the high battery cut out voltage. |
Set search | integer | This sets the wattage that determines when the inverter comes out of search mode, and turns on. |
Set search | integer | This sets the search watts increment/decrement increment, which must be a multiple of 16. |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Bulk | float | This is the amount one must reach before selling power. |
Set Absorbtion | time | This sets the absorbtion time. |
Set Float | float | This sets the float voltage. |
Set Equalize | float | This sets the equalization voltage. |
Set Equalize | time | |
Set Max Charge | float | This sets the maximum charging current. |
Set Temp Comp | Enumeration | This ets the type of the battery, so temperature compensation works. |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Grid (AC1) | integer | This sets the Grid current input. |
Set Gen (AC2) | integer | This sets the generator current input. |
Set Input lower | integer | This sets the lower input voltage. |
Set Input upper | integer | This sets the upper input voltage. |
In SELL mode AC1 | none | Information message |
fixed at 88% to | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Load Start | integer | This sets the voltage for when the generator should come on to help with a high load. |
Set Load Start | float | This sets the delay in fractions of a minute for the generator to delay when starting. |
Set Load Stop | float | This sets the delay in fractions of a minute for the generator to delay when stopping. |
Set 24 hr start | float | |
Set 2 hr start | float | |
Set 15 min start | float | |
Read LBCO 30 sec | float | |
Set Exercise | integer | |
Set Exercise | none | Information message |
Set Exercise to | none | Information message |
See menu 9 to | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set RY7 Function | Enumeration | |
Set Gen warmup | integer | |
Set Pre Crank | integer | |
Set Max Cranking | integer | |
Set Post Crank | integer |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Relay 9 | float | Set the voltage for when relay 9 should turn on. |
R9 Hysteresis | float | Set the hysteresis level for relay 9. |
Set Relay 10 | float | Set the voltage for when relay 9 should turn on. |
R10 Hysteresis | float | Set the hysteresis level for relay 9. |
Set Relay 11 | float | Set the voltage for when relay 9 should turn on. |
R11 Hysteresis | float | Set the hysteresis level for relay 9. |
close on batt > | none | Information message |
open on batt < | none | Information message |
relays have 2 | none | Information message |
close, 0.1 sec | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Start Bulk | time | |
To disable timer | none | Information message |
If grid timer | none | Information message |
time after start | none | Information message |
In SLT mode dont | none | Information message |
timer. It is the | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Low Battery | float | |
Set Low battery | float | |
See menu 9 to | none | Information message |
Make sure LBX is | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Battery Sell | float | |
Set Max Sell | integer | |
See menu 9 to | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Set Start Charge | time | Set the start time for charging the batteries. |
Set End Charge | Set the time to stop charging the batteries. | |
After Start | none | Information message |
SELL mode | none | Information message |
FLT mode | none | Information message |
After End Charge | none | Information message |
SELL mode sells | none | Information message |
FLT mode drops | none | Information message |
timer on when | none | Information message |
timer off when | none | Information message |
Sell and float | none | Information message |
SLT and LBX mode | none | Information message |
These are the messages as displayed by the inverter:
Menu Item | Data Type | Description |
---|---|---|
Batt temp comp | none | Information message |
voltage reading | none | Information message |
HBCO resets at: | none | Information message |
1.5v/12v under | none | Information message |
LowBattTransfer | none | Information message |
modes only. Goes | none | Information message |
at LowBattCutIn. | none | Information message |
For LBX mode set | none | Information message |
below LBCI so | none | Information message |
cycle batteries | none | Information message |
set LBCO below | none | Information message |
Unlike the Xantrex products, the Outback products support a real protocol with real flow control.
The Outback serial port runs at 19200 baud, 8 data bits, no parity, and 1 stop bit. Outback appears to use real UARTs, thank you!
Flow control to an Outback product is done via the DTR and RTS pins on the serial cable. This is a non-standard way to control the flow of data, but it works. For data to flow, the DTR pin must be held HIGH (on), and the RTS pin must be held LOW (off). Toggling either DTR or RTS pins achieves the same effect, but I've been using the DTR pin myself. To get a clean connection, you'll also want to turn off any XON/XOFF types of flow control.
I have also noticed that there are no serial communications programs that run under Unix that can handle this style of flow control. Both Kermit and Minicom only support the standard ways of flow control, and don't let you selectively turn off or on the serial port pins. On Windows I've been told that the only program that does this correctly is called Terminal I added a "console" mode to PowerGuru so I can use my own software rather than depend on 3rd party software that doesn't do the trick.
An MX status message frame is comprised of 49 ASCII numerical characters. A newline used to signify the start of a frame and carriage return is used to signify the end of the frame. These are the only two non ASCII in a message.
On my MX60 (bought roughly 2003), the address field is always wrong. On my unit it says '0', as if it were an FX inverter. Maybe this is because I don't have an FX inverter, I have a Xantrex (Trace) 4024. I plan to put an FX inverter in the Solar Lab, but right now I'm still dealing with saving up the cash for one...
0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039 0,00,32,30,000,128,00,00,000,00,265,002,140,039
Index | Byte Value | Data Field | Description |
---|---|---|---|
1 | 10 | Message Start Frame | This is an New Line character denoting the start of the status page. |
2 | X | MX address | The MX address is an ASCII 'A' for unit 0, and an ASCII 'B' to 'K' for the other 9 units. |
3 | 44 | Field Separator | ASCII Comma character |
4 | 48 | Unused | ASCII Zero characters are used to fill unused fields. |
5 | 48 | ||
6 | 44 | Field Separator | ASCII Comma character |
7 | X | Charger current | Range 00-99. This is the current the charger is putting into the batteries. 1 amp increments are used. |
8 | X | ||
9 | 44 | Field Separator | ASCII Comma character |
10 | X | PV current | Range 00-99. The current coming from the photovoltaic panels. 1 amp increments are used. |
11 | X | ||
12 | 44 | Field Separator | ASCII Comma character |
13 | X | PV Input Voltage | Range 000-256. This is the voltage coming from the photovoltaic panels to the charge controller. |
14 | X | ||
15 | X | ||
16 | 44 | Field Separator | ASCII Comma character |
17 | X | Daily Kilowatt Hours | Range 000-999. This is the daily kilowatt hours used since daybreak. |
18 | X | ||
19 | X | ||
20 | 44 | Field Separator | ASCII Comma character |
21 | 48 | Unused | ASCII Zero characters are used to fill unused fields. |
22 | 48 | ||
23 | 44 | Field Separator | ASCII Comma character |
24 | X | MX Aux Mode | Range 00-99. This is the current Auxilary Mode. The value is used to do a tabke lookuop for the mode. |
25 | X | ||
26 | 44 | Field Separator | ASCII Comma character |
27 | X | Error Modes | Range 000-256. The Error Mode is currently unimplemented in the MX. |
28 | X | ||
29 | X | ||
30 | 44 | Field Separator | ASCII Comma character |
31 | X | MX Charger Mode | Range 00-99. The MX Charger Mode is used to do a table lookup for the mode. |
32 | X | ||
33 | 44 | Field Separator | ASCII Comma character |
34 | X | Battery Voltage | Range 000-999. The Battery Voltage is a 3 digit floating point number with the last digit as the fraction. So 251 volts becomes 25.1 volts. Resolution is 0.1V for 12V, 0.2 for 24V, and 0.4 for 48V systems. |
35 | X | ||
36 | X | ||
37 | 44 | Field Separator | ASCII Comma character |
38 | 48 | Unused | ASCII Zero characters are used to fill unused fields. |
39 | 48 | ||
40 | 48 | ||
41 | 44 | Field Separator | ASCII Comma character |
42 | 48 | Unused | ASCII Zero characters are used to fill unused fields. |
43 | 48 | ||
44 | 48 | ||
45 | 44 | Field Separator | ASCII Comma character |
46 | X | Checksum | Range 000-999. The Message checksum is calculated be adding all the digits of the message together, one at a time. |
47 | X | ||
48 | X | ||
49 | 13 | Send of Frame | The end of the message frame is a Carriage Return. |
There are a few tables used to lookup values from the messages. Error codes are not implemented at this time, but the Auxilary and Charger Mode data fields both need to be looked up from a tables.
The Auxilary mode is the current mode running on the MX.
Value | Mode |
---|---|
"00" | Disabled. |
"01" | Diversion. |
"02" | Remote |
"03" | Manual |
"04" | Vent Fan |
"05" | PV Trigger |
FIXME: add much more content!!!
PowerGuru was written by Rob Savoye (<rob@senecass.com>). Please send all comments, suggestions, and bug reports to <rob@senecass.com>. I am available for consulting on a variety of renewable energy and open source technologies. More details at http://www.senecass.com
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
A copy of the GNU General Public License is included as an appendix to the GNOME Users Guide. You may also obtain a copy of the GNU General Public License from the Free Software Foundation by visiting their Web site or by writing to
Free Software Foundation, Inc.
51 Franklin St, Fifth Floor
Boston, MA 02111-1301
USA