mirror of
https://github.com/ferdzo/iotDashboard.git
synced 2026-04-05 09:06:26 +00:00
54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
import os
|
|
from dataclasses import dataclass
|
|
import dotenv
|
|
from typing import Optional
|
|
|
|
dotenv.load_dotenv()
|
|
|
|
|
|
@dataclass
|
|
class RedisConfig:
|
|
host: str
|
|
port: int = 6379
|
|
db: int = 0
|
|
password: Optional[str] = None
|
|
|
|
|
|
@dataclass
|
|
class MQTTConfig:
|
|
broker: str
|
|
port: int = 1883
|
|
username: Optional[str] = None
|
|
password: Optional[str] = None
|
|
topic_pattern: str = "devices/#"
|
|
keepalive: int = 60
|
|
|
|
|
|
@dataclass
|
|
class Payload:
|
|
device_id: str
|
|
sensor_type: str
|
|
value: float
|
|
timestamp: Optional[str] = None
|
|
|
|
|
|
class Config:
|
|
def __init__(self):
|
|
self.redis = RedisConfig(
|
|
host=os.getenv("REDIS_HOST", "localhost"),
|
|
port=int(os.getenv("REDIS_PORT", 6379)),
|
|
db=int(os.getenv("REDIS_DB", 0)),
|
|
password=os.getenv("REDIS_PASSWORD", None),
|
|
)
|
|
self.mqtt = MQTTConfig(
|
|
broker=os.getenv("MQTT_BROKER", "localhost"),
|
|
port=int(os.getenv("MQTT_PORT", 1883)),
|
|
username=os.getenv("MQTT_USERNAME", None),
|
|
password=os.getenv("MQTT_PASSWORD", None),
|
|
topic_pattern=os.getenv("MQTT_TOPIC_PATTERN", "devices/#"),
|
|
keepalive=int(os.getenv("MQTT_KEEPALIVE", 60)),
|
|
)
|
|
|
|
|
|
config = Config()
|