Metadata-Version: 2.3
Name: python-hue-v2
Version: 2.1.0
Summary: A python library to control the Philips Hue lighting system.
Project-URL: Documentation, https://github.com/FengChendian/python-hue-v2#readme
Project-URL: Issues, https://github.com/FengChendian/python-hue-v2/issues
Project-URL: Source, https://github.com/FengChendian/python-hue-v2
Author-email: Yichen Zhao <njuzhaoyichen@gmail.com>
License: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.8
Requires-Dist: requests>=2.30.0
Requires-Dist: zeroconf>=0.62.0
Description-Content-Type: text/markdown

# Python Hue V2

Python library to control the Philips Hue lighting system
for [Hue-V2](https://developers.meethue.com/develop/hue-api-v2/api-reference/) API.

## Features

- Design for Hue API 2.0

## High Level Control

### Simple Example

```python
import time
from python_hue_v2 import Hue, BridgeFinder

finder = BridgeFinder()
time.sleep(1)  # wait for search
# Get server by mdns
host_name = finder.get_bridge_server_lists()[0]  # Here we use first Hue Bridge

# or hue = Hue('ip address','app-key')
hue = Hue(host_name, 'hue app key')  # create Hue instance

# If you don't have hue-app-key, press the button and call bridge.connect() (this only needs to be run a single time)
# hue = Hue(host_name)
# app_key = hue.bridge.connect() # you can get app_key and storage on disk

lights = hue.lights

for light in lights:
    print(light.on)
    light.on = True
    light.brightness = 80.0
```

### Scenes

You can get scenes from hue bridge.

```python
from python_hue_v2 import Hue

hue = Hue('bridge-ip', 'app-key')

scenes = hue.scenes
for scene in scenes:
    print(scene.id)
    print(scene.data_dict)
```

Recall scene using `active`, `dynamic_palette`, `static`.

```python
scene = scenes[0]
scene.recall(action='active')
```

If you want create one scene with light actions in a room:

```python
from python_hue_v2.scene import ActionPost, ScenePost

light_id = []
lights = hue.lights
for light in lights:
    light_id.append(light.light_id)

actions = []
for rid in light_id:
    actions.append(
        ActionPost.create_by_parameters(
            target_rid=rid,
            target_rtype='light',
            on=True,
            brightness=50,
            color_xy=(0.1, 0.3)  # xy color tuple
            # mirek=200 % or use mirek
        )
    )

# Get all rooms, may be empty
rooms = hue.rooms

# ScenePost should have a group property, here we bind with a room

# refer to https://developers.meethue.com/develop/hue-api-v2/api-reference/#resource_scene_post
# Group associated with this Scene. All services in the group are part of this scene. 
# If the group is changed the scene is update (e.g. light added/removed)
scene_post: ScenePost = ScenePost.create_by_parameters(
    actions=actions, name='test', group_rid=rooms[0].id, group_rtype="room"
)
hue.create_scene(scene_post)
```

Also, you can delete scene by id.

```python
hue.delete_scene('scene-id-example')
```

### Grouped Light

Get group Lights from hue.

```python
from python_hue_v2 import Hue

hue = Hue('bridge-ip', 'app-key')
grouped_lights = hue.grouped_lights

for group in grouped_lights:
    print(group.type)
    # group.on = True
    group.set_state(True, 100, None) 
    group.set_state(on=True, brightness=100, duration_ms=1) # Feature in version 2.0.1
    
```

## Low Level Control

> Low level function may be changed when update

You can use some basic functions in this library. 

For example, you can use `get_lights`,`set_light` or other low level control functions to implement
some custom functions.

```python
import time
from python_hue_v2 import Hue

# or hue = Hue('ip address','app-key')
hue = Hue('host_name', 'hue app key')  # create Hue instance
bridge = hue.bridge

bridge.get_lights()
bridge.set_light('id', light_property_name='on', property_value={'on': True})

bridge.get_zones()
```

## Attention

Some API may be de deprecated When major version updates.

- Grouped light API will be changed after version `2.0.0`

## TODO

- Zones Control Class
