Custom ADC/Arduino- help to interface with Pi and emoncms

I have a rural home that has PV and Utility power. The whole house runs on a large UPS system; if PV is availabe, it runs off the charge controllers, if not, it runs on utility. If neither availabe, it runs on batterys. When they get low, a genset starts and recharges them.

I previously built an energy monitor system using an arduino, a high speed 8 channel adc, etc and send the data over ethernet to a Pi where I display weather and power info. I built custom hall sensors to read utility current A/B, Panel I both A/B phases, Panel voltage A/B, current from each charge controller/PV array, and battery voltage and current in/out of battery bank. I also display generator status, spare kW, etc.

I found this site during a google search. I would like to change my data, and if feasable, use existing logging/display using emoncms.

Where to start? I searched the archives, but I am not a linux guru, and don’t quite have grasp of the data flow/structure and flow of data among software components. Advice wecomed. Thank you.


I’m not in the USA, and don’t know the ins and outs of your supply system all that well, but I don’t think it matters here.
At present, you’re sending data - presumably in a format and with a protocol that you designed and can therefore modify relatively easily, to (again presumably) a custom data management system running on a RPi.
In a nutshell, you need to install emonCMS on your Pi (or maybe another Pi to run alongside yours while you get everything working?), and reformat the data so that it’s acceptable to emonHub. EmonHub (running alongside emonCMS in the Pi) then passes the data into emonCMS, which stores and displays it. Again, if you can read all your old data from your existing system and reformat that, I believe it’s possible to import your old data.
Because a lot of emonHub/emonCMS documentation only exists in the software itself and as pop-ups, you might find the best way is to get another Pi and download emonCMS, then look at something like the emonESP sketches which send data directly via Ethernet, to see how the messages are formatted.
At this point, I don’t know enough about the details to carry on, so I hope that has helped so far.

Presumably you can code in “Arduino” C++ then. The Emon library is at GitHub - openenergymonitor/EmonLib: Electricity monitoring library - install in Arduino IDE's libraries folder then restart the IDE and most of the hard work has already been done.

Do you need to have all the data stored locally as technology has moved on to cloud storage and is available for this. There is a detailed API so you just send from the Arduino to the cloud. This obviously involves providing the Arduino with internet access so the latest development is to ditch the Arduino and go for an ESP8266. Same Arduino coding but much more powerful.

Then you have all the set up details available at

If you read Charles’ post, he already has all the data acquisition working, and he appears to want to use his Raspberry Pi. His question is, how does he send the data to emonCMS, so that he can have emonCMS to handle the display. But of necessity, I think that means taking over the data logging as well.

So why not stick with C++ (and the cloud)?