File: volume_control.py

package info (click to toggle)
pyroon 0.1.6-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 372 kB
  • sloc: python: 1,660; sh: 135; makefile: 4
file content (64 lines) | stat: -rw-r--r-- 1,809 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import time

from roonapi import RoonApi, RoonDiscovery

appinfo = {
    "extension_id": "python_roon_test",
    "display_name": "Python library for Roon",
    "display_version": "1.0.0",
    "publisher": "gregd",
    "email": "mygreat@emailaddress.com",
}

# The Roon output you want this code to control
VOLUME_OUTPUT = "Hi Fi"

# After running go to roon - and change the volume control method to
# Python Library for Roon
# You will then get callbacks below when the volumes for that endpoint are changed

try:
    core_id = open("my_core_id_file").read()
    token = open("my_token_file").read()
except OSError:
    print("Please authorise first using discovery.py")
    exit()

discover = RoonDiscovery(core_id)
server = discover.first()
discover.stop()

roonapi = RoonApi(appinfo, token, server[0], server[1], True)


def volume_control_callback(control_key, event, value):
    """Handle roon callback when Called by roon when volume is changed."""

    print(
        "volume_control_callback control_key: %s event: %s value: %s"
        % (control_key, event, value)
    )

    # DO WHAT YOU NEED TO DO TO CHANGE THE VOLUME HERE
    if event == "set_volume":
        print("CHANGE VOLUME TO: %s" % (value))
    elif event == "set_mute":
        if value:
            print("MUTE VOLUME")
        else:
            print("UNMUTE VOLUME")
    else:
        print("COMMAND NOT SUPPORTED - %s" % (event))

    # Feedback to roon
    if event == "set_volume":
        roonapi.update_volume_control(control_key, value)
    elif event == "set_mute":
        roonapi.update_volume_control(control_key, None, value)


roonapi.register_volume_control(
    "1", VOLUME_OUTPUT, volume_control_callback, 0, "db", 2, -150, 0, True
)

time.sleep(100)