Developers

Draft specification for review

SDKs — TypeScript and Python (proposal)

Open-source client libraries so a developer can discover, aim and monitor EDC loudspeakers from ten lines of code, with typed models generated from the OpenAPI file so docs and code cannot drift.

Markdown version: /developers/sdks.md

Status: proposal. Package names and API shape are illustrative until the protocol reference is confirmed. Licence: MIT.

TypeScript

import { discover } from "@edc-acoustics/sdk";                  // PROPOSAL — names illustrative

const devices = await discover({ timeoutMs: 2000 });            // UDP / mDNS discovery <mechanism TBD>
const sq90 = devices.find(d => d.model === "SQ-90")!;

await sq90.beams[1].set({ panDeg: -12, tiltDeg: -8, hWidthDeg: 40, vWidthDeg: 25, levelDb: -3 });
await sq90.inputs[1].set({ gainDb: 0, mute: false });
await sq90.apply();                                             // mirrors the app's Push/Apply
await sq90.presets.recall("sunday-service");                    // project- or array-level preset
sq90.on("status", s => console.log(s.temperatureC, s.faults)); // telemetry stream

Python

import edc_acoustics as edc                                     # PROPOSAL — pip install edc-acoustics

devices = edc.discover(timeout=2.0)
sq90 = next(d for d in devices if d.model == "SQ-90")
sq90.beams[1].set(pan_deg=-12, tilt_deg=-8, h_width_deg=40, v_width_deg=25, level_db=-3)
sq90.apply()
sq90.presets.recall("sunday-service")
for status in sq90.status_stream():
    print(status.temperature_c, status.faults)

CLI

edc discover · edc preset recall <id> · edc beam set <device> <n> --pan -12 --tilt -8 · edc status --watch · edc osc-bridge --listen <port>

Design rules

Typed models generated from /developers/openapi.yaml; semantic versioning; a --simulator flag that targets the Docker simulator; no telemetry sent anywhere but the LAN; README that opens with the install command and a working example.