11/21/2013

Displaying EFERGY E2 Transmission data on MRTG

Using a Raspberry Pi with a RTL-SDR dongle which is tuned to 433.55Mhz, the captured data from the Efergy transmitter is now being processed using MRTG for a web based 24 hour plot of the house's electrical consumption. lighttpd and MRTG was installed for this purpose.
 

4 comments:

  1. That's pretty cool. Reminds me of the network status graphs, just for electricity. Great work!

    ReplyDelete
  2. Nathaniel,

    This is very cool. I am using my Rapberry PI to upload my solar power generation data to www.pvooutput.org using SMAspot which collects data from the inverter by bluetooth.

    I have modified your code to upload power consumption data recorded by my Efergy Elite R3.0 energy monitor so I can see a complete picture of power consumption and generation.

    Source is available here:
    http://www.vehiclemods.net.au/docs/EfergyRPI_PVO.c

    Just add your PVoutput SystemID and API key to the source before compiling and linking in the cur library as per the compile string in the code. There is more detail on Gough Lui's site in the comments I have added to his blog post.

    ReplyDelete
    Replies
    1. Great! You might want to check the code as i found out that there is a bug in the code bytes[6] should be treated as signed number. Thus change the line affected by the computation to ...

      double fact;

      if (bytes[6] > 0x80)
      {
      fact = ((0xff - bytes[6]) + 1) * -1; /* Make a negative from a signed byte */

      }
      else

      fact = (double) bytes[6];

      result = (VOLTAGE * current_adc) / ((double) 32768 / (double) pow(2,fact));

      Delete
  3. Great! You might want to check the code as i found out that there is a bug in the code bytes[6] should be treated as signed number. Thus change the line affected by the computation to ...

    double fact;

    if (bytes[6] > 0x80)
    {
    fact = ((0xff - bytes[6]) + 1) * -1; /* Make a negative from a signed byte */

    }
    else

    fact = (double) bytes[6];

    result = (VOLTAGE * current_adc) / ((double) 32768 / (double) pow(2,fact));

    ReplyDelete