API client for controlling Philips displays that implement Philips SICP protocol. Built using cross-platform .NET Core.
This project was created to manage a Philips 10BDL3051T display through the Philips SICP protocol. The protocol defines about 50 different commands but only the commands supported by the 10BDL3051T has been implemented (in Philips10BDL3051TClient
). See instructions below if you require support for a different display. Note that many commands implemented for 10BDL3051T works for other models as well.
Documentation of the SICP protocol can be found online: Documentation of the SICP protocol, v1.99, 25 May 2017
SICP stands for Serial (Ethernet) Interface Communication Protocol.
A package has been published to Nuget: https://www.nuget.org/packages/PhilipsSignageDisplaySicp
dotnet add package PhilipsSignageDisplaySicp --version 1.0.1
var displayIpAddress = IPAddress.Parse("192.168.1.100");
using (var socket = new SicpSocket(displayIpAddress, keepAlive: true))
{
// SICP client for Philips 10BDL3051T (10" Android tablet).
// can be used for other Philiips displays as well (except led strip)
var client = new Philips10BDL3051TClient(socket);
// print hardware and software information
Console.WriteLine(client.GetPlatformAndModelInfo());
// turn off the screen
client.EnableScreen(false);
// set volume to 50%
client.SetVolume(0.50);
// set led strip color to blue
client.EnableLedStrip(Color.Blue);
}
See more examples in the sample console project.
The Philips 10BDL3051T is a 10 inch tablet running Android 4.4, with hardware and software suitable for signage solutions. It is perfect fit for room booking displays or control panels.
The USA market has an almost identical product called 10BDL4151T.
To my knowledge this is the complete feature set implemented by 10BDL3051T.
- Controlling LED light
EnableLedStrip(Color color)
DisableLedStrip
GetLedStrip
- Toggling screen on and off
IsScreenOn
EnableScreen(bool enabled = true)
- Controlling the speaker volume
GetVolume
SetVolume(double speakerVolumePercentage)
- Controlling which input/app is active. E.g. browser, media player, PDF player or custom app.
GetInputSource
SetInputSource(InputSource inputSource)
- Schedule of when apps/inputs are activated. (Note: updating of schedule was very buggy in my device)
GetSchedule(SchedulePage schedule)
SetSchedule(SchedulePage schedulePage, Schedule schedule)
- Disabling touch support
IsTouchEnabled
SetTouchEnabled(bool enabled = true)
- Setting what is display during boot of the display
GetPowerOnLogo
SetPowerOnLogo(PowerOnLogo powerOnLogo)
- Deactivating USB and MicroSD ports to protect from malware and intrusions
IsExternalPortsEnabled
EnableExternalPorts(bool enabled = true)
- Control which group the display is part of
GetGroupId
SetGroupId(byte groupId)
- Misc. hardware and model information
GetOperatingHours
GetSerialCode
GetModelInfo
GetPlatformInfo
- Reset the display to factory settings
PerformFactoryReset
If you have a different display than the Philips 10BDL3051T, then you may need to create a custom SICP client. This can be done in the following manner.
-
Create a new class and inherit from
PhilipsSicpClient
:public class CustomPhilipsClient : PhilipsSicpClient { public CustomPhilipsClient(SicpSocket socket, byte monitorId = 1, byte groupId = 0) : base(socket, monitorId, groupId) { } }
-
Implement the command methods you need. Read the documentation to know how to format your command parameters. In this example we will implement the "4.1 Power state" command.
public virtual bool GetPowerState() { var message = Get(SicpCommands.PowerStateGet); // power is on when first parameter equals to 0x02 return message.CommandParameters[0] == 0x02; } public virtual void SetPowerState(bool powerState) { Set(SicpCommands.PowerStateSet, powerState.ToByte(trueValue: 0x02, falseValue: 0x01)); }
-
Instantiate your new client by passing in a SicpSocket instance.
var socket = new SicpSocket(IPAddress.Parse("192.168.1.100")); var client = new CustomPhilipsClient(socket); var powerState = client.GetPowerState(); client.SetPowerState(!powerState);
The following table lists some of the Philips displays that implement the SICP protocol. Every device may support different subsets of the available commands.
Model | Platform |
---|---|
Philips 10BDL3051T | Android |
Philips 32BDL4050D | Dragon 1.0 |
Philips 43BDL4050D | Dragon 1.0 |
Philips 43BDL4051T | Dragon 1.0 |
Philips 49BDL4050D | Dragon 1.0 |
Philips 55BDL4050D | Dragon 1.0 |
Philips 55BDL4051T | Dragon 1.0 |
Philips 65BDL3051T | Dragon 1.0 |
Philips 65BDL4050D | Dragon 1.0 |
Philips 42BDL5055P | Dragon 1.5 |
Philips 42BDL5057P | Dragon 1.5 |
Philips 49BDL5055P | Dragon 1.5 |
Philips 49BDL5057P | Dragon 1.5 |
Philips 55BDL5055P | Dragon 1.5 |
Philips 55BDL5057P | Dragon 1.5 |
Philips BDL4676XL | eagle |
Philips BDL4677XL | eagle |
Philips BDL4682XL | eagle |
Philips BDL5585XL | eagle |
Philips BDL5587XL | eagle |
Philips BDL6551V | eagle |
Philips BDL6520EL | eagle 1.2 |
Philips BDL6524ET/02 | eagle 1.2 |
Philips BDL3250EL | eagle 1.3 |
Philips BDL4250EL | eagle 1.3 |
Philips BDL4252EL | eagle 1.3 |
Philips BDL4254ET | eagle 1.3 |
Philips BDL4256ET | eagle 1.3 |
Philips BDL4271VL | eagle 1.3 |
Philips BDL4650EL | eagle 1.3 |
Philips BDL4652EL | eagle 1.3 |
Philips BDL4671VL | eagle 1.3 |
Philips BDL4677XH | eagle 1.3 |
Philips BDL4678XL | eagle 1.3 |
Philips BDL4776XL | eagle 1.3 |
Philips BDL4777XH | eagle 1.3 |
Philips BDL4777XL | eagle 1.3 |
Philips BDL5551EL | eagle 1.3 |
Philips BDL5554ET | eagle 1.3 |
Philips BDL5556ET | eagle 1.3 |
Philips BDL5571VL | eagle 1.3 |
Philips BDL5586XH | eagle 1.3 |
Philips BDL5586XL | eagle 1.3 |
Philips BDL8470EU | Himalaya |
Philips BDL8470QT | Himalaya |
Philips BDL8470QU | Himalaya |
Philips BDL9870EU | Himalaya |
Philips 75BDL3000U | Himalaya 1.2 |
Philips 75BDL3010T | Himalaya 1.2 |
Philips 75BDL3003H | Himalaya 1.2 |
Philips BDL3220QL | MTK5580 |
Philips BDL4220QL | MTK5580 |
Philips BDL4235DL | MTK5580 |
Philips BDL4620QL | MTK5580 |
Philips BDL5520QL | MTK5580 |
Philips BDL3230QL | MTK5580P2 |
Philips BDL4330QL | MTK5580P2 |
Philips BDL4335QL | MTK5580P2 |
Philips BDL4830QL | MTK5580P2 |
Philips BDL4835QL | MTK5580P2 |
Philips BDL5530QL | MTK5580P2 |
Philips BDL5535QL | MTK5580P2 |
Philips 55BDL1005X | Phoenix 1.0 |
Philips 55BDL1007X | Phoenix 1.0 |
Philips 65BDL3000Q | Phoenix 1.0 |
Philips 65BDL3010T | Phoenix 1.0 |
Philips BDL3260EL | Phoenix 1.0 |
Philips BDL4260EL | Phoenix 1.0 |
Philips BDL4280VL | Phoenix 1.0 |
Philips BDL4660EL | Phoenix 1.0 |
Philips BDL4680VL | Phoenix 1.0 |
Philips BDL4765EL | Phoenix 1.0 |
Philips BDL4780VH | Phoenix 1.0 |
Philips BDL4988XC | Phoenix 1.0 |
Philips BDL4988XL | Phoenix 1.0 |
Philips BDL5560EL | Phoenix 1.0 |
Philips BDL5580VL | Phoenix 1.0 |
Philips BDL5588XC | Phoenix 1.0 |
Philips BDL5588XH | Phoenix 1.0 |
Philips BDL5588XL | Phoenix 1.0 |
Philips BDL6520QL | Phoenix 1.0 |
Philips BDL6526QT | Phoenix 1.0 |
Philips BDL4270EL | Phoenix 2.0 |
Philips BDL4290VL | Phoenix 2.0 |
Philips BDL4970EL | Phoenix 2.0 |
Philips BDL4990VL | Phoenix 2.0 |
Philips BDL5570EL | Phoenix 2.0 |
Philips BDL5590VL | Phoenix 2.0 |
Philips 55BDL9018L | LED |
Philips 55BDL9025L | LED |