Skip to main content

Automation control library for Yamaha receivers that support the YNCA protocol.

Project description

YNCA

Automation Library for Yamaha receivers that support the YNCA protocol.

Supported receivers according to protocol documentation (not all tested) or logs found on the internet. There might be more receivers that support this protocol. If you find some let met know so the list can be updated.

RX-A700, RX-A710, RX-A800, RX-A810, RX-A840, RX-A850, RX-A1000, RX-A1010, RX-A1040, RX-A2000, RX-A2010, RX-A3000, RX-A3010, RX-V671, RX-V867, RX-V871, RX-V1067, RX-V2067, RX-V2600, RX-V3067

Installation

python3 -m pip install ynca

Usage

This package contains:

Receiver

The Receiver class is the main interaction point for controlling the receiver. It is exposing the YNCA API as defined in the specification.

YNCA Console

The YNCA console provides an interactive console for YNCA commands intended for debugging. Examples on how to start below.

python3 -m ynca.connection /dev/ttyUSB0
python3 -m ynca.connection socket://192.168.178.21:50000

YNCA Server

A very basic YNCA server intended for debugging and testing without connecting to a real device. Check the commandline help of ynca_server.py for more details.

Example usage

# Create a receiver class by specifying the port.
# Port could also be e.g. COM3 on Windows or any `serial_url` as supported by PySerial
# Like for example `socket://192.168.1.12:50000` for IP connection
receiver = Receiver("/dev/tty1")

# Initializing takes a while (multiple seconds) since it communicates
# quite a lot with the actual device to determine its capabilities.
# Later calls to the receiver and subunits are fast.
# Note that attributes that are still None after initialization are not supported by the subunits
receiver.initialize()

# Every subunit has a dedicated attribute on the `Receiver` class.
# The name is the subunit id as used in YNCA.
# The returned subunit class can be used to communicate with the subunit
sys = receiver.SYS
main = receiver.MAIN

print(sys.modelname) # Print the modelname of the system
print(main.name) # Print the name of the main zone

# `receiver.inputs` is a dictionary of available inputs with the key being
# the unique ID and the value the friendly name if available.
# Note that not all inputs might be available to all zones, but
# it is not possible to derive this from the API
for id, name in receiver.inputs.items():
    print(f"input {id}: {name}")

# To get notifications when something changes register callback with the subunit
# Note that callbacks are called from a different thread
# Also note that the callback should not block for too long.
def update_callback():
    print("Something was updated on the MAIN subunit")

main.register_update_callback(update_callback)

# Examples to control a zone
main.pwr = True
main.mute = Mute.off
main.input = "HDMI3"
main.volume = -50.5
main.volume_up()

# When done close the receiver for proper shutdown
receiver.close()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ynca-3.0.2.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

ynca-3.0.2-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

Details for the file ynca-3.0.2.tar.gz.

File metadata

  • Download URL: ynca-3.0.2.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for ynca-3.0.2.tar.gz
Algorithm Hash digest
SHA256 bbd5e19c4c6ab85ebf0814657212286bfea423e9d19f5978ede7e3835ce700aa
MD5 4536b8e0fb6dce3d5dc3b83709e0e051
BLAKE2b-256 d18963462b06961979fef2b3f06b229e48caa22045b519a241b66219aa78c4a5

See more details on using hashes here.

File details

Details for the file ynca-3.0.2-py3-none-any.whl.

File metadata

  • Download URL: ynca-3.0.2-py3-none-any.whl
  • Upload date:
  • Size: 21.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for ynca-3.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c986f7f912cc8b440a68e4faf73ae4ac7c991705795774e3b6adb8d6e0dfdf92
MD5 59b45b1a24c39578b1a0c11d1440f591
BLAKE2b-256 177bcfcf4b624be2ff71dd2e1b3d1192f9a591559ccf89c40a5f473f84f6be84

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page