def run(): # Assign configuration variables. # The configuration check takes care they are present. api = api_factory(sys.argv[1], sys.argv[2]) gateway = Gateway() devices_command = gateway.get_devices() devices_commands = api(devices_command) devices = api(*devices_commands) lights = [dev for dev in devices if dev.has_light_control] tasks_command = gateway.get_smart_tasks() tasks = api(tasks_command) # Print all lights print(lights) # Lights can be accessed by its index, so lights[1] is the second light light = lights[0] observe(api, light) # Example 1: checks state of the light 2 (true=on) print(light.light_control.lights[0].state) # Example 2: get dimmer level of light 2 print(light.light_control.lights[0].dimmer) # Example 3: What is the name of light 2 print(light.name) # Example 4: Set the light level of light 2 dim_command = light.light_control.set_dimmer(255) api(dim_command) # Example 5: Change color of light 2 # f5faf6 = cold | f1e0b5 = normal | efd275 = warm color_command = light.light_control.set_hex_color('efd275') api(color_command) # Example 6: Return the transition time (in minutes) for task#1 if tasks: print(tasks[0].task_control.tasks[0].transition_time) # Example 7: Set the dimmer stop value to 30 for light#1 in task#1 dim_command_2 = tasks[0].start_action.devices[0].item_controller\ .set_dimmer(30) api(dim_command_2) print("Sleeping for 2 min to receive the rest of the observation events") print("Try altering the light (%s) in the app, and watch the events!" % light.name) time.sleep(120)
def run(): # Assign configuration variables. # The configuration check takes care they are present. conf = load_json(CONFIG_FILE) try: identity = conf[args.host].get('identity') psk = conf[args.host].get('key') api_factory = APIFactory(host=args.host, psk_id=identity, psk=psk) except KeyError: identity = uuid.uuid4().hex api_factory = APIFactory(host=args.host, psk_id=identity) try: psk = api_factory.generate_psk(args.key) print('Generated PSK: ', psk) conf[args.host] = {'identity': identity, 'key': psk} save_json(CONFIG_FILE, conf) except AttributeError: raise PytradfriError("Please provide your Key") api = api_factory.request gateway = Gateway() devices_command = gateway.get_devices() devices_commands = api(devices_command) devices = api(devices_commands) lights = [dev for dev in devices if dev.has_light_control] # Print all lights print(lights) # Lights can be accessed by its index, so lights[1] is the second light light = lights[0] observe(api, light) # Example 1: checks state of the light (true=on) print(light.light_control.lights[0].state) # Example 2: get dimmer level of the light print(light.light_control.lights[0].dimmer) # Example 3: What is the name of the light print(light.name) # Example 4: Set the light level of the light dim_command = light.light_control.set_dimmer(254) api(dim_command) # Example 5: Change color of the light # f5faf6 = cold | f1e0b5 = normal | efd275 = warm color_command = light.light_control.set_hex_color('efd275') api(color_command) tasks_command = gateway.get_smart_tasks() tasks_commands = api(tasks_command) tasks = api(tasks_commands) # Example 6: Return the transition time (in minutes) for task#1 if tasks: print(tasks[0].task_control.tasks[0].transition_time) # Example 7: Set the dimmer stop value to 30 for light#1 in task#1 dim_command_2 = tasks[0].start_action.devices[0].item_controller\ .set_dimmer(30) api(dim_command_2) print("Sleeping for 2 min to receive the rest of the observation events") print("Try altering the light (%s) in the app, and watch the events!" % light.name) time.sleep(120)
def run(): # Assign configuration variables. # The configuration check takes care they are present. api = yield from api_factory(sys.argv[1], sys.argv[2]) gateway = Gateway() devices_command = gateway.get_devices() devices_commands = yield from api(devices_command) devices = yield from api(*devices_commands) lights = [dev for dev in devices if dev.has_light_control] tasks_command = gateway.get_smart_tasks() tasks = yield from api(tasks_command) # Print all lights print(lights) # Lights can be accessed by its index, so lights[1] is the second light light = lights[0] def observe_callback(updated_device): light = updated_device.light_control.lights[0] print("Received message for: %s" % light) def observe_err_callback(err): print('observe error:', err) for light in lights: observe_command = light.observe(observe_callback, observe_err_callback, duration=120) # Start observation as a second task on the loop. ensure_future(api(observe_command)) # Yield to allow observing to start. yield from asyncio.sleep(0) # Example 1: checks state of the light 0 (true=on) print("Is on:", light.light_control.lights[0].state) # Example 2: get dimmer level of light 0 print("Dimmer:", light.light_control.lights[0].dimmer) # Example 3: What is the name of light 0 print("Name:", light.name) # Example 4: Set the light level of light 0 dim_command = light.light_control.set_dimmer(255) yield from api(dim_command) # Example 5: Change color of light 0 # f5faf6 = cold | f1e0b5 = normal | efd275 = warm color_command = light.light_control.set_hex_color('efd275') yield from api(color_command) # Example 6: Return the transition time (in minutes) for task#1 if tasks: print(tasks[0].task_control.tasks[0].transition_time) # Example 7: Set the dimmer stop value to 30 for light#1 in task#1 dim_command_2 = tasks[0].start_action.devices[0].item_controller\ .set_dimmer(30) yield from api(dim_command_2) print("Waiting for observation to end (2 mins)") print("Try altering any light in the app, and watch the events!") yield from asyncio.sleep(120)
async def run(): # Assign configuration variables. # The configuration check takes care they are present. conf = load_json(CONFIG_FILE) try: identity = conf[args.host].get("identity") psk = conf[args.host].get("key") api_factory = await APIFactory.init(host=args.host, psk_id=identity, psk=psk) except KeyError: identity = uuid.uuid4().hex api_factory = await APIFactory.init(host=args.host, psk_id=identity) try: psk = await api_factory.generate_psk(args.key) print("Generated PSK: ", psk) conf[args.host] = {"identity": identity, "key": psk} save_json(CONFIG_FILE, conf) except AttributeError: raise PytradfriError( "Please provide the 'Security Code' on the " "back of your Tradfri gateway using the " "-K flag." ) api = api_factory.request gateway = Gateway() devices_command = gateway.get_devices() devices_commands = await api(devices_command) devices = await api(devices_commands) lights = [dev for dev in devices if dev.has_light_control] # Print all lights print(lights) # Lights can be accessed by its index, so lights[1] is the second light if lights: light = lights[0] else: print("No lights found!") light = None def observe_callback(updated_device): light = updated_device.light_control.lights[0] print("Received message for: %s" % light) def observe_err_callback(err): print("observe error:", err) for light in lights: observe_command = light.observe( observe_callback, observe_err_callback, duration=120 ) # Start observation as a second task on the loop. asyncio.ensure_future(api(observe_command)) # Yield to allow observing to start. await asyncio.sleep(0) if light: # Example 1: checks state of the light (true=on) print("Is on:", light.light_control.lights[0].state) # Example 2: get dimmer level of the light print("Dimmer:", light.light_control.lights[0].dimmer) # Example 3: What is the name of the light print("Name:", light.name) # Example 4: Set the light level of the light dim_command = light.light_control.set_dimmer(254) await api(dim_command) # Example 5: Change color of the light # f5faf6 = cold | f1e0b5 = normal | efd275 = warm color_command = light.light_control.set_hex_color("efd275") await api(color_command) # Get all blinds blinds = [dev for dev in devices if dev.has_blind_control] # Print all blinds print(blinds) if blinds: blind = blinds[0] else: print("No blinds found!") blind = None if blind: blind_command = blinds[0].blind_control.set_state(50) await api(blind_command) tasks_command = gateway.get_smart_tasks() tasks_commands = await api(tasks_command) tasks = await api(tasks_commands) # Example 6: Return the transition time (in minutes) for task#1 if tasks: print(tasks[0].task_control.tasks[0].transition_time) # Example 7: Set the dimmer stop value to 30 for light#1 in task#1 dim_command_2 = tasks[0].start_action.devices[0].item_controller.set_dimmer(30) await api(dim_command_2) print("Waiting for observation to end (2 mins)") print("Try altering any light in the app, and watch the events!") await asyncio.sleep(120) await api_factory.shutdown()
def run(): # Assign configuration variables. # The configuration check takes care they are present. conf = load_json(CONFIG_FILE) try: identity = conf[args.host].get("identity") psk = conf[args.host].get("key") api_factory = APIFactory(host=args.host, psk_id=identity, psk=psk) except KeyError: identity = uuid.uuid4().hex api_factory = APIFactory(host=args.host, psk_id=identity) try: psk = api_factory.generate_psk(args.key) print("Generated PSK: ", psk) conf[args.host] = {"identity": identity, "key": psk} save_json(CONFIG_FILE, conf) except AttributeError: raise PytradfriError( "Please provide the 'Security Code' on the " "back of your Tradfri gateway using the " "-K flag." ) api = api_factory.request gateway = Gateway() devices_command = gateway.get_devices() devices_commands = api(devices_command) devices = api(devices_commands) lights = [dev for dev in devices if dev.has_light_control] # Print all lights print(lights) # Lights can be accessed by its index, so lights[1] is the second light if lights: light = lights[0] else: print("No lights found!") light = None if light: observe(api, light) # Example 1: checks state of the light (true=on) print("State: {}".format(light.light_control.lights[0].state)) # Example 2: get dimmer level of the light print("Dimmer: {}".format(light.light_control.lights[0].dimmer)) # Example 3: What is the name of the light print("Name: {}".format(light.name)) # Example 4: Set the light level of the light dim_command = light.light_control.set_dimmer(254) api(dim_command) # Example 5: Change color of the light # f5faf6 = cold | f1e0b5 = normal | efd275 = warm color_command = light.light_control.set_color_temp(250) api(color_command) # Get all blinds blinds = [dev for dev in devices if dev.has_blind_control] # Print all blinds print(blinds) if blinds: blind = blinds[0] else: print("No blinds found!") blind = None if blind: blind_command = blinds[0].blind_control.set_state(50) api(blind_command) tasks_command = gateway.get_smart_tasks() tasks_commands = api(tasks_command) tasks = api(tasks_commands) # Example 6: Return the transition time (in minutes) for task#1 if tasks: print(tasks[0].task_control.tasks[0].transition_time) # Example 7: Set the dimmer stop value to 30 for light#1 in task#1 dim_command_2 = tasks[0].start_action.devices[0].item_controller.set_dimmer(30) api(dim_command_2) if light: print("Sleeping for 2 min to listen for more observation events") print( "Try altering the light (%s) in the app, and watch the events!" % light.name ) time.sleep(120)