Custom Component: SolarEdge Modbus TCP

oh, of course i tried this with the mySolaredge app, not possible to change such there. However i did not try from browser, thats awesome news, i will test tomorrow.

@erikarenhill my installer already enabled modbus_tcp for me and its working w/o issues. However, I would like to be allowed to make other changes in the future.

It seems like the installers have a different level of access using setApp vs me using mySolarEdge app.

I want to know how to gain [for lack of better word] ADMIN access to my inverter.

Mr. Erik, the local way worked , successfully activated , it showing all in HA now. Many thanks

is there a how to on your nice grafana dashboard? Is it possible to have day and week and month view?

Does anyone know if SolarEdge Modbus provides Solar Production value? From all the values that come back I don’t see anything with the same value as I see on the SolarEdge App.

SOLAREDGE CLOUD IS DOWN I am getting the following when i want to login to monitoring.solaredge.com

{“failure”:“We are sorry, but due to an internal error, we cannot fulfill your request. Please try again. If the problem persists, please contact SolarEdge support for assistance.”}

Of course the local monitoring works perfectly, God Bless Mr. @erikarenhill
Maybe not all regions went down? Can someone confirm if login works or doesn on SolarEdge monitoring webpage?

their cloud service is back now

Power = Voltage x Current, check the DC values thats the reality, what we see on Cloud is a delayed report. All reports go over cloud, millions of input what they have, processing time, database massage times, etc. The reality is down on the metal what we see on Home Assistant.

Hey team!

I’ve got a new setup installed with an SE7600H talking to a Tesla solar gateway via Zigbee, and I’d be interested in having HA talk locally/directly to the inverter to get the most granular data possible.

From my understanding (please correct me if I’m wrong!), the system won’t do ethernet (or wifi) at the same time as Zigbee so if I plug in ethernet or put it on wifi, I’d kill my ability to use the Tesla app?

If the above is correct, it appears I should still be able to connect to the RS485 port and pull data from there, but if I were doing so with an RS485 to ethernet converter, should I expect this module to be the best path to success, or should I look at a different solution altogether?

Alternatively, I also have a Rainforest Eagle 200 showing up later today, if that somehow adds a new possibility I’m not aware of.

Hello all,
I have a SE8K inverter with the SE Modbus meter and no battery.
Unfortunately, I can’t get the configuration to work. I followed Erik’s installation instructions and read through the previous posts.
My inverter is connected to the router via LAN cable.
I have checked the configuration at http://172.16.0.1, “Modbus-TCP” is activated, port is 1502.
I have unzipped and copied the directory /custom_components/solaredge_modbus into HA.
I do not manage to load the configuration. Probably because I cannot adapt Erik’s “sample-configuration.yaml”.

Since I have a fresh HA installation where not much has been set up yet, I tried two configurations.

  1. included Erik’s yaml sample via !include (!include custom_components/solaredge_modbus/solaredgemodbus.yaml) See line 13
  2. added Erik’s example to configuration.yaml. From line 14

grafik

That what I get when checking the config:

