First project

This will be my first attempt at trying capture both my electricity consumption and solar generation in one place, so having researched a little, I have my heart set on seeing if this is the answer.

Can I please ask this main question…?

My solar and inverters are on/in my shed at the bottom of garden… approx 50m from the house.
I obviously have a cable feeding the shed with power an also a network cable and the shed has WiFi

What products do I need to be able monitor both as they’re in different locations ?

hope that makes some sense !?

You probably only need an emonPi in your house.

You can usually get information from the inverters using their network connection. Most will support a Modbus TCP request to read data from their internal registers. You may need to enable this in their configuration settings. They will have registers for Active Power and Energy.

This is a lot simpler than trying to install meters and CTs in your shed.

I used Node-Red to read the Modbus data every couple of minutes, then relay this to the MQTT broker that is running as a part of the EmonPi server. It is then simple to set up a emonCMS feed from this data alongside your other household consumption data.

Thank you for reply Justin,

Whilst I’m reasonably adept most at -what I thought was a reasonable amount- of Rpi networking and configuration, I feel your solution is a touch beyond me !?

I’m quite happy to install meters and CT’s, When I installed the system, I included a meter to measure export generation, and also use the WiFi data sticks on the solis inverters to log generation

But i guess a little research and tinkering wouldn’t hurt ?!

You will be surprised how easy it is :stuck_out_tongue_winking_eye: I hadn’t seen Node-Red six months ago, and just referencing the material in the Learn and Resources section has led me through how to do this.

The node configuration I ended up using to read inverter data was just three nodes.

This is an export of it if you want to try it out. My inverter is a SMA Sunny Boy.

[{"id":"97421d98.5e182","type":"function","z":"c76d6df9.361a8","name":"UInt32","func":"// Create new Buffer based on array bytes\nconst buf = Buffer.from(msg.payload.buffer);\n\n// Represent these bytes as 32-bit unsigned int\nvalue = buf.readUInt32BE();\nif (value > 70000){\n    value = 0;\n}\n// save the value\nmsg.payload = value;\nflow.power = value;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":590,"y":460,"wires":[["5df2213e.f0515"]]},{"id":"5df2213e.f0515","type":"mqtt out","z":"c76d6df9.361a8","name":"emon/SMAInverter/power","topic":"emon/SMAInverter/power","qos":"0","retain":"false","broker":"d5edc338.e2b45","x":870,"y":460,"wires":[]},{"id":"c1e74f92.e2186","type":"modbus-read","z":"c76d6df9.361a8","name":"SMA W","topic":"Watts","showStatusActivities":false,"logIOActivities":false,"showErrors":true,"unitid":"3","dataType":"HoldingRegister","adr":"30775","quantity":"2","rate":"15","rateUnit":"m","delayOnStart":false,"startDelayTime":"","server":"aa5b0e4b.5b65","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":350,"y":460,"wires":[[],["97421d98.5e182"]]},{"id":"d5edc338.e2b45","type":"mqtt-broker","name":"emonCMS","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"aa5b0e4b.5b65","type":"modbus-client","name":"SunnyBoy","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"3","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true}]

Thanks again Justin

I’m going to give it a go :slight_smile: