Skip to main content

AV zone — av_zone v1

One room's audio and video, routed by a system that is not Juno.

The awkward case this exists for: a house already commissioned on Control4 or Savant, where every HDMI run, every matrix output and every warmup delay was entered once, years ago, by whoever installed it. Juno can drive that house — but re-drawing its signal graph to do so is days of work to arrive back where it started, and it would force Juno to learn the one thing worth not knowing: which input the TV is on.

So a room may hand its AV to a binding of this proxy instead. watch and listen on such a room do not run the pathfinder; they are forwarded here, and the far system does what it already knows how to do. Everything else about the room stays Juno's — its lights are ordinary light bindings, its sensors ordinary sensor bindings, and its automations do not care.

This is not a receiver. A receiver is a box with inputs, and modelling a room as one means inventing signal connections that do not exist, so that a pathfinder that must not run has something to chew on. This says what is true instead: the room's AV belongs to somebody else, and here is the handle.

Infrastructure rather than a device, which is why it sits under system beside room and bridge: nobody buys an AV zone, and nobody points a remote at one. It exists because another system does, and what a resident sees is the room in front of it.

A zone names its sources the way the far system names them, not the way Juno does. Core translates — a Juno binding in, that system's own id out — so nothing above this contract has to learn a foreign vocabulary, and a source the far system has never heard of is refused rather than sent into the dark.

Capabilities

Declared in the driver manifest under [[proxy]] capabilities. Anything not declared takes the default below.

CapabilityTypeDefaultMeaning
has_audiobooltrue
has_discrete_muteboolfalse
has_discrete_volumeboolfalseCan be set to an absolute volume
has_videobooltrue
volume_maxu32100

Commands

mute_toggle

No parameters.

off

Stop whatever is playing and release the room, as that system understands it.

No parameters.

select_source

Play something in this zone. source is the far system's own id, which core fills in from the binding somebody actually asked for.

ParameterTypeNotes
signalone of video · audio
sourcestring

set_mute

Only present when has_discrete_mute is declared true.

ParameterTypeNotes
mutebool

set_volume

Only present when has_discrete_volume is declared true.

ParameterTypeNotes
levelu32 0–100

volume_down

No parameters.

volume_up

No parameters.

Notifications

mute_changed

ParameterTypeNotes
mutebool

online_changed

ParameterTypeNotes
onlinebool

power_changed

ParameterTypeNotes
onbool

source_changed

Somebody picked a source over there — on a handheld remote, on a keypad, in an app.

ParameterTypeNotes
signalone of video · audio
sourcestring

volume_changed

ParameterTypeNotes
levelu32

State

Last-known values core keeps for a binding of this proxy.

KeyTypeMeaning
audio_sourcestring
mutebool
onbool
onlinebool
video_sourcestring
volumeu32