Skip to content

andrew867/MonitorControlSDK

Repository files navigation

MonitorControlSDK — SDAP / SDCP monitor control

build-and-pack

MonitorControlSDK is a .NET 8 toolkit for discovering and controlling compatible professional monitors that advertise SDAP and accept SDCP on the documented ports. It implements SDAP (UDP discovery) and SDCP (TCP control), with optional UDP SDCP paths for VMC-style broadcast where supported.

The repository ships:

  • MonitorControl.Sdk (NuGet) — class library: framing, transport, VMC / VMS / VMA-oriented clients.
  • monitorctl — command-line tool for discovery, queries, and scripted control.
  • MonitorControl.Web — optional HTTP JSON API, OpenAPI, and small browser UI for integration with other languages and frontends.
  • Samples and firmware-style examples — runnable .NET samples plus Arduino / ESP32 sketches that use the HTTP API or raw SDCP.

Repository: github.com/andrew867/MonitorControlSDK
License: MIT (Copyright 2026 Andrew Green)


Recent release (v0.4.1)

Patch 0.4.1 improves SDCP TCP reliability (length-prefixed reads, V4 header buffer sizing), SDAP discoverability (recommendedControlIPv4 when packet IP is zero), and operator switches for TCP unit plus VMC item B000h / B001h across the SDK, monitorctl, samples, MonitorControl.Web (REST, SSE, WebSocket, static UI), OpenAPI, and docs. See docs/quickstart.md and docs/reference/sdcp-framing-and-items.md.

Earlier release (v0.4.0, 2026-04-13)

Minor release 0.4.0 follows Semantic Versioning. Documentation and diagrams now fully reflect ESP32 native TCP SDCP (examples/esp32-sdcp-vmc), the Python gateway SSE vs WebSocket split, corrected Sample.BroadcastControl (TCP REPL only, no UDP), fixed test plan class names, and expanded cross-links across guides and specs. No intentional wire-protocol or public API breaking changes from 0.3.0. Earlier: v0.3.0, v0.2.0, v0.1.2, v0.1.1.


Documentation

Resource Description
docs/index.md Documentation hub: tutorials, opcode references, firmware notes
docs/handbook.md Engineering handbook: protocols, implementation map, surfaces, OpenAPI, safety
docs/quickstart.md Short onboarding: build, discover, first commands
openapi/monitorcontrol.openapi.json Committed OpenAPI 3 spec (regenerate with bash scripts/fetch-openapi.sh)
docs/reference/references-parity.md Map between references/ snapshots and the shipped SDK
docs/ci-cd.md GitHub Actions and GitLab CI/CD setup

Build and run

dotnet build MonitorControl.sln -c Release
dotnet test MonitorControl.sln -c Release
dotnet run --project src/MonitorControl.Cli -- discover
dotnet run --project src/MonitorControl.Cli -- vmc --host 192.168.0.10 MODEL
dotnet run --project src/MonitorControl.Cli -- vmc-broadcast --scope all -- STATset BRIGHTNESS 512

HTTP API and web UI

dotnet run --project src/MonitorControl.Web --urls http://127.0.0.1:5080
  • UI: http://127.0.0.1:5080/
  • OpenAPI: http://127.0.0.1:5080/swagger

Optional Python gateway: examples/python-service/README.md.
Full guide: docs/guide/web-api-and-python-gateway.md.


Repository layout

Path Contents
src/MonitorControlSDK/ Library packaged as MonitorControl.Sdk on NuGet
src/MonitorControl.Web/ HTTP JSON API, Swagger, browser UI
src/MonitorControl.Cli/ monitorctl CLI
examples/python-service/ Optional Python service in front of the HTTP API
examples/arduino-knobs-brightness-contrast/ ESP32 / ESP8266: analog inputs → brightness / contrast via HTTP
examples/esp32-sdcp-vmc/ ESP32: native TCP SDCP (V3 + item 0xB000), multi-mode knobs — no HTTP gateway; see examples/esp32-sdcp-vmc/README.md
scripts/ OpenAPI fetch / C client generation helpers; openapi/ holds the committed spec
samples/ Runnable .NET samples (including UDP VMC broadcast)
docs/ Protocol and product documentation maintained with the code
references/ Read-only reference snapshots; see parity doc above
tests/ Unit tests
docs/plan/00-inventory.md Source file → responsibility map

Releases, NuGet, and CI/CD


Contributing and release hygiene

docs/READY-TO-PUSH.md — remotes, HTTPS, and pre-push checks.


Legal

Protocol documentation is provided for interoperability. Trademarks belong to their owners. Confirm behavior on your hardware and firmware before production or field deployment; obtain appropriate legal review where needed.

About

Monitor Control SDK for Sony BVM/PVM monitors connected via IP network

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors