{"id":35843243,"url":"https://github.com/gethnet/ha-samsungtv-mdc","last_synced_at":"2026-01-17T15:35:33.047Z","repository":{"id":331506320,"uuid":"1126417770","full_name":"gethnet/ha-samsungtv-mdc","owner":"gethnet","description":"A Home Assistant custom integration for controlling Samsung signage displays over MDC. It auto-discovers a display via IP/port/display ID, exposes power, volume, input, ticker settings, and other sensors/entities, and supports TLS/PIN-secured connections. Includes services for ticker updates and configurable polling intervals.","archived":false,"fork":false,"pushed_at":"2026-01-12T23:46:21.000Z","size":211,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T22:12:03.598Z","etag":null,"topics":["custom-component","gethnet","home-assistant","homeassistant-custom-component","python","samsung-mdc"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gethnet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-01T21:45:55.000Z","updated_at":"2026-01-12T23:43:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gethnet/ha-samsungtv-mdc","commit_stats":null,"previous_names":["gethnet/ha-samsungtv-mdc"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/gethnet/ha-samsungtv-mdc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gethnet%2Fha-samsungtv-mdc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gethnet%2Fha-samsungtv-mdc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gethnet%2Fha-samsungtv-mdc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gethnet%2Fha-samsungtv-mdc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gethnet","download_url":"https://codeload.github.com/gethnet/ha-samsungtv-mdc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gethnet%2Fha-samsungtv-mdc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28511678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["custom-component","gethnet","home-assistant","homeassistant-custom-component","python","samsung-mdc"],"created_at":"2026-01-08T04:20:08.117Z","updated_at":"2026-01-17T15:35:33.039Z","avatar_url":"https://github.com/gethnet.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Samsung TV MDC for Home Assistant\n\nCustom integration for Samsung commercial displays that speak the MDC (Multiple Display Control) protocol. It uses the [`python-samsung-mdc`](https://pypi.org/project/python-samsung-mdc/) library to provide reliable power, input/source, volume/mute, backlight, color temperature, and ticker overlay control over TCP.\n\n## AI/LLM Notice\nPortions of this integration were authored with assistance from AI coding tools (LLMs) under human review. All generated content has been inspected, integrated, and tested for correctness and licensing compliance.\n\n## Features\n- Media Player entity (power, mute, volume set/step, input/source selection)\n- Backlight (manual lamp) and color temperature number controls\n- Ticker overlay helper (scrolling message on the display)\n- Config Flow (no YAML) with optional TLS PIN for secured MDC\n- Polling interval configurable per entry (5–15 minutes) with automatic reconnection after MDC timeouts\n\n## Installation\n### HACS (recommended)\n1. In HACS, add this repository as a **Custom Repository** (category: Integration).\n2. Install **Samsung TV MDC**.\n3. Restart Home Assistant.\n4. Add the integration via **Settings → Devices \u0026 Services → Add Integration → Samsung TV MDC**.\n\n### Manual\n1. Copy `custom_components/samsungtv_mdc` into your Home Assistant `config/custom_components` directory.\n2. Restart Home Assistant.\n3. Add the integration through the UI as above.\n\n## Configuration\n| Field | Description |\n| --- | --- |\n| Host | IP/hostname of the display (MDC TCP port 1515 by default) |\n| Port | MDC port (default `1515`) |\n| Display ID | MDC display ID (commonly `0` or `1`) |\n| TLS PIN | Optional 4‑digit PIN if Secure MDC is enabled |\n| Name | Friendly name for the entities |\n\n### Options\n- **Update interval** (minutes, 5–15)\n\n## Services \u0026 Examples\n- **Power and source**\n```yaml\nservice: media_player.turn_on\ntarget: {entity_id: media_player.lobby_display}\n```\n\n```yaml\nservice: media_player.select_source\ntarget: {entity_id: media_player.lobby_display}\ndata: {source: \"HDMI 2\"}\n```\n\n- **Volume and mute**\n```yaml\nservice: media_player.volume_set\ntarget: {entity_id: media_player.lobby_display}\ndata: {volume_level: 0.35}\n```\n\n```yaml\nservice: media_player.mute_volume\ntarget: {entity_id: media_player.lobby_display}\ndata: {is_volume_muted: true}\n```\n\n- **Ticker overlay**\n```yaml\nservice: samsungtv_mdc.set_ticker\ntarget: {entity_id: sensor.lobby_display_ticker}\ndata:\n  message: \"Meeting starts in 5 minutes\"\n  pos_horiz: left\n  motion_on: true\n  motion_dir: right\n  motion_speed: slow\n```\n\n## Troubleshooting\n- If commands stop working after power toggles, the integration automatically reconnects; wait a few seconds for the next poll or trigger `Reload` on the config entry.\n- Ensure the display’s MDC port and display ID match your settings; some models default to display ID `1`.\n\n## Breaking changes\n- The legacy binary sensor `binary_sensor.\u003cname\u003e_power` has been removed. Use the new enum sensor `sensor.\u003cname\u003e_panel_state` (`on`, `starting`, `off`) for automations and dashboards.\n\n## Development\n- Create a venv and install test deps: `bash scripts/setup-dev.sh`\n- Run tests: `source .venv/bin/activate \u0026\u0026 pytest`\n- Lint with ruff: `source .venv/bin/activate \u0026\u0026 ruff check . \u003e ruff.check.log`\n- Apply auto fixes from ruff: `source .venv/bin/activate \u0026\u0026 ruff check . --fix \u003e ruff.check.log`\n- Install pre-commit hooks to lint before commits: `source .venv/bin/activate \u0026\u0026 pre-commit install`\n\n## License\nMIT License (see `LICENSE`).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgethnet%2Fha-samsungtv-mdc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgethnet%2Fha-samsungtv-mdc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgethnet%2Fha-samsungtv-mdc/lists"}