Skip to content

Sensor for Home Assistant pulling data from the GoodWe SEMS API for solar panel production metrics.

Notifications You must be signed in to change notification settings

TimSoethout/goodwe-sems-home-assistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoodWe SEMS API integration for Home Assistant

Paypal-shield Buy Me A Coffee

Integration for Home Assistant that retrieves PV data from GoodWe SEMS API.

Setup

Easiest install method via HACS

hacs_badge

The repository folder structure is compatible with HACS and is included by default in HACS.

Install HACS via: https://hacs.xyz/docs/installation/manual. Then search for "SEMS" in the Integrations tab (under Community). Click HACS > Integrations > Explore and Download Repositories > search for SEMS > click the result > Download.

Manual Setup

Crude sensor for Home Assistant that scrapes from GoodWe SEMS portal. Copy all the files in custom_components/sems/ to custom_components/sems/ your Home Assistant config dir.

Configure integration

The required ID of your Power Station can be retrieved by logging in to the SEMS Portal with your credentials: https://www.semsportal.com

After login you'll see the ID in your URL, e.g.: https://semsportal.com/PowerStation/PowerStatusSnMin/12345678-1234-1234-1234-123456789012

In this example the ID of the Power Station is: 12345678-1234-1234-1234-123456789012

In the home assistant GUI, go to Configuration > Integrations and click the Add Integration button. Search for GoodWe SEMS API.

Fill in the required configuration and it should find your inverters.

Note that changed to configuration.yaml are no longer necessary and can be removed.

Optional: control the invertor power output via the "switch" entity

It is possible to temporarily pause the energy production via "downtime" functionality available on the invertor. This is exposed as a switch and can be used in your own automations.

Please note that it is using an undocumented API and can take a few minutes for the invertor to pick up the change. It takes approx 60 seconds to start again when the invertor is in a downtime mode.

Recommended: use visitor account if you do not need to control the inverter

In case you are only reading the inverter stats, you can use a Visitor (read-only) account.

Create via the official app, or via the web portal: Login to www.semsportal.com, go to https://semsportal.com/powerstation/stationInfonew. Create a new visitor account. Login to the visitor account once to accept the EULA. Now you should be able to use it in this component.

Extra (optional) templates to easy access data as sensors

Replace $NAME with your inverter entity id.

  - platform: template
    sensors:
      pv_temperature:
        value_template: '{{ states.sensor.inverter_$NAME.attributes.tempperature }}'
        unit_of_measurement: 'C'
        friendly_name: "PV Temperature"
      pv_eday:
        value_template: '{{ states.sensor.inverter_$NAME.attributes.eday }}'
        unit_of_measurement: 'kWh'
        friendly_name: "PV energy day"
      pv_etotal:
        value_template: '{{ states.sensor.inverter_$NAME.attributes.etotal }}'
        unit_of_measurement: 'kWh'
        friendly_name: "PV energy total"
      pv_iday:
        value_template: '{{ states.sensor.inverter_$NAME.attributes.iday }}'
        unit_of_measurement: ''
        friendly_name: "PV income day"
      pv_itotal:
        value_template: '{{ states.sensor.inverter_$NAME.attributes.itotal }}'
        unit_of_measurement: ''
        friendly_name: "PV income total"
      pv_excess:
        value_template: '{{ states.sensor.inverter_$NAME.attributes.pmeter }}'
        unit_of_measurement: 'W'
        friendly_name: "PV spare"
      # battery soc
      pv_soc:
        value_template: '{{ states.sensor.inverter_$NAME.attributes.soc }}'
        unit_of_measurement: '%'
        friendly_name: "Battery power"

Note that states.sensor.inverter_$NAME.state contains the power output in W.

Screenies

Detail window

Add as Integration

Integration configuration flow

Debug info

Add the last line in configuration.yaml in the relevant part of logger:

logger:
  default: info
  logs:
    custom_components.sems: debug

Notes

  • Sometimes the SEMS API is a bit slow, so time-out messages may occur in the log as [ERROR]. The component should continue to work normally and try fetch again the next minute.

Development setup

Credits

Inspired by https://github.com/Sprk-nl/goodwe_sems_portal_scraper and https://github.com/bouwew/sems2mqtt . Also supported by generous contributions by various helpful community members.