<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
    <title></title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    The short story - it seems that GE EP series is (somewhat) supported
    by the <b>blazer_ser</b> driver (haven't tried the USB connection
    yet). I had to use the 'cablepower = none' option as GE only uses TX
    and RX.<br>
    <br>
    <br>
    The longer story - I 'sniffed' the RS232 communication between the
    GE supplied Java software 'upspilot' and UPS. From that I found out
    the baud rate (2400) and I learned about a couple of commands (not
    knowing what they mean):<br>
    <ul>
      <li>CB24</li>
      <li>WH</li>
      <li>Q1</li>
      <li>Q4</li>
      <li>Q7<br>
      </li>
      <li>QS</li>
      <li>...</li>
    </ul>
    Then I user 'minicom' to try these commands out and this is what I
    got:<br>
    <br>
    Q1 -&gt; (232.0 140.0 220.0 001 50.0 2.27 31.0 00000000<br>
    Q4 -&gt; (232.0 243.0 000.0 001 220.0 49.9 001 50.0 342 343 273.0
    31.0 LM<br>
    Q7 -&gt; 07102218014 V_01<br>
    <br>
    OK, I'm getting somewhere - but I have to figure out what all of
    this means. So decide to unpack some .jar files and have a look in
    there. A friend helped by 'de-compiling' all .class files and using
    'grep' I searched for these commands.<br>
    <br>
    There is a file named 'UpsProt.class', which (de-compiled) contains
    this:<br>
    <br>
    /*&nbsp; 25 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[0] = "Q";<br>
    /*&nbsp; 30 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[1] = "Q1";<br>
    /*&nbsp; 35 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[2] = "Q4";<br>
    /*&nbsp; 40 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[3] = "QF";<br>
    /*&nbsp; 45 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[4] = "MD";<br>
    /*&nbsp; 50 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[5] = "QP";<br>
    /*&nbsp; 55 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[6] = "PSmGnLpHqExxxxDxxx";<br>
    /*&nbsp; 60 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[7] = "PF";<br>
    /*&nbsp; 65 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[8] = "T";<br>
    /*&nbsp; 70 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[9] = "TL";<br>
    /*&nbsp; 75 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[10] = "T";<br>
    /*&nbsp; 80 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[11] = "S";<br>
    /*&nbsp; 85 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[12] = "SR";<br>
    /*&nbsp; 90 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[13] = "C";<br>
    /*&nbsp; 95 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[14] = "CT";<br>
    /* 100 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[15] = "CB";<br>
    /* 105 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[16] = "PE";<br>
    /* 110 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[17] = "PD";<br>
    /* 116 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[18] = "QMT";<br>
    /* 122 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[19] = "F";<br>
    /* 128 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[20] = "WH";<br>
    /* 134 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[21] = "Q2";<br>
    /* 140 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[22] = "WA";<br>
    /* 145 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[23] = "WH";<br>
    /* 150 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[24] = "QA";<br>
    /* 156 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[25] = "FLT";<br>
    /* 162 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[26] = "FLT,00";<br>
    /* 170 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[27] = "QS";<br>
    /* 176 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[28] = "CTL";<br>
    /* 182 */&nbsp;&nbsp;&nbsp;&nbsp; Santak1Class.command[29] = "LT?";<br>
    <br>
    A list of commands but no description. Interestingly, the Q7 which
    produces some output is not mentioned. .<br>
    <br>
    Due to my limited programming skills I was soon stuck, so I decided
    to look at Nut drivers source to find out if there are any that use
    similar commands. After a bit of experimenting I found that
    'blazer_ser' pretty much does what it's supposed to do. Also most of
    the 'upsc' output looks reasonable:<br>
    <br>
    battery.voltage: 252.00<br>
    battery.voltage.nominal: 240.0<br>
    beeper.status: disabled<br>
    device.type: ups<br>
    driver.name: blazer_ser<br>
    driver.parameter.cablepower: none<br>
    driver.parameter.pollinterval: 2<br>
    driver.parameter.port: /dev/ttyS0<br>
    driver.version: 2.6.0<br>
    driver.version.internal: 1.51<br>
    input.current.nominal: 27.0<br>
    input.frequency: 50.0<br>
    input.frequency.nominal: 50<br>
    input.voltage: 236.0<br>
    input.voltage.fault: 140.0<br>
    input.voltage.nominal: 220<br>
    output.voltage: 220.0<br>
    ups.delay.shutdown: 30<br>
    ups.delay.start: 180<br>
    ups.load: 1<br>
    ups.status: OL<br>
    ups.temperature: 31.5<br>
    ups.type: online<br>
    <br>
    <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Danilo<br>
    <br>
  </body>
</html>