PhilipsSignageDisplaySicp 1.0.1

dotnet add package PhilipsSignageDisplaySicp --version 1.0.1                
NuGet\Install-Package PhilipsSignageDisplaySicp -Version 1.0.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PhilipsSignageDisplaySicp" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PhilipsSignageDisplaySicp --version 1.0.1                
#r "nuget: PhilipsSignageDisplaySicp, 1.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install PhilipsSignageDisplaySicp as a Cake Addin
#addin nuget:?package=PhilipsSignageDisplaySicp&version=1.0.1

// Install PhilipsSignageDisplaySicp as a Cake Tool
#tool nuget:?package=PhilipsSignageDisplaySicp&version=1.0.1                

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.

Install

A release package has been published to Nuget: https://www.nuget.org/packages/PhilipsSignageDisplaySicp

dotnet add package PhilipsSignageDisplaySicp

Usage

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.

Features implemented for Philips 10BDL3051T

Philips 10BDL3051T

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

Implementing a custom display client

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.

  1. 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) { }
    }
    
  2. 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));
    }
    
  3. 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);
    
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.1 6,340 3/17/2019
1.0.0 520 3/17/2019
0.1.0-alpha 415 3/13/2019