Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

220 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lightwave Smart Python Library

PyPI version Python 3.7+ License: MIT

A Python library for controlling Lightwave (https://lightwaverf.com) Smart Series (second generation) devices as well as Connect Series (first generation) devices connected to a Link Plus hub. Control and monitor lights (dimmers), power outlets (sockets), smart switches (wirefrees), PIRs, thermostats, TRVs, magnetic switches, relays, energy monitors and other device types.

Supported devices include:

Updates

Important: The LWLink2Public class has been removed as of version 1.0.0.

Installation

pip install lightwave_smart

Quick Start

import asyncio
from lightwave_smart import lightwave_smart

async def main():
    # Create and authenticate
    link = lightwave_smart.LWLink2()
    link.auth.set_auth_method(auth_method="password", username="your_email@example.com", password="your_password")
    await link.async_activate()
    
    # Get devices and feature sets
    await link.async_get_hierarchy()
    
    # List feature sets
    for featureset in link.featuresets.values():
        device = featureset.device
        print(f"{featureset.name} (ID: {featureset.featureset_id}), Device Product Code: {device.product_code}")
    
    # Control a light
    featureset_id = "your-feature-set-id"
    await link.async_turn_on_by_featureset_id(featureset_id)
    await link.async_set_brightness_by_featureset_id(featureset_id, 75)
    
    await link.async_deactivate()

asyncio.run(main())

Key Concepts

  • Devices: Physical devices (light switches, thermostats, etc.)
  • Feature Sets: Logical groupings within a device (e.g. a 2-circuit switch has 2 feature sets)

Device Control

Basic Control

# Lights/Switches
await link.async_turn_on_by_featureset_id(featureset_id)
await link.async_turn_off_by_featureset_id(featureset_id)
await link.async_set_brightness_by_featureset_id(featureset_id, 50)

# Thermostats
await link.async_set_temperature_by_featureset_id(featureset_id, 22.5)

# Covers/Blinds
await link.async_cover_open_by_featureset_id(featureset_id)
await link.async_cover_close_by_featureset_id(featureset_id)

Device Type Detection

device = link.featuresets['featureset-id'].device
print(f"Is light: {device.is_light()}")
print(f"Is climate: {device.is_climate()}")
print(f"Is switch: {device.is_switch()}")

Event Callbacks

def feature_changed(**kwargs):
    # example output for a switch:
    # {'feature': 'switch', 'feature_id': 'your-feature-set-id', 'prev_value': 0, 'new_value': 1}
    print(f"Feature changed: {kwargs}")

# Register callback
await link.async_register_feature_callback(featureset_id, feature_changed)

API Reference

Core Methods

  • async_activate() - Connect to Lightwave servers
  • async_get_hierarchy() - Get all devices and feature sets, reads and updates all features states in the background

After calling async_get_hierarchy all feature known at that time will have their states updated as they change based on events received from the websocket.

Device Control

  • async_turn_on_by_featureset_id(id) - Turn device on
  • async_turn_off_by_featureset_id(id) - Turn device off
  • async_set_brightness_by_featureset_id(id, level) - Set brightness (0-100)
  • async_set_temperature_by_featureset_id(id, temp) - Set temperature

Device Information

  • is_light(), is_climate(), is_switch(), is_cover(), is_energy() - Device type checks
  • is_gen2(), is_hub(), is_trv() - Specific device checks

Examples

  • example_readme.py - Basic synchronous usage
  • example_async.py - Advanced async usage with callbacks

Contributing

Contributions welcome! Fork, create a feature branch, commit changes, and submit a PR.

License

MIT License - see LICENSE file.

Thanks

Credit to Bryan Blunt for the original version: https://github.com/bigbadblunt/lightwave2

About

Python library to provide reliable communication with LightwaveRF Smart series (second generation) lights and switches and other Smart Home devices

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages