Skip to main content

An implementation of the BLE protocol for controlling Zuli smartplugs

Project description

This project serves to reconstruct and document the protocol used to interact with Zuli smartplugs. Included is a Python CLI that can be used to perform basic operations on Zuli devices (turn them on/off, set schedules, check power usage, etc.). This project is by no means mature or complete or even under active development. I originally started the project out of curiosity, although I do find myself using it from time to time. (I use it to manage several Zuli smartplugs running various schedules for lights at home.) Whatever you use it for, I hope you will find it to be useful in your hacking ;)

Installation

pip install zuli

How to use

This utility does not run as a standalone command as you might expect. This design allows BLE connections with devices to be kept open in between commands. To start the utility:

python -m zuli

[!NOTE] macOS users must give Terminal (or your app of choice) Bluetooth access for this utility to work.

First, you might query the current list of discovered smartplugs. My output shows UUIDs instead of true MAC addresses due to the way the Bluetooth stack on macOS works; your output may look a little different.

>>> devices
1A494372-A92F-4710-BFBF-07DBD8604702
693907F9-3013-43AF-B8DC-8839686CBE59
74215D76-212E-45D5-BA05-AF289EB34416

Now, you could turn all of the discovered devices on with:

>>> on

Or, you could turn on a specific device.

>>> on -d 1A49

To see a complete list of commands, type garbage into the prompt:

argument {on,off,read,mode,set_mode,power,time,synctime,schedules,remove_schedule,add_schedule,devices,quit}: invalid choice: 'qwertyasdf' (choose from 'on', 'off', 'read', 'mode', 'set_mode', 'power', 'time', 'synctime', 'schedules', 'remove_schedule', 'add_schedule', 'devices', 'quit')

Next steps

I would love to get a Home Assistant integration working.

About Zuli smartplugs

Zuli smartplugs were announced on Kickstarter in 2015 with an iOS app announced at launch and an Android app promised shortly thereafter. The company has recently discontinued support for both apps, though it is still possible to use their smartplugs since they operate locally via Bluetooth.

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

zuli-0.3.1.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

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

zuli-0.3.1-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file zuli-0.3.1.tar.gz.

File metadata

  • Download URL: zuli-0.3.1.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for zuli-0.3.1.tar.gz
Algorithm Hash digest
SHA256 3e62ea6737ae38b795fa670058f1909b8fb9a9ce37b1d9e1f67c1bd2f8140fea
MD5 6db0d6687c939c14c6b7f38e3f118607
BLAKE2b-256 93ab25c342089d0918fa0365e05caccb11c57cfc92b76c6ef36d8328a8274702

See more details on using hashes here.

File details

Details for the file zuli-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: zuli-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for zuli-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eab2e6b0d8d5538563a78d82d05ea16d39467e2539e14c10e093e969bb696b59
MD5 9181b68d59a5bb2e80b8ee48216fd957
BLAKE2b-256 65ff1bd5bc63f7dddfdfb5316ce6a6609d7c77e6d743e1e59d93b4628429800c

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