Giter VIP home page Giter VIP logo

pyzerproc's Introduction

pyzerproc

Async library to control Zerproc Bluetooth LED smart string lights

  • Free software: Apache Software License 2.0

Features

  • Discover nearby devices
  • Turn lights on and off
  • Set light color
  • Get light status

Command line usage

pyzerproc ships with a command line tool that exposes the features of the library.

$ pyzerproc discover
INFO:pyzerproc.discovery:Starting scan for local devices
INFO:pyzerproc.discovery:Discovered AA:BB:CC:00:11:22: LEDBlue-CC001122
INFO:pyzerproc.discovery:Discovered AA:BB:CC:33:44:55: LEDBlue-CC334455
INFO:pyzerproc.discovery:Scan complete
AA:BB:CC:00:11:22
AA:BB:CC:33:44:55

$ pyzerproc turn-on AA:BB:CC:00:11:22
INFO:pyzerproc.light:Connecting to AA:BB:CC:00:11:22
INFO:pyzerproc.light:Turning on AA:BB:CC:00:11:22

$ pyzerproc turn-off AA:BB:CC:00:11:22
INFO:pyzerproc.light:Connecting to AA:BB:CC:00:11:22
INFO:pyzerproc.light:Turning off AA:BB:CC:00:11:22

$ pyzerproc set-color AA:BB:CC:00:11:22 ff0000
INFO:pyzerproc.light:Connecting to AA:BB:CC:00:11:22
INFO:pyzerproc.light:Changing color of AA:BB:CC:00:11:22 to #ff0000

$ pyzerproc set-color AA:BB:CC:00:11:22 00ff00
INFO:pyzerproc.light:Connecting to AA:BB:CC:00:11:22
INFO:pyzerproc.light:Changing color of AA:BB:CC:00:11:22 to #00ff00

$ pyzerproc is-on AA:BB:CC:00:11:22
INFO:pyzerproc.light:Connecting to AA:BB:CC:00:11:22
INFO:pyzerproc.light:Got state of AA:BB:CC:00:11:22: <LightState is_on='True' color='(255, 0, 0)'>
True

$ pyzerproc get-color AA:BB:CC:00:11:22
INFO:pyzerproc.light:Connecting to AA:BB:CC:00:11:22
INFO:pyzerproc.light:Got state of AA:BB:CC:00:11:22: <LightState is_on='True' color='(255, 0, 0)'>
ff0000

Usage

Discover nearby devices

import asyncio
import pyzerproc


async def main():
    lights = await pyzerproc.discover(timeout=30)

    for light in lights:
        print("Address: {} Name: {}".format(light.address, light.name))

asyncio.get_event_loop().run_until_complete(main())

Turn a light on and off

import asyncio
import pyzerproc


async def main():
    address = "AA:BB:CC:00:11:22"

    light = pyzerproc.Light(address)

    try:
        await light.connect()
        await light.turn_on()

        await asyncio.sleep(5)

        await light.turn_off()
    finally:
        await light.disconnect()

asyncio.get_event_loop().run_until_complete(main())

Change the light color

import asyncio
import pyzerproc


async def main():
    address = "AA:BB:CC:00:11:22"

    light = pyzerproc.Light(address)

    try:
        await light.connect()

        while True:
            await light.set_color(255, 0, 0) # Red
            await asyncio.sleep(1)
            await light.set_color(0, 255, 0) # Green
            await asyncio.sleep(1)
    finally:
        await light.disconnect()

asyncio.get_event_loop().run_until_complete(main())

Get the light state

import asyncio
import pyzerproc


async def main():
    address = "AA:BB:CC:00:11:22"

    light = pyzerproc.Light(address)

    try:
        await light.connect()

        state = await light.get_state()

        if state.is_on:
            print(state.color)
        else:
            print("Off")
    finally:
        await light.disconnect()

Changelog

0.4.12 (2023-04-07)

  • Fix test compatibility with bleak 0.20

0.4.11 (2022-05-03)

  • Unpin test dependencies

0.4.10 (2021-11-23)

  • Fix test compatibility with bleak 0.13

0.4.9 (2021-03-28)

0.4.8 (2021-02-12)

0.4.7 (2020-12-20)

  • Include a default timeout on all remote calls

0.4.5 (2020-12-20)

  • Wrap all exceptions from upstream code

0.4.4 (2020-12-19)

  • Timeout for is_connected and reduce extra calls

0.4.3 (2020-12-17)

  • Fix bleak dependency called in setup.py

0.4.1 (2020-12-17)

  • Wrap exceptions from is_connected

0.4.0 (2020-12-17)

  • Refactor from pygatt to bleak for async interface

0.3.0 (2020-12-03)

  • Remove thread-based auto_reconnect

0.2.5 (2020-06-24)

  • Set full brightness to 0xFF to match vendor app

0.2.4 (2020-05-09)

  • Improve RGB edge cases

0.2.3 (2020-05-09)

  • Rethrow exceptions on device subscribe

0.2.2 (2020-05-09)

  • Fix imports

0.2.1 (2020-05-09)

  • Wrap upstream exceptions

0.2.0 (2020-05-09)

  • Expose exception objects
  • Expose light address and name on discovery

0.1.1 (2020-05-08)

  • Expose auto reconnect

0.1.0 (2020-05-07)

  • Discover nearby devices

0.0.2 (2020-05-05)

  • Get the current light state

0.0.1 (2020-05-04)

  • Initial release

Credits

pyzerproc's People

Contributors

dependabot[bot] avatar emlove avatar fabaff avatar

Watchers

 avatar  avatar

Forkers

erickrawczyk

pyzerproc's Issues

Please tag the source for 0.4.7

Description

0.4.7 is not available for download from the GitHub releases because it seems that the tag is missing.

Could please add it? Thanks

Tests recently started failing in nixpkgs

  • pyzerproc version: 0.4.8
  • Python version: python3.8
  • Operating System: linux

Description

pyzeproc is packaged in nixpkgs for NixOS and Darwin, and it looks like the tests recently started failing: https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.python38Packages.pyzerproc.x86_64-linux.

Clearly the root cause must be nixpkgs bumping the version of one of the dependencies, but I don't have a lot of insight into what the failure might be from the log. I realize this may not directly be your fault at all, but if you have any insight, it would be appreciated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.