Decoding and Replicating Xantrex Solar Charge Data

This is a story mostly of decoding data, but there is a happy ending that includes turning that decoding work into an open source receiver. Xantrex solar charge controllers monitor a lot of data about what is happening with your solar panels, and they stream it over RJ25 but you need their add-on hardware to receive it. [Eric Herbers] figured if the data is being transmitted, a resourceful hackers should be able to decode it. And he did just that with a little help from his friends in the Hackaday community.

We asked on Twitter what people were working on and [Eric] posted his scope screenshot. The conversation that followed helped point him in the right direction and others knowing about the project surely drove him to finish it. The decoding isn’t perfect, but achieve enough to decode and display voltage, amperage, and temperature. [Eric] built the display unit using an Arduino Pro Mini and a character LCD housed in you most common of black project boxes.

13 thoughts on “Decoding and Replicating Xantrex Solar Charge Data

  1. Step one is researching common protocols and data interfaces instead of just jumping in and guessing. Today hackers have an endless instant resource. Back in the 80’s when I was hacking stuff like this you had to social engineer information out of the manufacturer and it took weeks to get anything useful.

    Modbus is a protocol that when used over rs485 will make you vow to find and beat with a sack of doorknobs the engineers responsible for it.

  2. Too bad newer xantrex devices dont use modbus, they use Xanbus protocol. if it was as easy as modbus there is already the published spec on the web explaining that protocol.

    1. Modbus spec lacks specific uses for specific ‘registers’, thereby making any given modbus implementation very likely to be different than any other modbus implementation.

  3. Eric here! A little clarification in that it’s not wireless, everything is transmitted over a rj25 cord.

    By all means, this doesn’t appear to conform to any known standard unless you know of one that starts a frame of data by bringing both communication lines high.

    1. There’s a first time for everyone! I never claimed to be an expert at anything. Seeing as how my education is mechanical engineering and my background is providing tech support for farm equipment, is it that surprising I’m relatively green about serial communication? :)

    2. That said, the tweet as more about I had never seen serial communication in which it was only 8 bits per packet. I was expecting to see some sort of preamble or start/stop bits. Instead it was just 8 bits a piece, each seemingly adding up to reasonable values. It wasn’t until later that I finally caught a glimpse of one packet in which both comm lines were high and the gears started turning.

      1. ohhh okay i get it … it does sound kinda like RS-485
        it has a high start bit and a high stop bit but both interestingly enough can be ignored as long as the first bit is high and the last bit is high to simplify the protocol but its not exactly good practice

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s