Skip to main content

Python library for controlling SAL Pixie BLE mesh wall switches

Project description

PiggsyDust

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.2.1.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

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

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: pigsydust-0.2.1.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for pigsydust-0.2.1.tar.gz
Algorithm Hash digest
SHA256 35afdd6083270cb75b8e5db434917eee304bd0d1eb32dae9298386e1d3ac8dc6
MD5 7c69729c92809aace6f899dc81dde080
BLAKE2b-256 b832181685694d83ff478836dd6e52947a9ce3b0fe9a779b7f13f9cde8323453

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pigsydust-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for pigsydust-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1e33a40f4e00436903c318675bbabfa6f8c921e6068238a0d0bf7d3a26b4a9de
MD5 7a34cd4912739b20e5d25fd82facd4e3
BLAKE2b-256 1d141a9dc7e9d07567f31ea30af14ff2bcdbd7e63549f4c7596a4ba87a12ec05

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