33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
import os
|
|
from . import __version__, NAME
|
|
from pydantic import Field
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
import homie
|
|
|
|
HOSTNAME = os.getenv("HOSTNAME")
|
|
|
|
class Settings(BaseSettings):
|
|
"""Application settings for the DSMR 2 MQTT bridge."""
|
|
|
|
loglevel: str = Field('INFO', env='LOGLEVEL')
|
|
|
|
mqtt_host: str = Field(None, env='MQTT_HOST')
|
|
mqtt_port: int = Field(1883, env='MQTT_PORT')
|
|
mqtt_username: str = Field(None, env='MQTT_USERNAME')
|
|
mqtt_password: str = Field(None, env='MQTT_PASSWORD')
|
|
mqtt_client: str = Field(f"{NAME}-{HOSTNAME}", env='MQTT_CLIENT')
|
|
mqtt_share_client: bool = Field(True, env="MQTT_SHARE_CLIENT")
|
|
mqtt_tls: bool = Field(False, env='MQTT_TLS')
|
|
|
|
dsmr_port: str = Field('/dev/ttyUSB0', env='DSMR_PORT')
|
|
dsmr_protocol: str = Field('V5', env='DSMR_PROTOCOL')
|
|
dsmr_update_interval: int = Field(15, env='DSMR_UPDATE_INTERVAL')
|
|
|
|
homie_update_interval: int = 60
|
|
homie_topic: str = Field('homie', env='HOMIE_TOPIC')
|
|
homie_implementation: str \
|
|
= f"DSMR Homie {__version__} Homie 4 Version {homie.__version__}"
|
|
homie_fw_name: str = "DSMR"
|
|
homie_fw_version: str = __version__
|
|
|
|
model_config = SettingsConfigDict(extra='allow') |