Skip to main content

A small python library for discovery and interacting with Melnor, Eden, etc Bluetooth water timers.

Project description

Melnor Bluetooth

PyPI Codecov branch GitHub Workflow Status (branch) PyPI - Downloads

Melnor Bluetooth is a reverse engineered implementation of the Bluetooth protocol for all "smart" bluetooth-enabled watering valves under the Melnor, EcoAquastar, Eden, and other brands.

The library should run on MacOS, Linux, or Windows. It's primarily developed on MacOS and other platforms likely have bugs. PRs and tests are welcome to improve quality across all platforms.

Getting Started

CLI

A simple CLI has been provided for basic debugging purposes. It's not intended for any real use and isn't suitable for running a valve in the real world.

This project uses poetry for dependency management and building. Running this project locally is as simple as the following steps:

  1. Clone the repository
  2. poetry install
  3. poetry run cli.py

The python API has been designed to be as easy to use as possible. A few examples are provided below:

Read battery state

import asyncio

from bleak import BleakScanner  # type: ignore - bleak has bad export types

from melnor_bluetooth.device import Device

ADDRESS = "00:00:00:00:00"  # fill with your device mac address


async def main():

    ble_device = await BleakScanner.find_device_by_address(ADDRESS)
    if ble_device is not None:
        device = Device(ble_device)
        await device.connect()
        await device.fetch_state()

        print(device.battery_level)

        await device.disconnect()


asyncio.run(main())

Turn on a zone

import asyncio

from bleak import BleakScanner  # type: ignore - bleak has bad export types

from melnor_bluetooth.device import Device

address = "00:00:00:00:00"  # fill with your device mac address


async def main():
    ble_device = await BleakScanner.find_device_by_address(ADDRESS)
    if ble_device is not None:
        device = Device(ble_device)
        await device.connect()
        await device.fetch_state()

        device.zone1.is_watering = True

        await device.push_state()
        await device.disconnect()


asyncio.run(main())

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

melnor_bluetooth-0.0.21.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

melnor_bluetooth-0.0.21-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file melnor_bluetooth-0.0.21.tar.gz.

File metadata

  • Download URL: melnor_bluetooth-0.0.21.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for melnor_bluetooth-0.0.21.tar.gz
Algorithm Hash digest
SHA256 826bade6ad5e9dd1b760a60b8c18b0eb7c944bd1d4dccc5dafde1dd5bbbcf15f
MD5 6568487e17aaf4fee58163ea130ba614
BLAKE2b-256 3d7109a2d5dcd14434bfb373bbad0cd9d0d47cc7358d58627528e4e7279016e4

See more details on using hashes here.

File details

Details for the file melnor_bluetooth-0.0.21-py3-none-any.whl.

File metadata

File hashes

Hashes for melnor_bluetooth-0.0.21-py3-none-any.whl
Algorithm Hash digest
SHA256 411bdcda593c22ea42bedfdb33ae6e8c758ed8b5ebe6b44f77b7d0d124e4f430
MD5 1d0e905350b0e950561744741bff2108
BLAKE2b-256 43b113b75790c6c10178144a4a7781207d0143e2edec59688dc44e086d66a678

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page