-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathswitcher-client
executable file
·65 lines (40 loc) · 1.45 KB
/
switcher-client
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
65
#!/usr/bin/env python3
import sys
import socket
import argparse
parser = argparse.ArgumentParser(description='Control Audio Switcher')
parser.add_argument('action', choices=['on', 'off', 'state'],
help='Action for switcher-server to take')
parser.add_argument('--host', dest='host', default='localhost',
help='Hostname or IP address of switcher-server')
parser.add_argument('--port', dest='port', type=int, default=5555,
help='TCP port of switcher-server')
args = parser.parse_args()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(4)
return_code = 0
try:
sock.connect((args.host, args.port))
except (socket.timeout, ConnectionRefusedError):
print("Unable to connect to switcher-server at {}:{}.".format(
args.host, args.port), file=sys.stderr)
sock.close()
sys.exit(1)
if args.action == 'on':
sock.sendall(b'1')
elif args.action == 'off':
sock.sendall(b'0')
elif args.action == 'state':
sock.sendall(b'S')
state = sock.recv(1)
if int(state) == 0:
print('On')
return_code = 1 # Some modules like homebridge-cmdswitch2 use return code for switch state.
elif int(state) == 1:
print('On')
else:
print("Unexpected state response from switcher-server at {}:{}: '{}'".format(
args.host, args.port, state), file=sys.stderr)
return_code = 2
sock.close()
sys.exit(return_code)