Skip to main content

Python library for controlling SAL Pixie BLE mesh wall switches

Project description

Pygsydust

A Python library for controlling SAL Pixie / Telink BLE mesh wall switches - fully offline, no cloud, no hub, no app dependency.

PyPI

Features

  • Full protocol implementation - login, session key derivation, AES-CCM encryption/decryption
  • Device control - on/off, LED indicator control (blue/orange/purple), find-me blink
  • Status monitoring - broadcast queries, real-time push notifications (0xDB/0xDC)
  • Cross-platform - macOS (CoreBluetooth) and Linux (BlueZ via raw HCI)
  • Home Assistant integration - see ha-pigsydust

Install

pip install pigsydust

On Linux, the process needs CAP_NET_RAW (or run as root / --privileged in Docker) for the raw HCI socket used to receive BLE notifications.

Quick Start

import asyncio
from pigsydust import PixieClient

async def main():
    client = PixieClient("AA:BB:CC:DD:EE:FF")
    await client.connect()
    await client.login("Smart Light", "12345678")

    await client.turn_on(1)

    status = await client.query_status()
    for addr, ds in status.items():
        print(f"Device {addr}: {'ON' if ds.is_on else 'OFF'}")

    await client.disconnect()

asyncio.run(main())

API

Method Description
connect() Establish BLE connection (scans on macOS, direct on Linux)
login(name, password) Authenticate with the mesh
turn_on(addr) / turn_off(addr) Control a device, group, or broadcast (0xFFFF)
query_status() Poll all devices and return dict[int, DeviceStatus]
set_led_blue(addr, on) Toggle blue indicator LED
set_led_orange(addr, level) Set orange indicator LED brightness (0-15)
set_led_purple(addr, level) Set purple (both) indicator LED
reset_led(addr) Clear indicator LEDs
find_me(addr) Flash device LED for 15 seconds
on_status_update(callback) Register for real-time push notifications
disconnect() Disconnect and clean up

Mesh credentials

All nodes in a Pixie mesh share two values:

  • Mesh name - typically "Smart Light" (the firmware default)
  • Mesh password - the numeric string shown in the Pixie app's "Share Home" screen

Protocol reference

See docs/PROTOCOL-REFERENCE.md for the complete reverse-engineered protocol specification.

License

MIT

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

pigsydust-0.4.0.tar.gz (41.5 kB view details)

Uploaded Source

Built Distribution

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

pigsydust-0.4.0-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file pigsydust-0.4.0.tar.gz.

File metadata

  • Download URL: pigsydust-0.4.0.tar.gz
  • Upload date:
  • Size: 41.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pigsydust-0.4.0.tar.gz
Algorithm Hash digest
SHA256 a9026159d25e01c08d5e4b1a587c4c03d2dad6cbb905db6203e61ffee434e271
MD5 8300a6f46602426b2cb25505eff853e5
BLAKE2b-256 091d2092eb3682800432da9211f2b5cb8b32ba9e9b6bf227d72858abb42482d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pigsydust-0.4.0.tar.gz:

Publisher: release.yml on tcslater/pigsydust-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pigsydust-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: pigsydust-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pigsydust-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa8b312ee888439bfb2f9cb2628502dc5ceccfb92aab91f0af59103c7931fe83
MD5 a438c3dfae1fc21506422a4979817c27
BLAKE2b-256 f7867f6bc8f0f1bf331c10e95b80800d0a21a3d233ed494d2ac8a4c32dfa0a6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pigsydust-0.4.0-py3-none-any.whl:

Publisher: release.yml on tcslater/pigsydust-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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