M6-T02: add DSMR + Tibber flat config fields
- Settings: dsmr_ingest_enabled, dsmr_mqtt_topic, dsmr_sample_interval_s, tibber_api_token (secret), tibber_home_id (all opt-in / off by default). - CONFIG_FIELDS DSMR + Tibber sections; _settings_payload extended. - .env.example examples; test_api_config coverage (sections, secret, 422).
This commit is contained in:
@@ -58,6 +58,16 @@ class Settings(BaseSettings):
|
||||
ha_discovery_enabled: bool = False
|
||||
ha_discovery_prefix: str = "homeassistant"
|
||||
|
||||
# DSMR smart-meter ingest via MQTT (M6; default off — opt-in).
|
||||
# Subscribe to dsmr_mqtt_topic when dsmr_ingest_enabled=True.
|
||||
dsmr_ingest_enabled: bool = False
|
||||
dsmr_mqtt_topic: str = "dsmr/json"
|
||||
dsmr_sample_interval_s: int = 10
|
||||
|
||||
# Tibber dynamic pricing credentials (M6; only used when active contract kind=tibber).
|
||||
tibber_api_token: str = ""
|
||||
tibber_home_id: str = ""
|
||||
|
||||
model_config = SettingsConfigDict(
|
||||
env_file=".env",
|
||||
env_file_encoding="utf-8",
|
||||
|
||||
@@ -123,6 +123,29 @@ CONFIG_FIELDS: tuple[ConfigField, ...] = (
|
||||
"HA Discovery Prefix",
|
||||
),
|
||||
ConfigField("Modbus", "MODBUS_POLLING_ENABLED", "modbus_polling_enabled", "Modbus Polling Enabled", input_type="checkbox"),
|
||||
ConfigField(
|
||||
"DSMR",
|
||||
"DSMR_INGEST_ENABLED",
|
||||
"dsmr_ingest_enabled",
|
||||
"DSMR Ingest Enabled",
|
||||
input_type="checkbox",
|
||||
),
|
||||
ConfigField("DSMR", "DSMR_MQTT_TOPIC", "dsmr_mqtt_topic", "DSMR MQTT Topic"),
|
||||
ConfigField(
|
||||
"DSMR",
|
||||
"DSMR_SAMPLE_INTERVAL_S",
|
||||
"dsmr_sample_interval_s",
|
||||
"DSMR Sample Interval (s)",
|
||||
input_type="number",
|
||||
),
|
||||
ConfigField(
|
||||
"Tibber",
|
||||
"TIBBER_API_TOKEN",
|
||||
"tibber_api_token",
|
||||
"Tibber API Token",
|
||||
secret=True,
|
||||
),
|
||||
ConfigField("Tibber", "TIBBER_HOME_ID", "tibber_home_id", "Tibber Home ID"),
|
||||
)
|
||||
|
||||
|
||||
@@ -322,4 +345,9 @@ def _settings_payload(settings: Settings) -> dict[str, Any]:
|
||||
"mqtt_tls_enabled": settings.mqtt_tls_enabled,
|
||||
"ha_discovery_enabled": settings.ha_discovery_enabled,
|
||||
"ha_discovery_prefix": settings.ha_discovery_prefix,
|
||||
"dsmr_ingest_enabled": settings.dsmr_ingest_enabled,
|
||||
"dsmr_mqtt_topic": settings.dsmr_mqtt_topic,
|
||||
"dsmr_sample_interval_s": settings.dsmr_sample_interval_s,
|
||||
"tibber_api_token": settings.tibber_api_token,
|
||||
"tibber_home_id": settings.tibber_home_id,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user