flairaio


Nameflairaio JSON
Version 0.2.0 PyPI version JSON
download
home_pagehttps://github.com/RobertD502/flairaio
SummaryAsynchronous Python library for Flair's API
upload_time2024-06-08 22:19:31
maintainerNone
docs_urlNone
authorRobert Drinovac
requires_python>=3.7
licenseNone
keywords flair flair systems flair api flair api oauth2 flair client flair vent flair puck flair bridge
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Flairaio

Asynchronous Python library for Flair's API using **OAuth 2.0 Authentication**.

This package provides an API client for the [Flair API](https://documenter.getpostman.com/view/5353571/TzsbKTAG#intro) 
to be used with **OAuth 2.0** credentials generated by Flair. For API access, please [contact Flair Support](https://support.flair.co/hc/en-us/requests/new)
with the email address associated with your registered Flair account.

## Installation

### PyPI
```
pip3 install flairaio
```


This package depends on [aiohttp](https://docs.aiohttp.org/en/stable/) and requires `Python 3.7` or greater.

## Usage

### Creating Client

```python
import asyncio
from flairaio import FlairClient
from aiohttp import ClientSession

async def main():
    async with ClientSession() as session:
    
        # Create a client using OAuth 2.0 client_id and client_secret
        client = FlairClient('client_id', 'client_secret', session)
        

        ###################################################################################
        Examples within the examples section utilize the FlairClient instance created above
        ###################################################################################

        
        
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
```

## Examples
  
### Retrieving objects of interest
___
###

<details>
  <summary> <b>Users</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# See model.py for details regarding "Users" and "User" Data Classes


# Retrieve all users.
users = await client.get_users()

# Retrieve a specific user. Note: user_id is the specific user's ID as a string.
user = await client.get_user(user_id='1')


```
</details>

&nbsp;

<details>
  <summary> <b>Structures</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# See model.py for details regarding "Structures" and "Structure" Data Classes


# Retrieve all structures.
structures = await client.get_structures()

# Retrieve a specific structure. Note: structure_id is the specific structure's ID as a string.
structure = await client.get_structure(structure_id='1')

```
</details>

&nbsp;

<details>
  <summary> <b>Rooms</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# See model.py for details regarding "Rooms" and "Room" Data Classes


# Retrieve all rooms.
rooms = await client.get_rooms()

# Retrieve a specific room. Note: room_id is the specific room's ID as a string.
room = await client.get_room(room_id='1')

```
</details>

&nbsp;

<details>
  <summary> <b>Pucks</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# See model.py for details regarding "Pucks" and "Puck" Data Classes


# Retrieve all pucks.
pucks = await client.get_pucks()

# Retrieve a specific puck. Note: puck_id is the specific puck's ID as a string.
puck = await client.get_puck(puck_id='1')



```
</details>

&nbsp;

<details>
  <summary> <b>Vents</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# See model.py for details regarding "Vents" and "Vent" Data Classes


# Retrieve all vents.
vents = await client.get_vents()

# Retrieve a specific vent. Note: vent_id is the specific vent's ID as a string.
vent = await client.get_vent(vent_id='1')



```
</details>

&nbsp;

<details>
  <summary> <b>Bridges</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# See model.py for details regarding "Bridges" and "Bridge" Data Classes


# Retrieve all bridges.
bridges = await client.get_bridges()

# Retrieve a specific bridge. Note: bridge_id is the specific bridge's ID as a string.
bridge = await client.get_bridge(bridge_id='1')



```
</details>

&nbsp;

<details>
  <summary> <b>Thermostats</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# See model.py for details regarding "Thermostats" and "Thermostat" Data Classes


# Retrieve all thermostats.
thermostats = await client.get_thermostats()

# Retrieve a specific thermostat. Note: thermostat_id is the specific thermostat's ID as a string.
thermostat = await client.get_thermostat(thermostat_id='1')



```
</details>

&nbsp;

<details>
  <summary> <b>HVAC Units</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# See model.py for details regarding "HVACUnits" and "HVACUnit" Data Classes


# Retrieve all HVAC units.
hvac_units = await client.get_hvac_units()

# Retrieve a specific HVAC unit. Note: hvac_id is the specific HVAC unit's ID as a string.
hvac_unit = await client.get_hvac_unit(hvac_id='1')



```
</details>

&nbsp;

<details>
  <summary> <b>Zones</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# See model.py for details regarding "Zones" and "Zone" Data Classes


# Retrieve all zones.
zones = await client.get_zones()

# Retrieve a specific zone. Note: zone_id is the specific zone's ID as a string.
zone = await client.get_zone(zone_id='1')



```
</details>

&nbsp;

<details>
  <summary> <b>Getting all Flair Data</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# See model.py for details regarding "FlairData" Data Class

# The resulting FlairData instance will contain an instance of "Users" and an instance of "Structures" which 
# contains instances of "Structure" created for every structure associated with your account. Within each Structure,
# you will find its id, attributes, relationships, as well as all rooms, pucks, vents, thermostats, HVAC units, and zones
# associated with said structure - each of these also contains their id, attributes, and relationships. As a bonus, the
# get_flair_data method also fetches the current reading endpoints for pucks and vents.


# Retrieve all flair data.
flair_data = await client.get_flair_data()



```
</details>

&nbsp;

### Retrieving Related Items
___

#### *** See Related Endpoints for available related links.
###

<details>
  <summary> <b>Getting related data</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# You need to create an instance of the object of interest prior to retrieving its related item(s).


# Create a Puck instance for a specific puck. Note: puck_id is the specific puck's ID as a string.
puck = await client.get_puck(puck_id='1')

# Retrieve "current-reading" for puck
current_reading = await client.get_related(flair_object=puck, related_type='current_reading')



```
</details>

&nbsp;

### Creating
___

###

<details>
  <summary> <b>Creating New Room</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# Content of attributes and relationships dictionaries will depend on what is being created.


# Create attributes dictionary for new room.
attributes = {
    "name": "My New Flair Room"
}

# Creat new room "My New Flair Room"
await client.create(resource_type='rooms', attributes=attributes, relationships={})



```
</details>

&nbsp;

### Deleting
___

###

<details>
  <summary> <b>Deleting Room</b> (<i>click to expand</i>)</summary>
  <!---->

```python

# Deleting a room with an id of '1234'
await client.delete(resource_type='rooms', item_id='1234')

```
</details>

&nbsp;

### Updating
___

###

<details>
  <summary> <b>Opening Vent</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# Content of attributes and relationships dictionaries will depend on what is being updated.
# The example below is fully opening a specific Flair vent


# create attributes dictionary
attributes = {
    "percent-open": 100
}

# Fully open the vent
await client.update(resource_type='vents', item_id='1', attributes=attributes, relationships={})


```
</details>

&nbsp;

<details>
  <summary> <b>Setting Bridge LED Brightness</b> (<i>click to expand</i>)</summary>
  <!---->

```python
# Content of attributes and relationships dictionaries will depend on what is being updated.
# The example below is setting the LED brightness for a specific Flair Bridge.
# Note: Flair Bridge LED brightness accepts an int between, and including, 20-100


# create attributes dictionary
attributes = {
    "led-brightness": 50
}

# Set LED brightness
await client.update(resource_type='bridges', item_id='1', attributes=attributes, relationships={})


```
</details>

&nbsp;

<details>
  <summary> <b>Setting HVAC Unit Mode</b> (<i>click to expand</i>)</summary>
  <!---->

### Note:
#### * If structure is set to Manual mode: HVAC mode, temp, swing, and fan speed can only be set when the unit is powered on.

#### * If structure is set to Auto mode: Only swing and fan speed can be set.

#### * Fan speed: if structure is set to Manual mode, changing fan speed requires updating the attribute `"fan-speed"`. Changing fan speed with structure in Auto mode requires updating the attribute `"default-fan-speed"`.

#### * Swing: If structure is set to Manual mode, changing swing requires updating the attribute `"swing"`. Changing swing with structure in Auto mode requires updating the attribute `"swing-auto"`.
#
```python
# Content of attributes and relationships dictionaries will depend on what is being updated.
# The example below is setting the HVAC Unit mode to Cool.


# create attributes dictionary
attributes = {
    "mode": 'Cool'
}

# Update HVAC unit's mode to Cool
await client.update(resource_type='hvac-units', item_id='1', attributes=attributes, relationships={})


```
</details>

&nbsp;

## Available Related Endpoints


<div align="center">
<table>
  <tbody>
    <tr>
      <th>Resource Type</th>
      <th align="center">Related</th>
    </tr>
       <tr>
      <td align="center">Bridge</td>
      <td>
        <ul>
          <li>structure</li>
          <li>current-state</li>
          <li>hardware-version</li>
          <li>current-reading</li>
          <li>room</li>
          <li>sensor-readings</li>
          <li>bridge-states</li>
        </ul>
    </tr>
       <tr>
      <td align="center">HVAC Unit</td>
      <td>
        <ul>
          <li>puck</li>
          <li>current-state</li>
          <li>hvac-unit-states</li>
          <li>structure</li>
          <li>zone</li>
          <li>plug</li>
          <li>integration-structure</li>
          <li>make</li>
          <li>room</li>
        </ul>
    </tr>
    <tr>
      <td align="center">Puck</td>
      <td>
        <ul>
          <li>room</li>
          <li>hardware-version</li>
          <li>hvac-units</li>
          <li>puck-states</li>
          <li>closest-vents</li>
          <li>beacon-sightings</li>
          <li>current-reading</li>
          <li>structure</li>
          <li>sensor-readings</li>
          <li>current-state</li>
        </ul>
    </tr>
       <tr>
      <td align="center">Room</td>
      <td>
        <ul>
          <li>remote-sensors</li>
          <li>thermostat</li>
          <li>structure</li>
          <li>occupants</li>
          <li>pucks</li>
          <li>vents</li>
          <li>hvac-units</li>
          <li>room-states</li>
          <li>bridges</li>
          <li>current-conclusions</li>
          <li>puck-apps</li>
          <li>zones</li>
          <li>plugs</li>
          <li>occupancy-conclusions</li>
          <li>room-auto-conclusions</li>
        </ul>
    </tr>
    <tr>
      <td align="center">Structure</td>
      <td>
        <ul>
          <li>admin-users</li>
          <li>release-approvals</li>
          <li>default-zone</li>
          <li>remote-sensors</li>
          <li>schedules</li>
          <li>hvac-units</li>
          <li>demand-response-program-enrollments</li>
          <li>weather-readings</li>
          <li>hvac-unit-groups</li>
          <li>beacon-sightings</li>
          <li>plugs</li>
          <li>alerts</li>
          <li>structure-states</li>
          <li>current-conclusions</li>
          <li>rooms</li>
          <li>geofence-events</li>
          <li>pucks</li>
          <li>releases</li>
          <li>bridges</li>
          <li>licenses</li>
          <li>occupancy-conclusions</li>
          <li>thermostats</li>
          <li>integration-structures</li>
          <li>viewer-users</li>
          <li>supported-device-brands</li>
          <li>geofences</li>
          <li>current-weather</li>
          <li>active-schedule</li>
          <li>current-state</li>
          <li>ui-notifications</li>
          <li>zones</li>
          <li>invitations</li>
          <li>vents</li>
          <li>plug-invites</li>
          <li>editor-users</li>
          <li>devices</li>
          <li>puck-oauth-apps</li>
        </ul>
    </tr>
       <tr>
      <td align="center">Thermostat</td>
      <td>
        <ul>
          <li>current-state</li>
          <li>integration-structure</li>
          <li>zone</li>
          <li>remote-sensor</li>
          <li>thermostat-states</li>
          <li>structure</li>
          <li>room</li>
        </ul>
    </tr>
    <tr>
      <td align="center">User</td>
      <td>
        <ul>
          <li>networks</li>
          <li>unfinished-setup-structure</li>
          <li>integrations</li>
          <li>ui-notifications</li>
          <li>accessible-structures</li>
          <li>editable-structures</li>
          <li>received-invitations</li>
          <li>default-structure</li>
          <li>primary-device</li>
          <li>structures</li>
          <li>adminable-structures</li>
          <li>viewable-structures</li>
          <li>devices</li>
          <li>puck-oauth-apps</li>
        </ul>
    </tr>
       <tr>
      <td align="center">Vent</td>
      <td>
        <ul>
          <li>current-reading</li>
          <li>current-state</li>
          <li>sensor-readings</li>
          <li>closest-puck</li>
          <li>room</li>
          <li>vent-states</li>
          <li>structure</li>
        </ul>
    </tr>
       <tr>
      <td align="center">Zone</td>
      <td>
        <ul>
          <li>rooms</li>
          <li>zone-auto-conclusions</li>
          <li>structure</li>
          <li>thermostat</li>
          <li>hvac-unit</li>
        </ul>
    </tr>
  </tbody>
</table>
</div>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/RobertD502/flairaio",
    "name": "flairaio",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "flair, flair systems, flair api, flair api oauth2, flair client, flair vent, flair puck, flair bridge",
    "author": "Robert Drinovac",
    "author_email": "unlisted@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/24/7c/f1d5db1abaedef7910765cdf733b12d553a8ebff71aaca28016feba44438/flairaio-0.2.0.tar.gz",
    "platform": null,
    "description": "# Flairaio\n\nAsynchronous Python library for Flair's API using **OAuth 2.0 Authentication**.\n\nThis package provides an API client for the [Flair API](https://documenter.getpostman.com/view/5353571/TzsbKTAG#intro) \nto be used with **OAuth 2.0** credentials generated by Flair. For API access, please [contact Flair Support](https://support.flair.co/hc/en-us/requests/new)\nwith the email address associated with your registered Flair account.\n\n## Installation\n\n### PyPI\n```\npip3 install flairaio\n```\n\n\nThis package depends on [aiohttp](https://docs.aiohttp.org/en/stable/) and requires `Python 3.7` or greater.\n\n## Usage\n\n### Creating Client\n\n```python\nimport asyncio\nfrom flairaio import FlairClient\nfrom aiohttp import ClientSession\n\nasync def main():\n    async with ClientSession() as session:\n    \n        # Create a client using OAuth 2.0 client_id and client_secret\n        client = FlairClient('client_id', 'client_secret', session)\n        \n\n        ###################################################################################\n        Examples within the examples section utilize the FlairClient instance created above\n        ###################################################################################\n\n        \n        \nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n```\n\n## Examples\n&nbsp; \n### Retrieving objects of interest\n___\n###\n\n<details>\n  <summary> <b>Users</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# See model.py for details regarding \"Users\" and \"User\" Data Classes\n\n\n# Retrieve all users.\nusers = await client.get_users()\n\n# Retrieve a specific user. Note: user_id is the specific user's ID as a string.\nuser = await client.get_user(user_id='1')\n\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>Structures</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# See model.py for details regarding \"Structures\" and \"Structure\" Data Classes\n\n\n# Retrieve all structures.\nstructures = await client.get_structures()\n\n# Retrieve a specific structure. Note: structure_id is the specific structure's ID as a string.\nstructure = await client.get_structure(structure_id='1')\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>Rooms</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# See model.py for details regarding \"Rooms\" and \"Room\" Data Classes\n\n\n# Retrieve all rooms.\nrooms = await client.get_rooms()\n\n# Retrieve a specific room. Note: room_id is the specific room's ID as a string.\nroom = await client.get_room(room_id='1')\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>Pucks</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# See model.py for details regarding \"Pucks\" and \"Puck\" Data Classes\n\n\n# Retrieve all pucks.\npucks = await client.get_pucks()\n\n# Retrieve a specific puck. Note: puck_id is the specific puck's ID as a string.\npuck = await client.get_puck(puck_id='1')\n\n\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>Vents</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# See model.py for details regarding \"Vents\" and \"Vent\" Data Classes\n\n\n# Retrieve all vents.\nvents = await client.get_vents()\n\n# Retrieve a specific vent. Note: vent_id is the specific vent's ID as a string.\nvent = await client.get_vent(vent_id='1')\n\n\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>Bridges</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# See model.py for details regarding \"Bridges\" and \"Bridge\" Data Classes\n\n\n# Retrieve all bridges.\nbridges = await client.get_bridges()\n\n# Retrieve a specific bridge. Note: bridge_id is the specific bridge's ID as a string.\nbridge = await client.get_bridge(bridge_id='1')\n\n\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>Thermostats</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# See model.py for details regarding \"Thermostats\" and \"Thermostat\" Data Classes\n\n\n# Retrieve all thermostats.\nthermostats = await client.get_thermostats()\n\n# Retrieve a specific thermostat. Note: thermostat_id is the specific thermostat's ID as a string.\nthermostat = await client.get_thermostat(thermostat_id='1')\n\n\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>HVAC Units</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# See model.py for details regarding \"HVACUnits\" and \"HVACUnit\" Data Classes\n\n\n# Retrieve all HVAC units.\nhvac_units = await client.get_hvac_units()\n\n# Retrieve a specific HVAC unit. Note: hvac_id is the specific HVAC unit's ID as a string.\nhvac_unit = await client.get_hvac_unit(hvac_id='1')\n\n\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>Zones</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# See model.py for details regarding \"Zones\" and \"Zone\" Data Classes\n\n\n# Retrieve all zones.\nzones = await client.get_zones()\n\n# Retrieve a specific zone. Note: zone_id is the specific zone's ID as a string.\nzone = await client.get_zone(zone_id='1')\n\n\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>Getting all Flair Data</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# See model.py for details regarding \"FlairData\" Data Class\n\n# The resulting FlairData instance will contain an instance of \"Users\" and an instance of \"Structures\" which \n# contains instances of \"Structure\" created for every structure associated with your account. Within each Structure,\n# you will find its id, attributes, relationships, as well as all rooms, pucks, vents, thermostats, HVAC units, and zones\n# associated with said structure - each of these also contains their id, attributes, and relationships. As a bonus, the\n# get_flair_data method also fetches the current reading endpoints for pucks and vents.\n\n\n# Retrieve all flair data.\nflair_data = await client.get_flair_data()\n\n\n\n```\n</details>\n\n&nbsp;\n\n### Retrieving Related Items\n___\n\n#### *** See Related Endpoints for available related links.\n###\n\n<details>\n  <summary> <b>Getting related data</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# You need to create an instance of the object of interest prior to retrieving its related item(s).\n\n\n# Create a Puck instance for a specific puck. Note: puck_id is the specific puck's ID as a string.\npuck = await client.get_puck(puck_id='1')\n\n# Retrieve \"current-reading\" for puck\ncurrent_reading = await client.get_related(flair_object=puck, related_type='current_reading')\n\n\n\n```\n</details>\n\n&nbsp;\n\n### Creating\n___\n\n###\n\n<details>\n  <summary> <b>Creating New Room</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# Content of attributes and relationships dictionaries will depend on what is being created.\n\n\n# Create attributes dictionary for new room.\nattributes = {\n    \"name\": \"My New Flair Room\"\n}\n\n# Creat new room \"My New Flair Room\"\nawait client.create(resource_type='rooms', attributes=attributes, relationships={})\n\n\n\n```\n</details>\n\n&nbsp;\n\n### Deleting\n___\n\n###\n\n<details>\n  <summary> <b>Deleting Room</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n\n# Deleting a room with an id of '1234'\nawait client.delete(resource_type='rooms', item_id='1234')\n\n```\n</details>\n\n&nbsp;\n\n### Updating\n___\n\n###\n\n<details>\n  <summary> <b>Opening Vent</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# Content of attributes and relationships dictionaries will depend on what is being updated.\n# The example below is fully opening a specific Flair vent\n\n\n# create attributes dictionary\nattributes = {\n    \"percent-open\": 100\n}\n\n# Fully open the vent\nawait client.update(resource_type='vents', item_id='1', attributes=attributes, relationships={})\n\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>Setting Bridge LED Brightness</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n```python\n# Content of attributes and relationships dictionaries will depend on what is being updated.\n# The example below is setting the LED brightness for a specific Flair Bridge.\n# Note: Flair Bridge LED brightness accepts an int between, and including, 20-100\n\n\n# create attributes dictionary\nattributes = {\n    \"led-brightness\": 50\n}\n\n# Set LED brightness\nawait client.update(resource_type='bridges', item_id='1', attributes=attributes, relationships={})\n\n\n```\n</details>\n\n&nbsp;\n\n<details>\n  <summary> <b>Setting HVAC Unit Mode</b> (<i>click to expand</i>)</summary>\n  <!---->\n\n### Note:\n#### * If structure is set to Manual mode: HVAC mode, temp, swing, and fan speed can only be set when the unit is powered on.\n\n#### * If structure is set to Auto mode: Only swing and fan speed can be set.\n\n#### * Fan speed: if structure is set to Manual mode, changing fan speed requires updating the attribute `\"fan-speed\"`. Changing fan speed with structure in Auto mode requires updating the attribute `\"default-fan-speed\"`.\n\n#### * Swing: If structure is set to Manual mode, changing swing requires updating the attribute `\"swing\"`. Changing swing with structure in Auto mode requires updating the attribute `\"swing-auto\"`.\n#\n```python\n# Content of attributes and relationships dictionaries will depend on what is being updated.\n# The example below is setting the HVAC Unit mode to Cool.\n\n\n# create attributes dictionary\nattributes = {\n    \"mode\": 'Cool'\n}\n\n# Update HVAC unit's mode to Cool\nawait client.update(resource_type='hvac-units', item_id='1', attributes=attributes, relationships={})\n\n\n```\n</details>\n\n&nbsp;\n\n## Available Related Endpoints\n\n\n<div align=\"center\">\n<table>\n  <tbody>\n    <tr>\n      <th>Resource Type</th>\n      <th align=\"center\">Related</th>\n    </tr>\n       <tr>\n      <td align=\"center\">Bridge</td>\n      <td>\n        <ul>\n          <li>structure</li>\n          <li>current-state</li>\n          <li>hardware-version</li>\n          <li>current-reading</li>\n          <li>room</li>\n          <li>sensor-readings</li>\n          <li>bridge-states</li>\n        </ul>\n    </tr>\n       <tr>\n      <td align=\"center\">HVAC Unit</td>\n      <td>\n        <ul>\n          <li>puck</li>\n          <li>current-state</li>\n          <li>hvac-unit-states</li>\n          <li>structure</li>\n          <li>zone</li>\n          <li>plug</li>\n          <li>integration-structure</li>\n          <li>make</li>\n          <li>room</li>\n        </ul>\n    </tr>\n    <tr>\n      <td align=\"center\">Puck</td>\n      <td>\n        <ul>\n          <li>room</li>\n          <li>hardware-version</li>\n          <li>hvac-units</li>\n          <li>puck-states</li>\n          <li>closest-vents</li>\n          <li>beacon-sightings</li>\n          <li>current-reading</li>\n          <li>structure</li>\n          <li>sensor-readings</li>\n          <li>current-state</li>\n        </ul>\n    </tr>\n       <tr>\n      <td align=\"center\">Room</td>\n      <td>\n        <ul>\n          <li>remote-sensors</li>\n          <li>thermostat</li>\n          <li>structure</li>\n          <li>occupants</li>\n          <li>pucks</li>\n          <li>vents</li>\n          <li>hvac-units</li>\n          <li>room-states</li>\n          <li>bridges</li>\n          <li>current-conclusions</li>\n          <li>puck-apps</li>\n          <li>zones</li>\n          <li>plugs</li>\n          <li>occupancy-conclusions</li>\n          <li>room-auto-conclusions</li>\n        </ul>\n    </tr>\n    <tr>\n      <td align=\"center\">Structure</td>\n      <td>\n        <ul>\n          <li>admin-users</li>\n          <li>release-approvals</li>\n          <li>default-zone</li>\n          <li>remote-sensors</li>\n          <li>schedules</li>\n          <li>hvac-units</li>\n          <li>demand-response-program-enrollments</li>\n          <li>weather-readings</li>\n          <li>hvac-unit-groups</li>\n          <li>beacon-sightings</li>\n          <li>plugs</li>\n          <li>alerts</li>\n          <li>structure-states</li>\n          <li>current-conclusions</li>\n          <li>rooms</li>\n          <li>geofence-events</li>\n          <li>pucks</li>\n          <li>releases</li>\n          <li>bridges</li>\n          <li>licenses</li>\n          <li>occupancy-conclusions</li>\n          <li>thermostats</li>\n          <li>integration-structures</li>\n          <li>viewer-users</li>\n          <li>supported-device-brands</li>\n          <li>geofences</li>\n          <li>current-weather</li>\n          <li>active-schedule</li>\n          <li>current-state</li>\n          <li>ui-notifications</li>\n          <li>zones</li>\n          <li>invitations</li>\n          <li>vents</li>\n          <li>plug-invites</li>\n          <li>editor-users</li>\n          <li>devices</li>\n          <li>puck-oauth-apps</li>\n        </ul>\n    </tr>\n       <tr>\n      <td align=\"center\">Thermostat</td>\n      <td>\n        <ul>\n          <li>current-state</li>\n          <li>integration-structure</li>\n          <li>zone</li>\n          <li>remote-sensor</li>\n          <li>thermostat-states</li>\n          <li>structure</li>\n          <li>room</li>\n        </ul>\n    </tr>\n    <tr>\n      <td align=\"center\">User</td>\n      <td>\n        <ul>\n          <li>networks</li>\n          <li>unfinished-setup-structure</li>\n          <li>integrations</li>\n          <li>ui-notifications</li>\n          <li>accessible-structures</li>\n          <li>editable-structures</li>\n          <li>received-invitations</li>\n          <li>default-structure</li>\n          <li>primary-device</li>\n          <li>structures</li>\n          <li>adminable-structures</li>\n          <li>viewable-structures</li>\n          <li>devices</li>\n          <li>puck-oauth-apps</li>\n        </ul>\n    </tr>\n       <tr>\n      <td align=\"center\">Vent</td>\n      <td>\n        <ul>\n          <li>current-reading</li>\n          <li>current-state</li>\n          <li>sensor-readings</li>\n          <li>closest-puck</li>\n          <li>room</li>\n          <li>vent-states</li>\n          <li>structure</li>\n        </ul>\n    </tr>\n       <tr>\n      <td align=\"center\">Zone</td>\n      <td>\n        <ul>\n          <li>rooms</li>\n          <li>zone-auto-conclusions</li>\n          <li>structure</li>\n          <li>thermostat</li>\n          <li>hvac-unit</li>\n        </ul>\n    </tr>\n  </tbody>\n</table>\n</div>\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Asynchronous Python library for Flair's API",
    "version": "0.2.0",
    "project_urls": {
        "Bug Reports": "https://github.com/RobertD502/flairaio/issues",
        "Homepage": "https://github.com/RobertD502/flairaio",
        "Source": "https://github.com/RobertD502/flairaio/"
    },
    "split_keywords": [
        "flair",
        " flair systems",
        " flair api",
        " flair api oauth2",
        " flair client",
        " flair vent",
        " flair puck",
        " flair bridge"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "247cf1d5db1abaedef7910765cdf733b12d553a8ebff71aaca28016feba44438",
                "md5": "1af27fbd2aa22be4b78fb9f9bd7cad9c",
                "sha256": "c0bec9790e8d965e8f70d92e00f31e207a23f4d86ed1c65dd09575bd3a73ecc6"
            },
            "downloads": -1,
            "filename": "flairaio-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "1af27fbd2aa22be4b78fb9f9bd7cad9c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 14343,
            "upload_time": "2024-06-08T22:19:31",
            "upload_time_iso_8601": "2024-06-08T22:19:31.547752Z",
            "url": "https://files.pythonhosted.org/packages/24/7c/f1d5db1abaedef7910765cdf733b12d553a8ebff71aaca28016feba44438/flairaio-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-08 22:19:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "RobertD502",
    "github_project": "flairaio",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "flairaio"
}
        
Elapsed time: 0.94216s