Files
ha-ninlight/custom_components/ninlight/const.py
T

35 lines
1.1 KiB
Python

"""Constants for the ninlight integration. Deliberately free of Home Assistant imports."""
from __future__ import annotations
from datetime import timedelta
from typing import Final
DOMAIN: Final = "ninlight"
# Public default token of the ninlight firmware (CMakeLists.txt of the firmware repo).
DEFAULT_TOKEN: Final = "aabbccddeeff0011223344"
CONF_SCAN_INTERVAL: Final = "scan_interval"
CONF_LAMP_BASE_URL: Final = "lamp_base_url"
DEFAULT_SCAN_INTERVAL: Final = 30
MIN_SCAN_INTERVAL: Final = 10
MAX_SCAN_INTERVAL: Final = 300
MAX_TRANSITION_MS: Final = 60_000
FIRMWARE_DIR_NAME: Final = "ninlight_firmware"
CATALOG_SCAN_INTERVAL: Final = timedelta(minutes=5)
SIGNAL_CATALOG_UPDATED: Final = f"{DOMAIN}_catalog_updated"
FIRMWARE_URL_PREFIX: Final = "/api/ninlight/firmware/"
# len(secrets.token_urlsafe(32))
FIRMWARE_KEY_LENGTH: Final = 43
# The lamp rejects fw_update URLs longer than this (nl_api.c: get_string(cmd, "url", 8, 255)).
MAX_LAMP_URL_LENGTH: Final = 255
OTA_POLL_INTERVAL_S: Final = 5.0
# The firmware aborts a stalled download after 10 min; a dead peer can hang ~7 min in TCP.
OTA_TIMEOUT_S: Final = 12 * 60.0