settings.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. """Ühised seaded CH-tööriistadele (live.py, calibrate.py jne).
  2. Loeb .env failist (kui olemas) kasutaja/parooli, siis keskkonnamuutujatest.
  3. CH_URL jäetakse .env-ist vahele (seal on see konteineri jaoks `clickhouse`);
  4. vaikimisi kasutame Tailscale IP-d, mis töötab nii ohmu hostil kui mujal
  5. tailnetis. Vajadusel saab CH_URL-i ikka keskkonnamuutujaga üle kirjutada.
  6. NB! Ilma auth-ita ei saa: sea CH_USER/CH_PASS (või pane need .env-i).
  7. """
  8. from __future__ import annotations
  9. import os
  10. from pathlib import Path
  11. _ENV_CANDIDATES = (
  12. Path(__file__).resolve().parents[1] / ".env", # varvusensor/.env
  13. Path("/opt/docker-compose/dev/varvusensor/.env"), # ohmu live-stack
  14. )
  15. # Konteinerispetsiifilised võtmed, mida host-tööriistadele ei laadita.
  16. _SKIP_FROM_ENV = {"CH_URL", "MQTT_HOST", "MQTT_PORT", "MQTT_TOPIC"}
  17. def _load_env() -> None:
  18. for path in _ENV_CANDIDATES:
  19. if not path.is_file():
  20. continue
  21. for line in path.read_text().splitlines():
  22. line = line.strip()
  23. if not line or line.startswith("#") or "=" not in line:
  24. continue
  25. key, _, value = line.partition("=")
  26. key = key.strip()
  27. if key in _SKIP_FROM_ENV:
  28. continue
  29. os.environ.setdefault(key, value.strip())
  30. break
  31. _load_env()
  32. CH_URL = os.environ.get("CH_URL", "http://100.87.1.24:8125").rstrip("/")
  33. CH_DB = os.environ.get("CH_DB", "uus67")
  34. CH_TABLE = os.environ.get("CH_TABLE", "varvus")
  35. CH_USER = os.environ.get("CH_USER", "zigbee")
  36. CH_PASS = os.environ.get("CH_PASS", "")