Skip to main content

Async client library for the Mahlkönig X54 grinder

Project description

Mahlkönig X54 Client

A Python client for the Mahlkönig X54 coffee grinder with WebSocket API support.

Installation

uv add mahlkoenig

or

pip install mahlkoenig

Features

  • Asynchronous WebSocket communication with the X54 grinder
  • API coverage for common grinder operations
  • Type-safe request and response handling
  • Automatic connection management and authentication
  • Easy access to grinder status, recipes, and statistics

Quick Start

import asyncio
from mahlkoenig import Grinder, AutoSleepTimePreset

async def main():
    # Connect to your grinder (default password is empty)
    async with Grinder(host="10.10.10.10") as client:
        # Get machine information
        machine_info = await client.request_machine_info()
        print(f"Connected to X54 grinder: {machine_info.serial_no}")
        print(f"Software version: {machine_info.sw_version}")
        
        # Get all recipes
        recipes = await client.request_recipe_list()
        for recipe_no, recipe in recipes.items():
            print(f"Recipe {recipe_no}: {recipe.name} - {recipe.grind_time}")
        
        # Set auto sleep time to 10 minutes
        await client.set_auto_sleep_time(AutoSleepTimePreset.MIN_10)
        print(f"Set auto sleep time to 10min")
        
        # Get grinding statistics
        stats = await client.request_statistics()
        print(f"Total grinding shots: {stats.total_grind_shots}")
        print(f"Total grinding time: {stats.total_grind_time}")

if __name__ == "__main__":
    asyncio.run(main())

API Reference

The Grinder class provides these main methods:

  • connect() - Establishes connection to the grinder
  • close() - Closes the connection
  • request_machine_info() - Gets machine information
  • request_wifi_info() - Gets WiFi settings
  • request_system_status() - Gets current grinder status
  • request_recipe_list() - Gets all programmed recipes
  • request_auto_sleep_time() - Gets current auto-sleep setting
  • set_auto_sleep_time() - Changes auto-sleep setting
  • request_statistics() - Gets usage statistics

The client also supports context manager syntax for automatic connection management.

Development

See DEVELOP.md for instruction on how to use mitmproxy to intercept the communication between the app and the grinder

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

mahlkoenig-0.5.1.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

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

mahlkoenig-0.5.1-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file mahlkoenig-0.5.1.tar.gz.

File metadata

  • Download URL: mahlkoenig-0.5.1.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.21

File hashes

Hashes for mahlkoenig-0.5.1.tar.gz
Algorithm Hash digest
SHA256 331b18df3b5cc52c242f8c01181c2c36957b0b71f6d595364b296b286ea20d30
MD5 1adbae01316bf8d9dddbc98afd76f018
BLAKE2b-256 6b9ce31d007ebc67b0e0b2d2bbc5730cb8608951f75fba36cfde4079646caca7

See more details on using hashes here.

File details

Details for the file mahlkoenig-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: mahlkoenig-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.21

File hashes

Hashes for mahlkoenig-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d74df76c90192b8e301d034bb6e205a9da40d660c189dcd902dc1a346939828d
MD5 58f302b4c09cc3bbb9a66c54398eb0ff
BLAKE2b-256 9ba088e35d1df8d104ef1ce81b83847fb474e2e125231dbc89fa4885b62b5a92

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