69 lines
1.3 KiB
Python
69 lines
1.3 KiB
Python
from pathlib import Path
|
|
from dataclasses import asdict, dataclass
|
|
from typing import Any, Mapping
|
|
|
|
# Константы и классы
|
|
|
|
# Константы
|
|
|
|
# MAC Bluetooth бризера
|
|
TION_MAC = "d1:74:9b:eb:ee:a6"
|
|
|
|
QINGPING_MAC = "CCB5D131BA93"
|
|
QINGPING_MQTT_HOST = "192.168.7.3"
|
|
QINGPING_MQTT_PORT = 1883
|
|
|
|
|
|
MIN_FAN_SPEED = 1
|
|
MAX_FAN_SPEED = 6
|
|
|
|
MIN_TARGET_TEMP = 5
|
|
MAX_TARGET_TEMP = 30
|
|
|
|
AIR_MODE_OUTSIDE = "outside"
|
|
AIR_MODE_RECIRCULATION = "recirculation"
|
|
|
|
SUPPORTED_AIR_MODES = {
|
|
AIR_MODE_OUTSIDE,
|
|
AIR_MODE_RECIRCULATION,
|
|
}
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
SCHEDULE_FILE = (
|
|
PROJECT_ROOT
|
|
/ "config"
|
|
/ "schedule.yaml"
|
|
)
|
|
|
|
AUTO_CONFIG_FILE = (
|
|
PROJECT_ROOT
|
|
/ "config"
|
|
/ "auto.yaml"
|
|
)
|
|
|
|
|
|
|
|
|
|
WATCHDOG_INTERVAL = 5.0
|
|
|
|
# Type 13 обычно приходит примерно раз в 60 секунд.
|
|
# Даём дополнительный запас.
|
|
HEARTBEAT_STALE_AFTER = 90.0
|
|
|
|
# После появления устройства ждём первый sensor sample
|
|
# не дольше этого времени.
|
|
FIRST_SAMPLE_TIMEOUT = 30.0
|
|
|
|
# Если новые sensor samples не приходят дольше этого времени,
|
|
# считаем sensor stream зависшим.
|
|
SAMPLE_STALE_AFTER = 45.0
|
|
|
|
|
|
|
|
QINGPING_SAMPLE_TIMEOUT = 60.0
|
|
QINGPING_RECOVERY_TIMEOUT = 30.0
|
|
|
|
#Классы
|
|
|