#We should go to a thread

1 messages · Page 1 of 1 (latest)

potent heron
#

What to fix first? inverter/panel config? price tariffs? deferrable loads?

potent heron
#

It seemed to get better when I made the deferrable loads very small. Roughly matches my actuals.

#

"perfect optimization"

glacial path
potent heron
#

I have 20kW inverter, and just over 20kW of panels.

#

My current energy pricing is :

Power Import
Peak (3pm-9pm) $0.3652 per kWh
Off-Peak (other) $0.2002 per kWh

Power Export
Peak (4pm – 9pm) $0.106 per kWh
Sholder (9pm – 10am) & (2pm-4pm) $0.055 per kWh
Off-Peak (10am-2pm) $0.039 per kWh

but the export is not configured like that in emhass

#

UI did not support so many export prices. I didn't change the time stuff at all yet.

glacial path
#

OK, well setup your peak/ off-peak imports and maybe just set export to maybe the average of 0.05, to get things going.

potent heron
#
list_peak_hours_periods_start_hours:
  - peak_hours_periods_start_hours: "15:00"
list_peak_hours_periods_end_hours:
  - peak_hours_periods_end_hours: "21:00"
list_treat_deferrable_load_as_semi_cont:
  - treat_deferrable_load_as_semi_cont: true
load_peak_hours_cost: 0.3652
load_offpeak_hours_cost: 0.2002
photovoltaic_production_sell_price: 0.05
glacial path
#

maybe include three inverters of that model to get ~ 20 kW with 18 x 370W panels on each

potent heron
#

why are the inverters/panels data so out of date?

glacial path
potent heron
#

(notes)
Panels are actually (Jinko) 43 x JKM470N-60HL4 (about half east, half west, 22 degrees)
Inverter is actually (Goodwe) 1 x GW20K-DT (3P 2MPPT)
Battery is actually (Tesla) 1 x Powerwall 2

glacial path
#

I have two inverters and half East half West, so this is useful. 2x 7.5 kW inverters but 18.5 kWp panels:

list_pv_module_model:
  - pv_module_model: Advance_Power_API_M370
  - pv_module_model: Advance_Power_API_M370
list_pv_inverter_model:
  - pv_inverter_model: SolarEdge_Technologies_Ltd___SE7600A_US__208V_
  - pv_inverter_model: SolarEdge_Technologies_Ltd___SE7600A_US__208V_
list_surface_tilt:
  - surface_tilt: 18
  - surface_tilt: 10
list_surface_azimuth:
  - surface_azimuth: 90
  - surface_azimuth: 270
list_modules_per_string:
  - modules_per_string: 29
  - modules_per_string: 21
list_strings_per_inverter:
  - strings_per_inverter: 1
  - strings_per_inverter: 1
potent heron
#

It's astonishingly slack to be using March 2019 data in September 2023.

glacial path
#

Have you been able to setup additional inverters, in the config to get closer to 20 kWp?

potent heron
#

I'm staring blankly at the configuration yaml at the moment. Wondering what values to use, and what is impact of same

glacial path
#

Or just use the 20kW SolarEdge:

SolarEdge_Technologies_Ltd___SE20K__480V_
potent heron
#

OK will try that

#

Need to scale the panels to match something that exists. There is a jinko that's 420W so fairly close. Sec.

#

How do I convert the string in the csv to something for the yaml?

#

all special characters to _. Hmm

glacial path
#

Just replace all of the special charaters including spaces to _

potent heron
#
list_pv_module_model:
  - pv_module_model: Jinko_Solar_Co___Ltd_JKM410M_72HL
list_pv_inverter_model:
  - pv_inverter_model: SolarEdge_Technologies_Ltd___SE20K__480V_
list_surface_tilt:
  - surface_tilt: 22
  - surface_tilt: 22
list_surface_azimuth:
  - surface_azimuth: 90
  - surface_azimuth: 270
list_modules_per_string:
  - modules_per_string: 24
  - modules_per_string: 25
list_strings_per_inverter:
  - strings_per_inverter: 2

Scaled 43*470W to 49*410W

#

So, using day-ahead, it's only predicting 4.4kW for today + tomorrow, when it's actually twice that already...

glacial path
#

what does perfect return?

potent heron
#

Looks about the same as today/yesterday in perfect. ie ~8kW peak. It's only early spring here.

glacial path
#

You should also have some new sensors in HA; sensor.p_batt_forecast, p_load_forecast, p_grid_forecast, p_soc_batt_forecast, with attributes for the next 24 hours.

potent heron
#

Sec, will look.

glacial path
#

I use the rest_command integration in place of the curl command, but the documentation is written around curl to get it running.

#

I'm offline for a meeting now, will catch in with you later.

potent heron
#

thanks, ttyl, I should probably do some work too 🙂

solid ginkgo
#

however I noticed that pvlib has some inverters/panels that SAM doesn't have. So I merged the two

#

pvlib.pvsystem.retrieve_sam(name=None, path=str(path))

#

you can do this to search in the custom CSV located at path

glacial path
#

How did you get on? Any joy with the REST payloads via curl?

potent heron
#

I’m sure that would be fine, but unless it controls something it’s kindof pointless right?

glacial path
# potent heron I’m sure that would be fine, but unless it _controls_ something it’s kindof poin...

That how it updates the forecasts for your battery via an automation calling a shell command with the curl payload instead of you pushing the optimise & publish button on front page. For day ahead you call the optimisation once a day and the call the publish endpoint every five minutes to update the forecasts.

Even without controlling your battery or deferrable loads it can still give you insights into the optimal plan for your battery.

potent heron
#

It's PV estimate (on day ahead) is useless. About half what it should be...

#

But the shell commands seem to run (at least they return HTTP201)

shell_command:
  dayahead_optim: "curl -i -H \"Content-Type:application/json\" -X POST -d '{}' http://localhost:5000/action/dayahead-optim"
  publish_data: "curl -i -H \"Content-Type:application/json\" -X POST -d '{}' http://localhost:5000/action/publish-data"
potent heron
#

Looks like emhass added it's own scheduled jobs to call those shell_commands...

#

It's still way under-estimating my solar tho

glacial path
potent heron
#

I 100% don't remember setting up those

glacial path
glacial path
potent heron
#

sec

#
alias: EMHASS day-ahead optimization
trigger:
  - platform: time
    at: "05:30:00"
action:
  - service: shell_command.dayahead_optim
    data: {}
#
alias: EMHASS publish data
trigger:
  - minutes: /5
    platform: time_pattern
action:
  - service: shell_command.publish_data
    data: {}
#

Maybe I did it, and forgot. I pasted the shell command yaml from one of the docs I was reading....

#
# for emhass
shell_command:
  dayahead_optim: 'curl -i -H "Content-Type:application/json" -X POST -d ''{}'' http://localhost:5000/action/dayahead-optim'
  publish_data: 'curl -i -H "Content-Type:application/json" -X POST -d ''{}'' http://localhost:5000/action/publish-data'
#

Looks like day-ahead automation was created 12:05:07 on 13/sep

#

Which is off the top of my logs