Skip to main content

Python client for interacting with Winix air purifier devices via the Winix IoT API. Provides authentication, device management, and control.

Project description

winix-api

PyPI downloads

Credit: Ported from regaw-leinad/winix-api.

This library provides a Python client for interacting with Winix devices. It includes classes for authenticating with the Winix API (WinixAuth), managing a user account (WinixAccount), as well as interacting with Winix devices (WinixAPI).

Requirements

Installation

Install via pip (recommended to use a virtual environment):

pip install winix-api

Or clone and install locally:

git clone https://github.com/yourusername/winix-api.git
cd winix-api
pip install .

Usage

Authentication

The WinixAuth class is used for authenticating with the Winix API. You can use it to log in with a username and password, or to refresh an existing session.

from winix_api.winix_auth import WinixAuth

# Log in with a username and password
auth = WinixAuth.login('<username>', '<password>')

# Refresh an existing session
refreshed_auth = WinixAuth.refresh('<refresh_token>', '<user_id>')

Managing a User Account

The WinixAccount class is used for managing a user account. You can use it to get a list of devices associated with the account.

from winix_api.winix_account import WinixAccount

# Create a WinixAccount from credentials
account = WinixAccount.from_credentials('<username>', '<password>')

# Create a WinixAccount from existing auth credentials
account2 = WinixAccount.from_refresh_token('<username>', '<refresh_token>', '<user_id>')

# Get a list of devices associated with the account
devices = account.devices
for device in devices:
        print(device.__dict__)

Interacting with a Device

from winix_api.winix_api import WinixAPI
from winix_api.winix_types import Power, Mode, Airflow, AirQuality, Plasmawave

# Assume this is defined throughout the examples
device_id = '<your_device_id>'

Get and set the Power state

power = WinixAPI.get_power(account, device_id)
print('off?:', power == Power.Off)

# Set power on
WinixAPI.set_power(account, device_id, Power.On)

Get and set the Mode

mode = WinixAPI.get_mode(account, device_id)
print('manual?:', mode == Mode.Manual)

# Set to auto
WinixAPI.set_mode(account, device_id, Mode.Auto)

Get and set the Airflow speed

airflow = WinixAPI.get_airflow(account, device_id)
print('turbo?:', airflow == Airflow.Turbo)

# Set to low
WinixAPI.set_airflow(account, device_id, Airflow.Low)

Get the Air Quality

air_quality = WinixAPI.get_air_quality(account, device_id)
print('quality:', air_quality)

Get and set the Plasmawave state

plasma = WinixAPI.get_plasmawave(account, device_id)
print('plasmawave on?:', plasma == Plasmawave.On)

# Set to off
WinixAPI.set_plasmawave(account, device_id, Plasmawave.Off)

Get the Ambient Light

ambient_light = WinixAPI.get_ambient_light(account, device_id)
print('ambientLight:', ambient_light)

Get the Filter Hours

filter_hours = WinixAPI.get_filter_hours(account, device_id)
print('filterHours:', filter_hours)

Error Handling

API errors are raised as exceptions with descriptive messages. You can also use helper functions:

from winix_api.errors import is_response_error, get_error_message

if is_response_error('no data'):
        print(get_error_message('no data'))

Development & Testing

  • Run tests:
    make test
    
  • View coverage:
    make coverage
    
  • Clean build/test artifacts:
    make clean
    

License

MIT

Disclaimer

This project is not affiliated with or endorsed by Winix. Use at your own risk.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

winix_api-0.1.1.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

winix_api-0.1.1-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file winix_api-0.1.1.tar.gz.

File metadata

  • Download URL: winix_api-0.1.1.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for winix_api-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3b70776c513f100b235bc96b378a70bf426f25089596470cce1b5f345961a8fd
MD5 6a934c7acf08702f7b63d00ddc41117b
BLAKE2b-256 6b4260ecd481f4791e20f44baeab60b613b8212daee6a833dd7f5bcf6d427854

See more details on using hashes here.

File details

Details for the file winix_api-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: winix_api-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for winix_api-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 551ff70d58a3f1f62a9c75180523d908ce5f4a5f617a0bf8be88e840a023efcb
MD5 68d8e496e504dc6e70439b4f34a092f7
BLAKE2b-256 fe7d08205f96f990fc91ef44f43906f6f46a5450608f5aa48d89803c0bc76e96

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page