diff --git a/control/control.py b/control/control.py new file mode 100755 index 00000000..d3e55f81 --- /dev/null +++ b/control/control.py @@ -0,0 +1,59 @@ +import sys +import telnetlib +import json +import threading +import time + +if len(sys.argv) < 3: + print("usage: control.py [setVolume|setName]") + sys.exit(0) + +telnet = telnetlib.Telnet(sys.argv[1], 1705) +requestId = 1 + +def doRequest( j, requestId ): + print("send: " + j) + telnet.write(j + "\r\n") + while (True): + response = telnet.read_until("\r\n", 2) + jResponse = json.loads(response) + if 'id' in jResponse: + if jResponse['id'] == requestId: +# print("recv: " + response) + return jResponse; + return; + +def setVolume(client, volume): + global requestId + doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'Client.SetVolume', 'params': {'client': client, 'volume': volume}, 'id': requestId}), requestId) + requestId = requestId + 1 + +def setName(client, name): + global requestId + doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'Client.SetName', 'params': {'client': client, 'name': name}, 'id': requestId}), requestId) + requestId = requestId + 1 + +if sys.argv[2] == "setVolume": + if len(sys.argv) < 4: + print("usage: control.py setVolume ") + exit(0) + volume = int(sys.argv[3]) + j = doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'System.GetStatus', 'id': 1}), 1) + for client in j["result"]["clients"]: + setVolume(client['MAC'], volume) + +elif sys.argv[2] == "setName": + if len(sys.argv) < 5: + print("usage: control.py setName ") + exit(0) + setName(sys.argv[3], sys.argv[4]) + +else: + print("unknown command \"" + sys.argv[2] + "\"") + +j = doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'System.GetStatus', 'id': 1}), 1) +for client in j["result"]["clients"]: + print("MAC: " + client['MAC'] + ", conntect: " + str(client['connected']) + ", volume: " + str(client['volume']['percent']) + ", name: " + client['name'] + ", host: " + client['host']) + +telnet.close + diff --git a/control/setVolume.py b/control/setVolume.py index f850e915..114874ca 100755 --- a/control/setVolume.py +++ b/control/setVolume.py @@ -15,8 +15,8 @@ def doRequest( j, requestId ): jResponse = json.loads(response) if 'id' in jResponse: if jResponse['id'] == requestId: - print("recv: " + response) - return; +# print("recv: " + response) + return jResponse; return; def setVolume(client, volume): @@ -25,11 +25,13 @@ def setVolume(client, volume): requestId = requestId + 1 volume = int(sys.argv[2]) -doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'System.GetStatus', 'id': 1}), 1) -setVolume("00:21:6a:7d:74:fc", volume) -setVolume("80:1f:02:ed:fd:e0", volume) -setVolume("74:da:38:00:85:e2", volume) -setVolume("80:1f:02:ff:79:6e", volume) -setVolume("bc:5f:f4:ca:cd:64", volume) +j = doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'System.GetStatus', 'id': 1}), 1) +for client in j["result"]["clients"]: + setVolume(client['MAC'], volume) + +j = doRequest(json.dumps({'jsonrpc': '2.0', 'method': 'System.GetStatus', 'id': 1}), 1) +for client in j["result"]["clients"]: + print("MAC: " + client['MAC'] + ", name: " + client['name'] + ", conntect: " + str(client['connected']) + ", volume: " + str(client['volume']['percent'])) + telnet.close