AVCoders.SignalR.SetTopBox
2026.9.4
Prefix Reserved
See the version list below for details.
dotnet add package AVCoders.SignalR.SetTopBox --version 2026.9.4
NuGet\Install-Package AVCoders.SignalR.SetTopBox -Version 2026.9.4
<PackageReference Include="AVCoders.SignalR.SetTopBox" Version="2026.9.4" />
<PackageVersion Include="AVCoders.SignalR.SetTopBox" Version="2026.9.4" />
<PackageReference Include="AVCoders.SignalR.SetTopBox" />
paket add AVCoders.SignalR.SetTopBox --version 2026.9.4
#r "nuget: AVCoders.SignalR.SetTopBox, 2026.9.4"
#:package AVCoders.SignalR.SetTopBox@2026.9.4
#addin nuget:?package=AVCoders.SignalR.SetTopBox&version=2026.9.4
#tool nuget:?package=AVCoders.SignalR.SetTopBox&version=2026.9.4
AVCoders.SignalR.SetTopBox
SignalR hub and bridge for set-top box remote control: remote buttons, power and active-source state. Part of the AV Coders device library. Targets .NET 8.0.
Install
dotnet add package AVCoders.SignalR.SetTopBox
Published to nuget.org. See the repository README for details.
What's inside
ISetTopBoxHub/SetTopBoxHubSetTopBoxState- name, source id, supported buttons, power, desired power, active source and comms stateSetTopBoxUiSignalR- subscribes to aSetTopBoxManagerand rebroadcasts stateSetTopBoxManager- wraps anAVCoders.MediaPlayer.MediaPlayerthat implementsISetTopBox(for exampleAppleTvCec)
Contract
Hub path convention: /hubs/settopbox. UIs join a group by the manager's name, the same way as the source hub.
Client to server (SetTopBoxHub):
| Method | Notes |
|---|---|
JoinGroup(string groupName) |
Same name and signature as SourceHub; pushes the current SetTopBoxState to the caller. |
SendRemoteButton(string group, string button) |
button is a RemoteButton name, matched case-insensitively. Unknown or unsupported buttons are logged and dropped. |
PowerOn(string group) / PowerOff(string group) |
|
GetState(string group) |
Returns the current SetTopBoxState, or null for an unknown group. |
GetGroups() |
Registered group names. |
Server to client (ISetTopBoxHub):
| Method | Notes |
|---|---|
UpdateSetTopBox(SetTopBoxState state) |
Sent on join and whenever power, desired power, comms or active-source state changes. |
Commands are fire-and-forget: the hub returns as soon as the work is queued, and the new state comes back through UpdateSetTopBox.
Wire shape
SetTopBoxState is serialised by the SignalR JSON protocol with camelCase names and enums as integers (PowerState and CommunicationState from AVCoders.Core):
{
"name": "Boardroom",
"sourceId": "AppleTv",
"supportedButtons": ["Enter", "Up", "Down", "Left", "Right", "Back", "Home", "Play", "Pause", "PowerOn", "PowerOff"],
"powerState": 1,
"desiredPowerState": 1,
"isActiveSource": true,
"communicationState": 1
}
sourceId is the SourceId of the matching entry in the source hub, so a panel can show a remote on that source's tile.
Usage
// Program / control-system startup
new SetTopBoxUiSignalR(new SetTopBoxManager(zoneName, appleTv, "AppleTv"), SignalRProgram.SetTopBoxHubContext!);
// Web host
app.MapHub<SetTopBoxHub>("/hubs/settopbox");
SetTopBoxManager throws ArgumentException if the device does not implement ISetTopBox. Active-source reporting comes from AppleTvCec.IsActiveSource; other drivers report false.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- AVCoders.Core (>= 2026.9.4)
- AVCoders.MediaPlayer (>= 2026.9.4)
-
net8.0
- AVCoders.Core (>= 2026.9.4)
- AVCoders.MediaPlayer (>= 2026.9.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.