Invalid config for [solaredge_modbus]: expected a dictionary for dictionary value @ data[‘solaredge_modbus’][‘host’]. Got ‘192.168.178.38’
expected a dictionary for dictionary value @ data[‘solaredge_modbus’][‘name’]. Got ‘SolarEdge Modbus’
expected a dictionary for dictionary value @ data[‘solaredge_modbus’][‘port’]. Got 1502
expected a dictionary for dictionary value @ data[‘solaredge_modbus’][‘read_meter1’]. Got True
expected a dictionary for dictionary value @ data[‘solaredge_modbus’][‘scan_interval’]. Got 5
expected a dictionary for dictionary value @ data[‘solaredge_modbus’][‘sensor’]. Got [OrderedDict([(‘platform’, ‘template’), (‘sensors’, OrderedDict([(‘solaredge_ac_total_current’, OrderedDict([(‘friendly_name’, ‘AC Total Current’), (‘value_template’, “{{ state_attr(‘sensor.solaredge_modbus’, ‘ac_total_current’) }}”), (‘unit_of_measurement’, ‘A’)])), (‘solaredge_ac_current_phase_a’, OrderedDict([(‘friendly_name’, ‘AC Current Phase A’), (‘value_template’, “{{ state_attr(‘sensor.solaredge_modbus’, ‘ac_current_phase_a’) }}”), (‘unit_of_measurement’, ‘A’)])), ('solaredge_ac_curre…
extra keys not allowed @ data[‘solaredge_modbus’][‘utility_meter’][‘solar_production_daily’]. Got OrderedDict([(‘source’, ‘sensor.solaredge_lifetime_production’), (‘cycle’, ‘daily’)])
extra keys not allowed @ data[‘solaredge_modbus’][‘utility_meter’][‘solar_production_hourly’]. Got OrderedDict([(‘source’, ‘sensor.solaredge_lifetime_production’), (‘cycle’, ‘hourly’)])
extra keys not allowed @ data[‘solaredge_modbus’][‘utility_meter’][‘solar_production_monthly’]. Got OrderedDict([(‘source’, ‘sensor.solaredge_lifetime_production’), (‘cycle’, ‘monthly’)])
extra keys not allowed @ data[‘solaredge_modbus’][‘utility_meter’][‘solar_production_weekly’]. Got OrderedDict([(‘source’, ‘sensor.solaredge_lifetime_production’), (‘cycle’, ‘weekly’)])
required key not provided @ data[‘solaredge_modbus’][‘utility_meter’][‘host’]. Got None
required key not provided @ data[‘solaredge_modbus’][‘utility_meter’][‘port’]. Got None. (See /config/configuration.yaml, line 15).

I am a bloody HA beginner :slight_smile: Please bear with me and give me some good tips or links on how to solve my problem. Thanks!

@wollipolli

solaredge_modbus:
    name: 'SolarEdge Modbus'
    host: 192.168.1.111
    port: 1502
    scan_interval: 5 #Optional: time in seconds between readings. Recommended value is at fastest 2-3 sec, default 5
    read_meter1: false #Optional: set this to true if you have an external modbus meter connected with RS485 for reading self consumption

utility_meter:
    solar_production_daily:
      source: sensor.solaredge_lifetime_production
      cycle: daily
    solar_production_hourly:
      source: sensor.solaredge_lifetime_production
      cycle: hourly
    solar_production_weekly:
      source: sensor.solaredge_lifetime_production
      cycle: weekly
    solar_production_monthly:
      source: sensor.solaredge_lifetime_production
      cycle: monthly
    
sensor:
  - platform: template
    sensors:
        solaredge_ac_total_current:
            friendly_name: "AC Total Current"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'ac_total_current') }}"
            unit_of_measurement: 'A'
        solaredge_ac_current_phase_a:
            friendly_name: "AC Current Phase A"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'ac_current_phase_a') }}"
            unit_of_measurement: 'A'
        solaredge_ac_current_phase_b:
            friendly_name: "AC Current Phase B"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'ac_current_phase_b') }}"
            unit_of_measurement: 'A'
        solaredge_ac_current_phase_c:
            friendly_name: "AC Current Phase C"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'ac_current_phase_c') }}"
            unit_of_measurement: 'A'
        solaredge_ac_voltage_phase_ab:
            friendly_name: "SolarEdge AC Output Voltage (A-B)"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'ac_voltage_phase_ab') }}"
            unit_of_measurement: 'V'
        solaredge_ac_current_voltage_a:
            friendly_name: "AC Voltage Phase A"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'ac_voltage_phase_a') }}"
            unit_of_measurement: 'V'
        solaredge_ac_current_voltage_b:
            friendly_name: "AC Voltage Phase B"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'ac_voltage_phase_b') }}"
            unit_of_measurement: 'V'
        solaredge_ac_current_voltage_c:
            friendly_name: "AC Voltage Phase C"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'ac_voltage_phase_c') }}"
            unit_of_measurement: 'V'
        solaredge_ac_power_output:
            friendly_name: "AC Power Output"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'ac_power_output') }}"
            unit_of_measurement: 'W'
        solaredge_dc_current:
            friendly_name: "DC Current"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'dc_current') }}"
            unit_of_measurement: 'A'
        solaredge_dc_voltage:
            friendly_name: "DC Voltage"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'dc_voltage') }}"
            unit_of_measurement: 'V'
        solaredge_dc_power_input:
            friendly_name: "DC Power Input"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'dc_power_input') }}"
            unit_of_measurement: 'W'
        solaredge_heatsink_temp:
            friendly_name: "Inverter Heat sink Temperature"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'heat_sink_temperature') }}"
            unit_of_measurement: '°C'
        solaredge_inverter_efficiency:
            friendly_name: "Inverter efficiency"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'computed_inverter_efficiency') }}"
            unit_of_measurement: '%'
        solaredge_ac_frequency:
            friendly_name: "AC Frequency"
            value_template: "{{ state_attr('sensor.solaredge_modbus', 'ac_frequency') }}"
            unit_of_measurement: 'Hz'
        solaredge_lifetime_production:
            friendly_name: "Lifetime production"
            value_template: "{{ (state_attr('sensor.solaredge_modbus', 'ac_lifetimeproduction') / 1000.0) | round(2) }}"
            unit_of_measurement: 'kWh'
        solaredge_status:
            friendly_name: "SolarEdge Status"
            value_template: >-
              {% if state_attr('sensor.solaredge_modbus', 'status') == 1 %}
                Off
              {% elif state_attr('sensor.solaredge_modbus', 'status') == 2 %}
                Sleep
              {% elif state_attr('sensor.solaredge_modbus', 'status') == 3 %}
                Wake-Up
              {% elif state_attr('sensor.solaredge_modbus', 'status') == 4 %}
                Working
              {% elif state_attr('sensor.solaredge_modbus', 'status') == 5 %}
                Throttled
              {% elif state_attr('sensor.solaredge_modbus', 'status') == 6 %}
                Shut-Down
              {% elif state_attr('sensor.solaredge_modbus', 'status') == 7 %}
                Fault
              {% elif state_attr('sensor.solaredge_modbus', 'status') == 8 %}
                Maintenance
              {% else %}
                Unknown
              {% endif %}```

@Cinamon thank you for your reply. I‘ve already copied this code to my configurarion.yaml (hostIP-address switched) and got the configuration errors shown above (… Invalid config for [solaredge_modbus]: expected a dictionary for dictionary value @ data[‘solaredge_modbus’][‘host’]. Got ‘192.168.178.38’ …)

What am I doing wrong?

It looks like you have 2 spaces in front of line 20 and 34. they should not be there and could well be the problem?

Hi,

how do you calculate (as exact as possible) a daily/monthly/yearly power production without the se meter?

btw Thanks for the addon! Great Work

Hi there. I have the same problem with Error 2 in the logs and a really sluggish UI. Was there any resolution to the error 2 issue? Cheers!

I never did get it working. For an hour or so it corrupted the SolarEdge cloud monitoring, so I set everything back and just gave up on it.

1 Like

I have this working successfully on my inverter, happy to try and help if anyone is struggling to get this working.

@arc2v Thanks for letting me know.

@BruceH5200 I think the issue I have is that I already have another client connecting to the inverter (a Reposit box that uses weather patterns and predicts my electricity usage to pre-charge my battery). I think the Modbus spec only allows one client connection at a time so I’m out of luck.

Hi Bruce, I’ve just had installed a solaredge Modbus meter and solaredge inverter, connected via RS485. I would like to connect a raspberry pi running HA to pick up on the real-time data.

Do you have any links to guides of how to make the connections/how are yours connected? I assume I need a RS485 HAT and to configure the inverter to output to a Non-SE logger.

Once I have the physical connection, is this the correct integration to access the data?

Thanks!

I have the Inverter connected to my home network.
I have enabled ModBus over TCP on the inverter.

I’ll check the other details when I get home.