| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- """Constants for the Solar of Things integration."""
- DOMAIN = "solar_of_things"
- # ─── Configuration keys ────────────────────────────────────────────────────────
- CONF_IOT_TOKEN = "iot_token" # legacy / advanced manual entry
- CONF_STATION_ID = "station_id"
- CONF_DEVICE_ID = "device_id"
- CONF_TIME_ZONE = "time_zone"
- # Credential-based auth (preferred)
- CONF_EMAIL = "email"
- CONF_PASSWORD = "password"
- # Runtime-stored token state (written back to config entry)
- CONF_REFRESH_TOKEN = "refresh_token"
- CONF_ACCESS_TOKEN_EXPIRES = "access_token_expires" # ISO-8601 string
- CONF_REFRESH_TOKEN_EXPIRES = "refresh_token_expires" # ISO-8601 string
- # ─── API base ──────────────────────────────────────────────────────────────────
- API_BASE_URL = "https://solar.siseli.com"
- # ─── Auth endpoints (discovered from portal JS bundle) ─────────────────────────
- API_LOGIN = "/login/account" # POST, no token needed
- API_REFRESH_TOKEN = "/login/refresh/access/token" # POST, no token needed
- # ─── Data endpoints ────────────────────────────────────────────────────────────
- API_TIME_SERIES = "/apis/deviceState/simple/attribute/keys/history/v1"
- API_MONTHLY_SUMMARY = "/apis/stationOverView/stateAttributeSummary/category/yearly"
- API_SETTINGS_GET = "/api/device/settings/v1"
- API_SETTINGS_SET = "/api/device/settings/update/v1"
- API_DEVICE_LIST = "/apis/device/list"
- # ─── Token refresh window ──────────────────────────────────────────────────────
- # Refresh the access token this many seconds *before* its stated expiry.
- # Mirrors the portal JS which refreshes when ≤300 s remain.
- TOKEN_REFRESH_LEAD_SECONDS = 300 # 5 minutes
- # ─── Sensor keys ───────────────────────────────────────────────────────────────
- SENSOR_KEYS = [
- "pvInputPower",
- "acOutputActivePower",
- "batteryDischargeCurrent",
- "batteryChargingCurrent",
- "batteryVoltage",
- "feedInPower",
- "batteryPower",
- "batterySOC",
- "gridPower",
- "loadPower",
- ]
- SENSOR_DEFINITIONS = {
- "pvInputPower": {
- "name": "PV Input Power",
- "unit": "W",
- "device_class": "power",
- "icon": "mdi:solar-power",
- },
- "acOutputActivePower": {
- "name": "AC Output Power",
- "unit": "W",
- "device_class": "power",
- "icon": "mdi:power-plug",
- },
- "batteryDischargeCurrent": {
- "name": "Battery Discharge Current",
- "unit": "A",
- "device_class": "current",
- "icon": "mdi:battery-arrow-down",
- },
- "batteryChargingCurrent": {
- "name": "Battery Charging Current",
- "unit": "A",
- "device_class": "current",
- "icon": "mdi:battery-arrow-up",
- },
- "batteryVoltage": {
- "name": "Battery Voltage",
- "unit": "V",
- "device_class": "voltage",
- "icon": "mdi:battery",
- },
- "batteryPower": {
- "name": "Battery Power",
- "unit": "W",
- "device_class": "power",
- "icon": "mdi:battery-charging",
- },
- "batterySOC": {
- "name": "Battery State of Charge",
- "unit": "%",
- "device_class": "battery",
- "icon": "mdi:battery",
- },
- "feedInPower": {
- "name": "Grid Feed-in Power",
- "unit": "W",
- "device_class": "power",
- "icon": "mdi:transmission-tower-export",
- },
- "gridPower": {
- "name": "Grid Import Power",
- "unit": "W",
- "device_class": "power",
- "icon": "mdi:transmission-tower-import",
- },
- "loadPower": {
- "name": "Load Power",
- "unit": "W",
- "device_class": "power",
- "icon": "mdi:home-lightning-bolt",
- },
- # Monthly summary sensors
- "monthly_pv_generated": {
- "name": "Monthly PV Generated",
- "unit": "kWh",
- "device_class": "energy",
- "icon": "mdi:solar-power",
- },
- "monthly_grid_import": {
- "name": "Monthly Grid Import",
- "unit": "kWh",
- "device_class": "energy",
- "icon": "mdi:transmission-tower-import",
- },
- "monthly_total_consumption": {
- "name": "Monthly Total Consumption",
- "unit": "kWh",
- "device_class": "energy",
- "icon": "mdi:home-lightning-bolt",
- },
- "monthly_solar_percentage": {
- "name": "Monthly Solar Coverage",
- "unit": "%",
- "icon": "mdi:percent",
- },
- }
|