My Solar PV Battery app

@Thelmike My version is v2.1.3 and battery simulator is present, maybe rerun update?

@TrystanLea I thought it should be that simple, but the PP setup gives me red for my import feeds for some reason (naming is correct). My solar monitoring is all set up as per standard config you mentioned and working fine.

image
image

@Tockley you want to enter unique names for the simulated feeds, it’s showing as red as you already have a import_kwh feed. You could try import_kwh_sim for example. You then need to select the right feed in the app configuration as it will try to work with the feed called import_kwh automatically at first

1 Like

good point, sounds like we need a limit by feed value process then, i will take a look at this later today, thanks

Awesome!! So glad to see this. Just wanted to say that :-). It looks great!

1 Like

Thanks @mattjgalloway!

If you’re running a tesla powerwall/gateway you can get most/all the feeds from the tesla API. How I did it is in this thread: Powerwall API help - #42 by miker - lots of help from others!

2 Likes

Sorry for the delay in replying. This is not very pretty, but I hope it will work …

Absolutely awesome @TrystanLea, thankyou.

For anyone not an expert (like me) who needs a simple and low effort way to get the Powerwall state-of-charge (SOC) into emonCMS - there are many, many other and more elegant ways, NodeRed, MQQT etc including those in @miker’s thread (see above) - but if you aren’t familiar with any of these and don’t want to learn right now because you just want to get it working, this might be just up your street.

You’ll need to know how to to ssh into your emonpi, and some Linux command line basics only.

SUMMARY

  1. Create a python script (8 lines, below) to execute on the emonpi, to fetch the Powerwall SOC and send it to emonCMS.
  2. Create a crontab entry to automatically run the script every minute.

DETAIL

  1. ssh in to emonpi as user pi. Create a python script using your favourite Linux editor (nano is easiest) called, say, getsoc.py in your home directory (/home/pi) with these contents <credit to @TrystanLea for this>:
import urllib2, json
# 1. Fetch data from API 1
response = urllib2.urlopen('http://URL_OF_YOUR_POWERWALL/api/system_status/soe')
jsonstr = response.read()
data = json.loads(jsonstr)
soc = data['percentage']
# 2. Post data onwards to API 2
response = urllib2.urlopen('http://URL_OF_YOUR_EMONPI/input/post?node=powerwall&data=soc:'+str(soc)+'&apikey=YOUR_API_KEY')

EmonCMS will automagically create a new feed powerwall:soc if it does not already exist (thanks @TrystanLea).

You should try running it from the shell:

pi@emonpi: python getsoc.py

but you may get an error, as I did, something like:

urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727)>

To circumvent this problem (google it if you want to find out more…) use this command instead:

pi@emonpi: PYTHONHTTPSVERIFY=0 python getsoc.py

You should be able to see the Input and Feed refreshed in emonCMS. If so, move on. Otherwise you need to find out why it’s not working. You can add print statements to the python script e.g print “hello” or print soc to help.
3. Create a crontab entry to run this script every minute. If you need more info type man crontab and/or man 5 crontab to get more info, or google it.

pi@emonpi: crontab -e

It will take you into a nano edit of the crontab file, which has prefilled guide comments in it. Add the following lines to the end of the file:

MAILTO=""
* * * * * PYTHONHTTPSVERIFY=0 /usr/bin/python /home/pi/getsoc.py

Make sure there is a newline at the end of the file, else it will fail to work.
When you exit the editor it will automatically try to add your cron job and tell you if it succeeded. If it did, then that’s it, you’re done.
I hope.

2 Likes

Thankyou for sharing @PeteF that’s great!

You should not need that step

http://URL_OF_YOUR_EMONPI/input/post?node=powerwall&data=soc:'

should work just fine and create a new input for you.

thanks @haffle, thinking about it we should be able to use the limit by input process in your case as well, just the other way around so after process 20 add:

  • max_inp (max by input) and chose the solar generation input.
  • Log to feed: solar_direct
  • Power to kWh: solar_direct_kwh

I think that works: If household consumption is say 200W and solar is 1000W, solar_direct will be 200W, if household consumption is 200W and solar 100W the limit by input will make solar_direct 100W as well.

Hi @TrystanLea, thanks for creating this. I ran a full update to get the App installed, but I couldn’t get it to display any datam even using feeds that I know have data. Then I logged out and back in again, and now I see data D’oh! Will now continue to configure the remaining feeds. Huge thanks for creating this, which should save me a heap of time and effort to do something similar.
Ian

Trystan, newbie here.

Is this run once to create the input ‘soc’ or is it added to PeteF ’ s getsoc.pi script ?

ps I got my Powerwall 2 installed 3 days ago and just found this Excellent App. when searching for home battery additions to Emoncms.

Good morning @Wirrunna. I have updated my post to reflect @TrystanLea’s very handy tip. It’s only 2 steps now :slight_smile:
I hope it works for you!

This only needs to be ran as part of the script, it automatically creates the input as the data comes in :slight_smile:

This app is working well :slight_smile:

our solor production feed is direct information from the inverters. they are some losses in the inverter and when the calculation is performed its showing export to the grid. is they anyway around this or a calculation on feed?

Hello @Pukka you could apply a loss factor to the input from the inverter, e.g multiply by 0.95 before recording it to a feed? Is it the solar production on the DC side and the inverter doesnt give AC output?

Hi @TrystanLea We have a hybrid inverter and data is being collected via ModBus. so we get lots of information about the solar including temps. I will have a look at creating a feed with a loss just need to have a look and workout the factor.


1 Like

Are you using the EmonHub ModBus interfacer @Pukka out of interest what is the inverter model that you are fetching the data from?

Hi Trystan,

That is very helpful thank you.

I used your process and it works (I had to flip the CT clamp)

So right now in my Dashboard I have it like this

Moixa do not currently publish API’s they are working on a number of improvements to the software / App etc.

So if you could make the Battery SOC optional that would help me out, and probably others.

Many thanks

Mark

1 Like

Hi @TrystanLea

I am using Solution: Reading Solax SK-SU5000(E) inverters & SDM630V2 Modbus Power Meters

Its a solax SU5000

1 Like