|
|
7 mesiacov pred | |
|---|---|---|
| custom_components | 7 mesiacov pred | |
| CHANGELOG.md | 7 mesiacov pred | |
| CONTROL_FEATURES.md | 7 mesiacov pred | |
| EXAMPLES.md | 7 mesiacov pred | |
| INSTALLATION.md | 7 mesiacov pred | |
| LICENSE | 7 mesiacov pred | |
| QUICKSTART.md | 7 mesiacov pred | |
| README.md | 7 mesiacov pred | |
| hacs.json | 7 mesiacov pred |
Monitor and control your Siseli solar inverter directly from Home Assistant.
Real-time power data · Battery management · Grid control · Energy Dashboard ready
The Solar of Things integration connects Home Assistant to the Siseli solar portal and provides:
API behavior is based on the Siseli web portal and the reference CLI client at Hyllesen/solar-of-things-solar-usage.
| Category | What you get |
|---|---|
| 🔍 Auto-discovery | Enter Station ID → HA fetches all device IDs automatically |
| 📊 Real-time monitoring | 10 per-device sensors, updated every 5 min |
| 📅 Monthly statistics | 4 station-level energy summary sensors |
| 🎛️ System control | 8 control entities (battery limits, modes, grid switches) |
| ⚡ Energy Dashboard | All power and energy sensors are dashboard-ready |
| 🏠 Multi-station | Unlimited stations via multiple config entries |
| 🔒 Secure auth | IOT-Token header authentication (no username/password stored) |
| 🌏 Timezone-aware | Configurable IOT-Time-Zone header per integration |
| 🔄 Auto-retry | HA coordinator pattern with automatic retry on failure |
Updated every 5 minutes · One set per discovered device
| Entity | Unit | Device Class | Description |
|---|---|---|---|
{device} PV Input Power |
W | power |
Solar panel DC input power |
{device} AC Output Power |
W | power |
AC power delivered to loads |
{device} Battery Charging Current |
A | current |
Current flowing into battery |
{device} Battery Discharge Current |
A | current |
Current flowing out of battery |
{device} Battery Voltage |
V | voltage |
Battery bank terminal voltage |
{device} Battery Power |
W | power |
Net battery power (calculated: discharge − charge × voltage) |
{device} Battery State of Charge |
% | battery |
Battery charge level |
{device} Grid Feed-in Power |
W | power |
Power exported to the utility grid |
{device} Grid Import Power |
W | power |
Power imported from the utility grid (calculated) |
{device} Load Power |
W | power |
Total household / load consumption |
Updated every 30 minutes · Requires Station ID
| Entity | Unit | Device Class | Description |
|---|---|---|---|
Station {id} Monthly PV Generated |
kWh | energy |
Total solar generation this month |
Station {id} Monthly Grid Import |
kWh | energy |
Total grid import this month |
Station {id} Monthly Total Consumption |
kWh | energy |
Total household consumption this month |
Station {id} Monthly Solar Coverage |
% | — | Percentage of consumption met by solar |
Control entities require your device firmware/account to support the settings API. If controls are unresponsive, see TROUBLESHOOTING.md.
| Entity | Range | Step | Unit | Description |
|---|---|---|---|---|
{device} Battery Charge Limit |
0 – 100 | 1 | % | Maximum SOC target for charging |
{device} Battery Discharge Limit |
0 – 100 | 1 | % | Minimum SOC before stopping discharge |
{device} Grid Charge Limit |
0 – 5000 | 100 | W | Max grid power used for battery charging |
| Entity | Options | Description |
|---|---|---|
{device} Operating Mode |
Self-Use · Time-of-Use · Backup · Grid-Tie · Off-Grid | System operating strategy |
{device} Battery Priority |
Solar First · Battery First · Grid First | Energy source priority order |
| Entity | Description |
|---|---|
{device} Grid Charging |
Allow/deny battery charging from the grid |
{device} Grid Feed-In |
Allow/deny exporting excess power to the grid |
{device} Backup Mode |
Reserve battery capacity for power outages |
| Requirement | Details |
|---|---|
| Home Assistant | 2023.1 or newer |
| Siseli account | Active account at solar.siseli.com |
| IOT-Token | Retrieved from browser DevTools (see Configuration) |
| Station ID | 18-digit ID from the Siseli portal |
| Network | Home Assistant must be able to reach https://solar.siseli.com |
HACS is the easiest way to install and keep the integration up to date.
Add the repository:
https://github.com/conexocasa/solar-of-things-ha
Category: Integration
Click Add, then search for Solar of Things.
Click Download and confirm.
Restart Home Assistant.
After restarting, continue to Configuration.
Download the latest release asset: solar-of-things-ha.zip
Extract the ZIP. Inside you will find:
custom_components/
└── solar_of_things/
├── __init__.py
├── api.py
├── config_flow.py
├── const.py
├── manifest.json
├── number.py
├── select.py
├── sensor.py
├── strings.json
├── switch.py
└── translations/
└── en.json
Copy the solar_of_things folder into your HA config directory:
/config/custom_components/solar_of_things/
Restart Home Assistant.
Verify the folder is in the right place: go to Settings → System → Logs and look for
solar_of_things. No errors means the component loaded correctly.
You need three values from the Siseli portal. All three are visible in the browser's Network tab — no third-party tools needed.
solar.siseli.com and look at:| Value | Where to find it | Example |
|---|---|---|
| IOT-Token | Request Headers tab → IOT-Token |
CA49A160DBFFE7A827... |
| Station ID | Request Payload tab → stationId |
423564214316007425 |
| Device ID | Request Payload tab → deviceId |
423564214341173249 |
Tip: Filter the Network tab by typing
device/listorhistoryto find the relevant requests faster.Security: Your IOT-Token is session-based and may expire. If the integration stops working, re-copy a fresh token from the portal.
| Field | Required | Description |
|---|---|---|
| IOT Token | ✅ Yes | Paste your IOT-Token header value |
| Station ID | ✅ Yes | 18-digit Station ID |
| Device ID | ⬜ Optional | Leave blank to auto-discover ALL devices |
| Time zone | ⬜ Optional | Default: Asia/Manila. Set to your local tz (e.g. Europe/Berlin) |
Device ID is optional. If you leave it blank, Home Assistant will call
POST /apis/device/listand create entities for every inverter under your station automatically. SetDevice IDonly if you want to restrict entities to a single device.
After adding the integration, go to Settings → Devices & Services → Solar of Things and click your station.
You should see:
Entities may show Unknown for the first 5 minutes while the coordinator fetches the first data update.
To monitor more than one station:
Each station appears as a separate device group in Home Assistant with its own set of sensors and control entities.
The screenshots below show typical HA entity cards for this integration. Your entity names will include your device name (e.g.
1_Inverter) instead of the placeholder shown.
┌─────────────────────────────────────────────────────┐
│ 1_Inverter · Siseli Solar Inverter │
├─────────────────────────────────────────────────────┤
│ ☀️ PV Input Power 22 W │
│ 🔌 AC Output Power 324 W │
│ 🔋 Battery State of Charge 76 % │
│ 🔋 Battery Voltage 27.2 V │
│ ⬆️ Battery Charging Current 1.2 A │
│ ⬇️ Battery Discharge Current 0.0 A │
│ ⚡ Battery Power 32.6 W │
│ 🏠 Load Power 324 W │
│ 📤 Grid Feed-in Power 0 W │
│ 📥 Grid Import Power 0 W │
├─────────────────────────────────────────────────────┤
│ 🎛️ Battery Charge Limit ████░░░░ 80 % │
│ 🎛️ Battery Discharge Limit █░░░░░░░ 10 % │
│ 🎛️ Grid Charge Limit ░░░░░░░░ 0 W │
│ 🔽 Operating Mode Self-Use │
│ 🔽 Battery Priority Solar First │
│ 🔘 Grid Charging OFF │
│ 🔘 Grid Feed-In ON │
│ 🔘 Backup Mode OFF │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ Solar Station 423564214316007425 │
├─────────────────────────────────────────────────────┤
│ 📊 Monthly PV Generated 95.45 kWh │
│ 📊 Monthly Grid Import 0.00 kWh │
│ 📊 Monthly Total Consumption 0.00 kWh │
│ 📊 Monthly Solar Coverage — % │
└─────────────────────────────────────────────────────┘
Solar production ──▶ sensor.1_inverter_pv_input_power
Grid consumption ──▶ sensor.1_inverter_grid_import_power
Return to grid ──▶ sensor.1_inverter_grid_feed_in_power
Battery charge ──▶ sensor.1_inverter_battery_charging_current
Battery discharge ──▶ sensor.1_inverter_battery_discharge_current
This integration is fully compatible with the HA Energy Dashboard.
Go to Settings → Dashboards → Energy and add:
| Dashboard slot | Entity to use |
|---|---|
| Solar production | sensor.{device}_pv_input_power |
| Grid consumption | sensor.{device}_grid_import_power |
| Return to grid | sensor.{device}_grid_feed_in_power |
| Battery charge | sensor.{device}_battery_charging_current |
| Battery discharge | sensor.{device}_battery_discharge_current |
For monthly totals use the station-level sensors:
| Dashboard slot | Entity to use |
|---|---|
| Solar production (monthly) | sensor.station_{id}_monthly_pv_generated |
| Grid import (monthly) | sensor.station_{id}_monthly_grid_import |
automation:
- alias: "Solar — Low Battery Alert"
trigger:
- platform: numeric_state
entity_id: sensor.1_inverter_battery_state_of_charge
below: 20
action:
- service: notify.mobile_app
data:
title: "⚠️ Solar Battery Low"
message: >
Battery is at
{{ states('sensor.1_inverter_battery_state_of_charge') }}%.
Consider reducing load or enabling grid charging.
automation:
- alias: "Solar — Enable Grid Charging at Night"
trigger:
- platform: time
at: "22:00:00"
action:
- service: switch.turn_on
target:
entity_id: switch.1_inverter_grid_charging
automation:
- alias: "Solar — Backup Mode Before Storm"
trigger:
- platform: state
entity_id: weather.home
to: "rainy"
condition:
- condition: numeric_state
entity_id: sensor.1_inverter_battery_state_of_charge
below: 80
action:
- service: switch.turn_on
target:
entity_id: switch.1_inverter_backup_mode
- service: number.set_value
target:
entity_id: number.1_inverter_battery_charge_limit
data:
value: 95
automation:
- alias: "Solar — TOU Mode During Peak Hours"
trigger:
- platform: time
at: "17:00:00"
action:
- service: select.select_option
target:
entity_id: select.1_inverter_operating_mode
data:
option: "Time-of-Use"
- alias: "Solar — Self-Use Mode After Peak"
trigger:
- platform: time
at: "21:00:00"
action:
- service: select.select_option
target:
entity_id: select.1_inverter_operating_mode
data:
option: "Self-Use"
type: entities
title: ☀️ Solar System
entities:
- entity: sensor.1_inverter_pv_input_power
name: Solar Generation
icon: mdi:solar-power
- entity: sensor.1_inverter_battery_state_of_charge
name: Battery Level
icon: mdi:battery
- entity: sensor.1_inverter_load_power
name: Home Load
icon: mdi:home-lightning-bolt
- entity: sensor.1_inverter_grid_import_power
name: Grid Import
icon: mdi:transmission-tower-import
- entity: sensor.1_inverter_grid_feed_in_power
name: Grid Feed-In
icon: mdi:transmission-tower-export
type: glance
title: Solar At a Glance
entities:
- entity: sensor.1_inverter_pv_input_power
name: PV
- entity: sensor.1_inverter_battery_state_of_charge
name: Battery
- entity: sensor.1_inverter_load_power
name: Load
- entity: sensor.1_inverter_grid_import_power
name: Grid In
- entity: sensor.1_inverter_grid_feed_in_power
name: Grid Out
type: entities
title: 🎛️ Solar Controls
entities:
- entity: select.1_inverter_operating_mode
name: Operating Mode
- entity: select.1_inverter_battery_priority
name: Battery Priority
- entity: number.1_inverter_battery_charge_limit
name: Charge Limit
- entity: number.1_inverter_battery_discharge_limit
name: Discharge Limit
- entity: number.1_inverter_grid_charge_limit
name: Grid Charge Limit
- type: divider
- entity: switch.1_inverter_grid_charging
name: Grid Charging
- entity: switch.1_inverter_grid_feed_in
name: Grid Feed-In
- entity: switch.1_inverter_backup_mode
name: Backup Mode
See the full guide: TROUBLESHOOTING.md
Quick reference for the most common issues:
| Symptom | Most likely cause | Fix |
|---|---|---|
| "Cannot Connect" on setup | Expired or wrong IOT-Token | Re-copy fresh token from portal DevTools |
| No devices discovered | Wrong Station ID | Verify 18-digit stationId in portal Network tab |
| Entities show "Unavailable" | Token expired or portal unreachable | Check HA logs + re-enter token |
| Sensors always "Unknown" | API returns null for that field | Normal for unsupported sensors on your model |
| Controls do nothing | Settings endpoint varies by firmware | Check HA logs for endpoint + HTTP status |
| Integration not in search | Files not installed correctly | Verify /config/custom_components/solar_of_things/ exists |
Add to configuration.yaml:
logger:
default: info
logs:
custom_components.solar_of_things: debug
Restart HA, reproduce the problem, then check Settings → System → Logs.
This integration targets the same endpoints used by the Siseli web portal.
| Endpoint | Method | Purpose |
|---|---|---|
/apis/device/list |
POST | Discover all device IDs under a station |
/apis/deviceState/simple/attribute/keys/history/v1 |
POST | Real-time time-series telemetry per device |
/apis/stationOverView/stateAttributeSummary/category/yearly |
POST | Monthly energy summary per station |
| Header | Value |
|---|---|
IOT-Token |
Your authentication token |
IOT-Time-Zone |
Your timezone string (e.g. Asia/Manila) |
Content-Type |
application/json; charset=utf-8 |
Origin |
https://solar.siseli.com |
Reference client (Node.js CLI with same API behavior): Hyllesen/solar-of-things-solar-usage
Contributions are very welcome!
git checkout -b feature/my-improvementRun the validation workflow locally:
python3 -m py_compile __init__.py api.py config_flow.py \
const.py sensor.py number.py select.py switch.py
Commit with a clear message and open a Pull Request.
Bug reports and feature requests → use the GitHub Issues templates: github.com/conexocasa/solar-of-things-ha/issues/new/choose
See CHANGELOG.md for a full history.
| Version | Highlights |
|---|---|
| v2.1.1 | HACS metadata, GitHub Actions CI/CD, issue templates, release script |
| v2.1.0 | Station-based device auto-discovery (/apis/device/list) |
| v2.0.0 | Control entities (battery limits, operating modes, grid switches) |
| v1.0.0 | Initial release — monitoring sensors, config flow, multi-station |
This project is licensed under the MIT License — see LICENSE for details.
This is an unofficial community integration and is not affiliated with, endorsed by, or supported by Siseli or Solar of Things. Use at your own risk. The API may change without notice.
Made with ☀️ for the Home Assistant community
Report a Bug ·
Request a Feature ·
HA Community Forum