4156dedf5e
Restructure how displays are exposed in Home Assistant:
Each physical monitor is now its own HA device linked to the media-server
hub via `via_device`. The hub keeps the media_player + script buttons; per-
display devices hold the power switch, brightness slider, and the new
capability entities. This lets users place displays in their own area/room
and keeps related entities grouped together in the UI.
New platforms:
- sensor: DisplayResolutionSensor (diagnostic, from EDID)
- binary_sensor: DisplayPrimaryBinarySensor + DisplayPowerControlBinarySensor
(both diagnostic; help users see why a power switch is or isn't created)
- select: DisplayInputSourceSelect (HDMI1/DP1/...), DisplayColorPresetSelect
(color temperature), DisplayPictureModeSelect (VCP 0xDC scene modes)
- number: added DisplayContrastNumber alongside brightness
Other changes:
- display_device helper centralises the per-display DeviceInfo; pulls real
manufacturer/model from EDID; device name no longer prepends the hub
title since via_device already shows the hierarchy.
- api_client gains set_display_{contrast,input_source,color_preset,picture_mode}
and stops forcing `?refresh=true` on every poll so HA can ride the
server's TTL cache instead of triggering full DDC/CI probes per entity.
- select / number entities now check the server's `success` flag and re-
sync from the actual monitor state when a write was silently rejected
(some monitors honor reads but ignore writes for certain DDC/CI codes).
Bumps manifest.json to 0.3.0 - the device topology change is user-visible
and existing brightness/power entities migrate to per-display devices on
first reload (unique_ids are preserved).
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
"""Constants for the Remote Media Player integration."""
|
|
|
|
DOMAIN = "remote_media_player"
|
|
|
|
# Configuration keys
|
|
CONF_HOST = "host"
|
|
CONF_PORT = "port"
|
|
CONF_TOKEN = "token"
|
|
CONF_POLL_INTERVAL = "poll_interval"
|
|
CONF_NAME = "name"
|
|
CONF_USE_WEBSOCKET = "use_websocket"
|
|
|
|
# Default values
|
|
DEFAULT_PORT = 8765
|
|
DEFAULT_POLL_INTERVAL = 5
|
|
DEFAULT_NAME = "Remote Media Player"
|
|
DEFAULT_USE_WEBSOCKET = True
|
|
DEFAULT_RECONNECT_INTERVAL = 5
|
|
|
|
# API endpoints
|
|
API_HEALTH = "/api/health"
|
|
API_STATUS = "/api/media/status"
|
|
API_PLAY = "/api/media/play"
|
|
API_PAUSE = "/api/media/pause"
|
|
API_STOP = "/api/media/stop"
|
|
API_NEXT = "/api/media/next"
|
|
API_PREVIOUS = "/api/media/previous"
|
|
API_VOLUME = "/api/media/volume"
|
|
API_MUTE = "/api/media/mute"
|
|
API_SEEK = "/api/media/seek"
|
|
API_TURN_ON = "/api/media/turn_on"
|
|
API_TURN_OFF = "/api/media/turn_off"
|
|
API_TOGGLE = "/api/media/toggle"
|
|
API_SCRIPTS_LIST = "/api/scripts/list"
|
|
API_SCRIPTS_EXECUTE = "/api/scripts/execute"
|
|
API_WEBSOCKET = "/api/media/ws"
|
|
API_BROWSER_FOLDERS = "/api/browser/folders"
|
|
API_BROWSER_BROWSE = "/api/browser/browse"
|
|
API_BROWSER_PLAY = "/api/browser/play"
|
|
API_DISPLAY_MONITORS = "/api/display/monitors"
|
|
API_DISPLAY_BRIGHTNESS = "/api/display/brightness"
|
|
API_DISPLAY_POWER = "/api/display/power"
|
|
API_DISPLAY_CONTRAST = "/api/display/contrast"
|
|
API_DISPLAY_INPUT_SOURCE = "/api/display/input_source"
|
|
API_DISPLAY_COLOR_PRESET = "/api/display/color_preset"
|
|
API_DISPLAY_PICTURE_MODE = "/api/display/picture_mode"
|
|
|
|
# Service names
|
|
SERVICE_EXECUTE_SCRIPT = "execute_script"
|
|
SERVICE_PLAY_MEDIA_FILE = "play_media_file"
|
|
|
|
# Service attributes
|
|
ATTR_SCRIPT_NAME = "script_name"
|
|
ATTR_SCRIPT_PARAMS = "params"
|
|
ATTR_FILE_PATH = "file_path"
|