Blame


1 e79b0f50 2019-11-06 mischa #!/usr/bin/env python3
2 e79b0f50 2019-11-06 mischa #
3 e79b0f50 2019-11-06 mischa # Copyright 2019, Mischa Peters <mischa AT high5 DOT nl>, High5!.
4 e79b0f50 2019-11-06 mischa # Version 1.0 - 20191106 - WIP!
5 e79b0f50 2019-11-06 mischa #
6 e79b0f50 2019-11-06 mischa # Get all rules
7 e79b0f50 2019-11-06 mischa #
8 e79b0f50 2019-11-06 mischa # For example:
9 e79b0f50 2019-11-06 mischa # $ get-rules.py <bridge IP> <token>
10 e79b0f50 2019-11-06 mischa #
11 e79b0f50 2019-11-06 mischa # Follow the steps at the Hue Developer site to get the username/token
12 e79b0f50 2019-11-06 mischa # https://developers.meethue.com/develop/get-started-2/
13 e79b0f50 2019-11-06 mischa #
14 e79b0f50 2019-11-06 mischa # Requires:
15 e79b0f50 2019-11-06 mischa # - Python >3.6
16 e79b0f50 2019-11-06 mischa #
17 e79b0f50 2019-11-06 mischa import argparse
18 e79b0f50 2019-11-06 mischa import ssl
19 e79b0f50 2019-11-06 mischa import urllib.request
20 e79b0f50 2019-11-06 mischa import json
21 e79b0f50 2019-11-06 mischa
22 e79b0f50 2019-11-06 mischa parser = argparse.ArgumentParser(description="Get all light ids from Hue Bridge")
23 e79b0f50 2019-11-06 mischa parser.add_argument("bridge", type=str, help="Hue Bridge IP")
24 e79b0f50 2019-11-06 mischa parser.add_argument("token", type=str, help="Hue API Token")
25 e79b0f50 2019-11-06 mischa
26 e79b0f50 2019-11-06 mischa try:
27 e79b0f50 2019-11-06 mischa args = parser.parse_args()
28 e79b0f50 2019-11-06 mischa bridge = args.bridge
29 e79b0f50 2019-11-06 mischa token = args.token
30 e79b0f50 2019-11-06 mischa
31 e79b0f50 2019-11-06 mischa except argparse.ArgumentError as e:
32 e79b0f50 2019-11-06 mischa print(str(e))
33 e79b0f50 2019-11-06 mischa
34 e79b0f50 2019-11-06 mischa no_cert_check = ssl.create_default_context()
35 e79b0f50 2019-11-06 mischa no_cert_check.check_hostname=False
36 e79b0f50 2019-11-06 mischa no_cert_check.verify_mode=ssl.CERT_NONE
37 e79b0f50 2019-11-06 mischa
38 e79b0f50 2019-11-06 mischa url = f"https://{bridge}/api/{token}/rules"
39 e79b0f50 2019-11-06 mischa req = urllib.request.Request(url)
40 e79b0f50 2019-11-06 mischa with urllib.request.urlopen(req, context=no_cert_check) as response:
41 e79b0f50 2019-11-06 mischa content = response.read()
42 e79b0f50 2019-11-06 mischa json_data = json.loads(content)
43 e79b0f50 2019-11-06 mischa print(json.dumps(json_data, indent=4, sort_keys=True))