Homebridge plugin to control Philips D‑Line signage displays (e.g., 55BDL4511D/00) over LAN using the SICP protocol on TCP:5000.
Exposes the device as a HomeKit Television (power + input selection), with optional per‑input Switches.
⚠️ This plugin is vendor‑unofficial. Keep your display on a trusted VLAN. No auth is implemented by the display on port 5000.
- Power On/Off (SICP
0x18). - Input selection via configurable SICP codes (default HDMI1..4).
- Optional per‑input switches for quick Siri/Home automations.
- Multiple displays supported (platform plugin).
- Node.js >= 18.x
- Homebridge >= 1.6.0
- Philips D-Line display with Network Control over RJ45 enabled (OSD menu), and reachable on the LAN.
- The display should listen on TCP port 5000 (default for SICP over IP).
- Copy this folder to your Homebridge environment, then:
or install from npm:
cd homebridge-philips-dline-sicp npm install # For local development / manual install: sudo npm i -g .
sudo npm i -g homebridge-philips-dline-sicp
- In Homebridge UI (Config), add the platform and displays as below.
Add to your Homebridge config.json:
{
"platforms": [
{
"platform": "PhilipsDLinePlatform",
"displays": [
{
"name": "Salon TV",
"host": "192.168.1.120",
"port": 5000,
"monitorId": 1,
"includeGroup": true,
"groupId": 0,
"pollInterval": 10,
"exposeInputSwitches": true,
"inputs": [
{ "label": "HDMI 1", "code": "0x0D", "identifier": 1 },
{ "label": "HDMI 2", "code": "0x06", "identifier": 2 },
{ "label": "HDMI 3", "code": "0x0F", "identifier": 3 },
{ "label": "HDMI 4", "code": "0x19", "identifier": 4 }
],
"exposeBrightness": true
}
]
}
]
}monitorId: use the Monitor ID set in the OSD (often 1).0means broadcast (typically no reply).includeGroup: some firmwares expect a Group byte; leavetrueunless you see no ACK, then tryfalse.inputs: SICP input codes vary by model/firmware. The defaults work on many D-Line firmwares; adjust if needed.pollInterval: seconds between lightweight status refresh attempts. Set0to disable polling.exposeInputSwitches: creates aSwitchper input (mutually exclusive) for simple automations.exposeBrightness: (Defaulttrue). Exposes a Lightbulb service for brightness control. Warning: If enabled, HomeKit may group this with other lights ("Turn on all lights" -> Turns on TV). Set tofalseif you experience this issue.
- Power: Use the Television tile → On/Off.
- Input: Change the input from the TV tile, or toggle the per‑input switches (if enabled).
- Siri: “Switch Salon TV to HDMI 2”, “Turn on Salon TV”.
- No response / timeouts: check that the display answers on
tcp/5000(telnet IP 5000), and that “Network control / RJ45” is enabled. - Input won’t change: some displays require a short delay after power on; the plugin already waits ~300ms but you can increase it in code if needed.
- Wrong input codes: run with debugging, try other codes for
0xAC(input set). If you have the SICP table for your firmware, copy the exact codes intoinputs. - Security: do not expose the port to the Internet. Restrict to your LAN/VLAN.
MIT
You can control volume (HomeKit TelevisionSpeaker) and brightness (as a Lightbulb service named Backlight).
Because SICP codes may vary by firmware, you can choose between absolute and relative modes:
"volume": {
"min": 0,
"max": 100,
"initial": 15,
"setCode": "0x44", // OPTIONAL: absolute set: [0x44, value 0..100]
"upCode": "0x45", // OPTIONAL: relative up: [0x45]
"downCode": "0x46", // OPTIONAL: relative down: [0x46]
"muteSetCode": "0x47", // OPTIONAL: absolute mute: [0x47, 0|1]
"muteToggleCode": "0x48", // OPTIONAL: toggle mute: [0x48]
"stepDelayMs": 120 // delay between relative steps
}Provide either
setCodeor (upCodeanddownCode).muteSetCodeormuteToggleCodeare optional.
"brightness": {
"min": 0,
"max": 100,
"initial": 50,
"setCode": "0x10", // OPTIONAL: absolute set: [0x10, value 0..100]
"upCode": "0x11", // OPTIONAL: relative up: [0x11]
"downCode": "0x12", // OPTIONAL: relative down: [0x12]
"stepDelayMs": 120
}If your firmware supports DDC-like absolute brightness, use
setCode(often0x32or0x10). Otherwise use relative up/down. Note: If you do not configure brightness codes, the plugin will attempt a default SICP command (0x32) which works on many D-Line models.
{
"name": "Salon TV",
"host": "192.168.1.120",
"port": 5000,
"monitorId": 1,
"includeGroup": true,
"groupId": 0,
"pollInterval": 10,
"exposeInputSwitches": true,
"inputs": [
{ "label": "HDMI 1", "code": "0x0D", "identifier": 1 },
{ "label": "HDMI 2", "code": "0x06", "identifier": 2 },
{ "label": "HDMI 3", "code": "0x0F", "identifier": 3 },
{ "label": "HDMI 4", "code": "0x19", "identifier": 4 }
],
"volume": {
"min": 0,
"max": 60,
"initial": 10,
"setCode": "0x44",
"muteSetCode": "0x47"
},
"brightness": {
"min": 0,
"max": 100,
"initial": 50,
"setCode": "0x10"
}
}- The plugin now explicitly sets the Accessory Category to
TELEVISION. - If the icon remains a box/switch, try restarting Homebridge or removing/re-adding the accessory (or clearing
cachedAccessories).