This is a Custom Component for Home-Assistant (https://home-assistant.io) reads and displays sensor values from the SAJ eSolar Portal private API.
NOTE: This component is built upon a none public API and can change/break at any time.
Please go to the Supported devides part to see if your device is supported
I created this repository for a family member but made it publicly available as I saw a wider need. Newer SAJ dongles lack local connections, making this project valuable for others. However, demand has grown, and a major change is coming with SAJ's new website i can't deal with those changes on my own.
- Potential API breakage: The old API will likely be discontinued with the new platform. Some retailers have already seen changes.
- Configuration complexity: Manual configuration through configuration.yaml isn't ideal.
This is where your expertise comes in!
We're looking for a co-author to help maintain and improve the project, particularly with the upcoming website changes. If you have Python scripting and REST API experience, we'd love to hear from you!
- Check out this project for inspiration: https://github.com/faanskit/ha-esolar (by @faanskit, who made fantastic contributions!)
- Create pull request to help the project
- Reach out: Email me at github@djansen.nl if you're interested in collaborating.
Together, let's make this project even better!
- Have HACS installed, this will allow you to easily manage and track updates.
- Search for 'SAJ eSolar'.
- Click Install below the found integration.
- Configure using the configuration instructions below.
- Restart Home-Assistant.
- Copy directory
custom_components/saj_esolar
to your<config dir>/custom_components
directory. - Configure with config below.
- Restart Home-Assistant.
- resources are renamed in de configuration, replace old ones. applies when updating v1.0.0.4 -> 1.0.0.5
To use this component in your installation, add the following to your configuration.yaml
file:
# Example configuration.yaml entry
sensor:
- platform: saj_esolar
username: aa@bb.cc
password: abcd1234
plant_id: 0 # Default is 0. Typically ordered in the same way as they are listed in the eSolar app
resources:
- nowPower
- runningState
- todayElectricity
- monthElectricity
- yearElectricity
- totalElectricity # Energy -> Solar production
- todayGridIncome
- income
- lastUploadTime
- totalPlantTreeNum
- totalReduceCo2
- status
- plantuid
- currency
- address
- isOnline
- peakPower
- systemPower # Installed capacity
If you have a H1 device, add below Sensors and Resouces:
- platform: saj_esolar
username: aa@bb.cc
password: abcd1234
plant_id: 0 # Default is 0. Typically ordered in the same way as they are listed in the eSolar app
sensors: h1
resources:
- nowPower
- runningState
- todayElectricity
- monthElectricity
- yearElectricity
- totalElectricity # Energy -> Solar production
- lastUploadTime
- totalPlantTreeNum
- totalReduceCo2
- status
- plantuid
- currency
- address
- isOnline
- devOnlineNum
- selfUseRate
- totalBuyElec # Energy -> Grid consumption
- totalConsumpElec
- totalSellElec # Energy -> Return to grid
- chargeElec # Energy -> Home Battery Storage -> Energy going in to the battery (kWh)
- dischargeElec # Energy -> Home Battery Storage -> Energy coming out of the battery (kWh)
- pvElec
- useElec
- buyElec
- sellElec
- buyRate
- sellRate
- selfConsumedRate1
- selfConsumedRate2
- selfConsumedEnergy1
- selfConsumedEnergy2
- batCapcity
- batCurr
- batEnergyPercent
- batteryDirection
- batteryPower
- gridDirection
- gridPower
- h1Online
- outPower
- outPutDirection
- pvDirection
- pvPower
- solarPower
- totalLoadPower
If you have a Saj Sec Module Add below sensor an resources:
- platform: saj_esolar
username: aa@bb.cc
password: abcd1234
plant_id: 0 # Default is 0. Typically ordered in the same way as they are listed in the eSolar app
sensors: saj_sec # Optional will only work with SAJ Sec Module
resources:
- nowPower
- runningState
- todayElectricity
- monthElectricity
- yearElectricity
- totalElectricity # Energy -> Solar production
- todayGridIncome
- income
- lastUploadTime
- totalPlantTreeNum
- totalReduceCo2
- status
- plantuid
- currency
- address
- isOnline
- peakPower
- pvElec
- useElec
- buyElec
- sellElec
- buyRate
- sellRate
- selfConsumedRate1
- selfConsumedRate2
- selfConsumedEnergy1
- selfConsumedEnergy2
- plantTreeNum
- reduceCo2
- totalPvEnergy
- totalLoadEnergy # Energy -> Grid consumption
- totalBuyEnergy
- totalSellEnergy # Energy -> Return to grid
#these entities are deprecated since they return incorrect values
- totalGridPower # Power being exported to the grid
- totalLoadPower # Solar power being currently self-consumed
- totalPvgenPower # Power imported from the grid
#these new entities replace them
- gridLoadPower # Power imported from the grid
- solarLoadPower # Solar power being currently self-consumed
- homeLoadPower # Total power being consumed by the plant (the home)
- exportPower # Power being exported to the grid
If you are a user of Solarprofit / Greenheiss
note that there is an certification issue for the greenheiss portal which is currently not accepted by Home Assistant to fix this use the provider_ssl: False
Add below code to you
provider_domain: inverters.resellerdomain.ext
provider_path: cloud
for example for greenheissen:
- platform: saj_esolar #greenheissen
username: USERNAME
password: Password123
provider_domain: inversores-style.greenheiss.com
provider_path: cloud
provider_ssl: False
resources:
- nowPower
- runningState
- todayElectricity
- monthElectricity
- yearElectricity
- totalElectricity # Energy -> Solar production
- todayGridIncome
- income
- lastUploadTime
- totalPlantTreeNum
- totalReduceCo2
- isAlarm # Yes / No
- status
- plantuid
- currency
- address
- isOnline
- peakPower
- systemPower # Installed capacity
**Configuration variables:**
- username (Required): E-mail address used on the eSolar Portal.
- password (Required): Password used on the eSolar Portal, we advise you to save it in your secret.yaml.
- resources (Required): This section tells the component which values to display.
- sensors (Optional): saj_sec / h1 # Optional will only work with SAJ Sec Module
- provider_domain (Optional): inverter.reseller.ext # the url of the reseller ex: inversores-style.greenheiss.com
- provider_path (Optional): cloud # suffix behide domain
- provider_ssl (Optional): False # to bypass ssl certficate verification (not advised but needed for greenheiss.com)
Add the relevant lines below to the configuration.yaml
:
logger:
default: info
logs:
custom_components.saj_esolar: debug
Credits to @cyberjunky. I got inspired by his source code which helped me a lot to creating this Custom Component.
https://github.com/cyberjunky/home-assistant-toon_smartmeter/