Custom integration for Biamp Tesira DSPs using the Tesira Text Protocol (TTP) over SSH (recommended) or Telnet.
Not the Trane/American Standard “Nexia” thermostat cloud integration. This targets Biamp professional Tesira DSP hardware only.
This is an original Shaffer-Softworks integration. It does not use or depend on community
tesira_ttppackages.
- Async TTP client (SSH via
asyncssh, Telnet with echo negotiation) SESSIONsetup, JSON+OKparsing,subscribe/unsubscribe- Config flow: manual IP or UDP discovery (port 12000)
- Control points: import arbitrary TTP addresses from CSV/JSON
- Block entities: level (
media_player), mute / logic (switch), source (select), presets (button), meters (sensor/binary_sensor) - Service
biamp_tesira.send_commandfor raw TTP - Connection
binary_sensor - Local control (no cloud)
- Home Assistant 2024.1 or newer
- Tesira with SSH and/or Telnet enabled on the control port
- When system security is enabled: a Tesira user with Controller permission (Biamp security)
Official Biamp wordmark (from biamp.com), bundled under custom_components/biamp_tesira/brand/ for Home Assistant 2026.3+ (icon.png, logo.png, dark / @2x variants).
Regenerate after updating brand/_source_biamp_wordmark.png:
python3 scripts/generate_brand_assets.py- Add
https://github.com/Shaffer-Softworks/biamp-tesiraas a custom repository (category: Integration). - Install Biamp Tesira and restart Home Assistant.
- Settings → Devices & services → Add integration → Biamp Tesira.
Or copy custom_components/biamp_tesira into config/custom_components/.
Export instance tags from Tesira software (DSP Properties / Object List), then build a file like examples/control_points.csv.
| Column | Description |
|---|---|
name |
Entity friendly name |
instance_tag |
Tesira instance tag (quote in CSV if it contains spaces) |
command |
Usually get (polling); set used when writing |
attribute |
TTP attribute (level, mute, state, …) |
index1, index2 |
Optional channel indexes |
entity_type |
number, switch, button, select |
min, max, unit |
For number entities |
options |
For select: pipe-separated list |
preset |
For button: DEVICE recallPreset id |
During setup (or Configure → Options → Add block entity), map common blocks:
| Block type | HA platform |
|---|---|
level |
media_player (volume / mute) |
mute |
switch |
logic_state |
switch |
source_selector |
select |
preset |
button (DEVICE recallPreset) |
signal_present_meter |
binary_sensor |
audio_meter |
sensor (dB) |
matrix_crosspoint |
switch (crosspoint on/off via crosspointLevelState) |
matrix_crosspoint_level |
number (crosspoint gain in dB via crosspointLevel) |
For matrix blocks, set matrix_input and matrix_output (TTP row/column indices) instead of channel.
Enable Live updates to use TTP subscribe (polling interval applies when off).
service: biamp_tesira.send_command
data:
command: "Level1 get level 1"
host: "192.168.1.50" # required if multiple Tesirascp .env.example .env
docker compose up -dOpen http://localhost:8123, add Biamp Tesira.
docker compose --profile mock up -d --build| Service | Host from HA container | Port |
|---|---|---|
tesira-mock |
tesira-mock |
23 |
tesira-mock (from host) |
localhost |
2323 |
Use protocol telnet, paste examples/control_points.csv, or add a level block on Level1 channel 1.
python3 -m pytest tests/See docs/HACS_DEFAULT.md for submitting to the official HACS default integration list.
- Tesira Text Protocol (PDF)
- Tesira security best practices
- Biamp Nexia integration (sister project, NTP protocol)
Apache-2.0