1
0

factory.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. """Factory for creating MQTT handlers."""
  2. import os
  3. from typing import Dict, Callable
  4. from dotenv import load_dotenv
  5. from pathlib import Path
  6. from .base import BaseMQTTHandler
  7. from .handler import MQTTHandler
  8. from .mock import MockMQTTHandler
  9. from .utils import create_mqtt_callbacks
  10. import logging
  11. logger = logging.getLogger(__name__)
  12. # Load environment variables
  13. BASE_DIR = Path(__file__).resolve().parent.parent.parent # Go up to project root
  14. env_path = os.path.join(BASE_DIR, '.env')
  15. load_dotenv(env_path)
  16. def create_mqtt_handler() -> BaseMQTTHandler:
  17. """Create and return an appropriate MQTT handler based on configuration.
  18. Returns:
  19. BaseMQTTHandler: Either a real MQTTHandler if MQTT_BROKER is configured,
  20. or a MockMQTTHandler if not.
  21. """
  22. mqtt_broker = os.getenv('MQTT_BROKER')
  23. if mqtt_broker:
  24. logger.info(f"Got MQTT configuration for broker: {mqtt_broker}, instantiating MQTTHandler")
  25. return MQTTHandler(create_mqtt_callbacks())
  26. logger.info("MQTT Not going to be used, instantiating MockMQTTHandler")
  27. return MockMQTTHandler()