-
Notifications
You must be signed in to change notification settings - Fork 0
/
phue-cmd.py
58 lines (39 loc) · 1.52 KB
/
phue-cmd.py
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
import argparse
import os
from phue import Bridge
def list_lights(bridge):
for light_id, light in bridge.get_api()['lights'].items():
print('{light_id}: {light_name} [{light_state}]'.format(
light_id=light_id,
light_name=light['name'],
light_state=('on' if light['state']['on'] else 'off'),
))
def set_light_attribute(bridge, light_ids, key, value):
bridge.set_light(light_ids, key, value)
def get_bridge_ip_addr():
with open(os.path.expanduser('~/.phue'), 'r') as fp:
bridge_addr = fp.read().strip()
return bridge_addr
def main():
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='command')
power_parser = subparsers.add_parser(
'power', help='set lights to on or off state'
)
power_parser.add_argument('state', choices=('on', 'off'))
bri_parser = subparsers.add_parser('bri', help='Set brightness level')
bri_parser.add_argument('brightness', type=int)
subparsers.add_parser('list', help='list available bulbs')
parser.add_argument('--light', type=int)
bridge_addr = get_bridge_ip_addr()
bridge = Bridge(bridge_addr)
bridge.connect()
args = parser.parse_args()
if args.command == 'power':
set_light_attribute(bridge, args.light, 'on', args.state == 'on')
elif args.command == 'bri':
set_light_attribute(bridge, args.light, 'bri', args.brightness)
elif args.command == 'list':
list_lights(bridge)
if __name__ == '__main__':
main()