diff --git a/get-lights.py b/get-lights.py new file mode 100755 index 0000000..1715646 --- /dev/null +++ b/get-lights.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +# +# Copyright 2019, Mischa Peters , High5!. +# Version 1.0 - 20191028 +# +# Requires: +# - Python 3.x +# +import argparse +import ssl +import urllib.request +import json +import re +import collections + +parser = argparse.ArgumentParser(description="Get all sensors from Hue Bridge") +parser.add_argument("bridge", type=str, help="Hue Bridge IP") +parser.add_argument("token", type=str, help="Hue API Token") + +try: + args = parser.parse_args() + bridge = args.bridge + token = args.token + +except argparse.ArgumentError as e: + print(str(e)) + +no_cert_check = ssl.create_default_context() +no_cert_check.check_hostname=False +no_cert_check.verify_mode=ssl.CERT_NONE + +url = f"https://{bridge}/api/{token}/lights" +req = urllib.request.Request(url) +with urllib.request.urlopen(req, context=no_cert_check) as response: + content = response.read() +json_data = json.loads(content) + +#p = re.compile("([a-fA-F0-9]{2}:?){8}") +#sensors = collections.defaultdict(list); + +for key in json_data: + print(f"{key}: {json_data[key]['name']}") diff --git a/get-sensors.py b/get-sensors.py new file mode 100755 index 0000000..eb8c886 --- /dev/null +++ b/get-sensors.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +# +# Copyright 2019, Mischa Peters , High5!. +# Version 1.0 - 20191028 +# +# Requires: +# - Python 3.x +# +import argparse +import ssl +import urllib.request +import json +import re +import collections + +parser = argparse.ArgumentParser(description="Get all sensors from Hue Bridge") +parser.add_argument("bridge", type=str, help="Hue Bridge IP") +parser.add_argument("token", type=str, help="Hue API Token") + +try: + args = parser.parse_args() + bridge = args.bridge + token = args.token + +except argparse.ArgumentError as e: + print(str(e)) + +no_cert_check = ssl.create_default_context() +no_cert_check.check_hostname=False +no_cert_check.verify_mode=ssl.CERT_NONE + +url = f"https://{bridge}/api/{token}/sensors" +req = urllib.request.Request(url) +with urllib.request.urlopen(req, context=no_cert_check) as response: + content = response.read() +json_data = json.loads(content) + +p = re.compile("([a-fA-F0-9]{2}:?){8}") +sensors = collections.defaultdict(list); + +for key in json_data: + if "uniqueid" in json_data[key]: + if p.search(json_data[key]['uniqueid']): + if json_data[key]['type'] == 'ZLLPresence': + sensors[json_data[key]['uniqueid'][:-8]].insert(0, key) + else: + sensors[json_data[key]['uniqueid'][:-8]].append(key) + +for key in sensors: + #print(f"sens: {key} {sensors[key]}") + for i in sensors[key]: + if json_data.get(i)['type'] == 'ZLLPresence': + print(json_data.get(i)['name']) + print(f"{i}: {json_data.get(i)['productname']}") + if json_data.get(i)['type'] == 'ZLLLightLevel': + print(f"{i}: {json_data.get(i)['productname']}") + if json_data.get(i)['type'] == 'ZLLTemperature': + print(f"{i}: {json_data.get(i)['productname']}") +