Initial commit: HACS-ready Home Assistant integration

Remote Media Player integration for controlling PC media playback
from Home Assistant via the Media Server API.

Features:
- Full media player controls (play, pause, stop, next, previous)
- Volume control and mute
- Seek support with smooth timeline updates
- Real-time updates via WebSocket
- Script buttons for PC control (shutdown, restart, lock, etc.)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-04 14:40:33 +03:00
commit 783771489a
16 changed files with 2134 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
{
"config": {
"step": {
"user": {
"title": "Connect to Media Server",
"description": "Enter the connection details for your Media Server.",
"data": {
"host": "Host",
"port": "Port",
"token": "API Token",
"name": "Name",
"poll_interval": "Poll Interval"
},
"data_description": {
"host": "Hostname or IP address of the Media Server",
"port": "Port number (default: 8765)",
"token": "API authentication token from the server configuration",
"name": "Display name for this media player",
"poll_interval": "How often to poll for status updates (seconds)"
}
}
},
"error": {
"cannot_connect": "Failed to connect to the Media Server. Please check the host and port.",
"invalid_auth": "Invalid API token. Please check your token.",
"unknown": "An unexpected error occurred."
},
"abort": {
"already_configured": "This Media Server is already configured."
}
},
"options": {
"step": {
"init": {
"title": "Options",
"data": {
"poll_interval": "Poll Interval"
},
"data_description": {
"poll_interval": "How often to poll for status updates (seconds)"
}
}
}
},
"services": {
"execute_script": {
"name": "Execute Script",
"description": "Execute a pre-defined script on the media server.",
"fields": {
"script_name": {
"name": "Script Name",
"description": "Name of the script to execute (as defined in server config)"
},
"args": {
"name": "Arguments",
"description": "Optional list of arguments to pass to the script"
}
}
}
}
}

View File

@@ -0,0 +1,61 @@
{
"config": {
"step": {
"user": {
"title": "Подключение к Media Server",
"description": "Введите данные для подключения к Media Server.",
"data": {
"host": "Хост",
"port": "Порт",
"token": "API токен",
"name": "Название",
"poll_interval": "Интервал опроса"
},
"data_description": {
"host": "Имя хоста или IP-адрес Media Server",
"port": "Номер порта (по умолчанию: 8765)",
"token": "Токен аутентификации из конфигурации сервера",
"name": "Отображаемое имя медиаплеера",
"poll_interval": "Частота опроса статуса (в секундах)"
}
}
},
"error": {
"cannot_connect": "Не удалось подключиться к Media Server. Проверьте хост и порт.",
"invalid_auth": "Неверный API токен. Проверьте токен.",
"unknown": "Произошла непредвиденная ошибка."
},
"abort": {
"already_configured": "Этот Media Server уже настроен."
}
},
"options": {
"step": {
"init": {
"title": "Настройки",
"data": {
"poll_interval": "Интервал опроса"
},
"data_description": {
"poll_interval": "Частота опроса статуса (в секундах)"
}
}
}
},
"services": {
"execute_script": {
"name": "Выполнить скрипт",
"description": "Выполнить предопределённый скрипт на медиасервере.",
"fields": {
"script_name": {
"name": "Имя скрипта",
"description": "Имя скрипта для выполнения (из конфигурации сервера)"
},
"args": {
"name": "Аргументы",
"description": "Необязательный список аргументов для передачи скрипту"
}
}
}
}
}