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)
|