Python library and local API server for monitoring and controlling IoT coffee machines.
Project description
cremalink
A high-performance Python library and local API server for monitoring and controlling IoT coffee machines.
✨ Overview
Cremalink provides a unified interface to interact with smart coffee machines via Local LAN control or Cloud API. It allows for real-time state monitoring and precise command execution.
[!TIP] For detailed guides, advanced configuration, and developer deep-dives, please visit our Project Wiki.
[!NOTE] This project was developed with a result-oriented approach, primarily optimized for the De'Longhi PrimaDonna Soul. While the architecture is designed to be extensible, some logic may currently be tightly coupled to this specific model and might not work seamlessly with others yet. The goal is to make the library fully generic. If you notice parts that are too specific to the PrimaDonna Soul or encounter issues with other machines, we highly encourage contributions! Refactoring and generalizations are very welcome to improve support for a wider range of devices.
🚀 Installation
Install the package via pip (Cremalink requires Python 3.13+):
pip install cremalink
Optional Dependencies
To include tools for development or testing:
pip install "cremalink[dev]" # For notebooks and kernel support
pip install "cremalink[test]" # For running pytest suites
🛠 Usage
Integrated API Server
Cremalink includes a FastAPI-based server for headless environments:
# Start the server
cremalink-server --ip 0.0.0.0 --port 10280 --settings_path "conf.json"
More information: Local Server Setup
Python API (Local Control)
Connect to your machine directly via your local network for the lowest latency.
More information: Local Device Usage
🛠 Development
Testing
Run the comprehensive test suite using pytest:
pytest tests/
Contributing
Contributions are welcome! If you have a machine profile not yet supported, please check the Wiki: 5. Adding Custom Devices on how to add new .json device definitions.
Currently supported devices:
De'Longhi PrimaDonna Soul (ECAM612)De'Longhi Eletta Explore (ECAM452) (not tested yet)
☕ Credits
This project stands on the shoulders of giants. The reverse engineering and implementation is a community effort. A special thanks to the following projects and individuals for their pioneering work and documentation:
Technical Foundations, Protocol Research & Inspiration
- ECAMpy
- delonghi-comfort-client
- Hacking Bluetooth to Brew Coffee
- delonghi-coffee-link-python
- DlghIoT
- home_assistant_delonghi_primadonna
- longshot
Is a project missing or do you have suggestions for improvement? Feel free to open a PR or an issue!
💫 Star History
📄 License
Distributed under the AGPL-3.0-or-later License. See LICENSE for more information.
Developed by Midian Tekle Elfu. Supported by the community.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cremalink-0.1.0b21.tar.gz.
File metadata
- Download URL: cremalink-0.1.0b21.tar.gz
- Upload date:
- Size: 500.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b04b2729cc3ff5bafb3074d940dd20f5fb4397a960351280002bbec355811fc8
|
|
| MD5 |
359e15e8e6fd28307c584b6c74c33d34
|
|
| BLAKE2b-256 |
22f151f2561a7f57bbd5d86f958c1e149988c809aaa0238f3705ee0e63b82bae
|
Provenance
The following attestation bundles were made for cremalink-0.1.0b21.tar.gz:
Publisher:
python-publish.yml on miditkl/cremalink
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cremalink-0.1.0b21.tar.gz -
Subject digest:
b04b2729cc3ff5bafb3074d940dd20f5fb4397a960351280002bbec355811fc8 - Sigstore transparency entry: 1102123522
- Sigstore integration time:
-
Permalink:
miditkl/cremalink@c011540a730233ba2a8d907751b94f3f86e8ac13 -
Branch / Tag:
refs/tags/v0.1.0-beta.21 - Owner: https://github.com/miditkl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@c011540a730233ba2a8d907751b94f3f86e8ac13 -
Trigger Event:
release
-
Statement type:
File details
Details for the file cremalink-0.1.0b21-py3-none-any.whl.
File metadata
- Download URL: cremalink-0.1.0b21-py3-none-any.whl
- Upload date:
- Size: 70.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33986e624d45865b407c095b4fadcd5abf607123ed5c91c7454e68b9e237786b
|
|
| MD5 |
52b04fbcbc5947e3cb270e0310cda7b2
|
|
| BLAKE2b-256 |
5706d884bc8ba0492d0a48bc3b09b174bb53e20667bd3fd248595330d8ff8962
|
Provenance
The following attestation bundles were made for cremalink-0.1.0b21-py3-none-any.whl:
Publisher:
python-publish.yml on miditkl/cremalink
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cremalink-0.1.0b21-py3-none-any.whl -
Subject digest:
33986e624d45865b407c095b4fadcd5abf607123ed5c91c7454e68b9e237786b - Sigstore transparency entry: 1102123525
- Sigstore integration time:
-
Permalink:
miditkl/cremalink@c011540a730233ba2a8d907751b94f3f86e8ac13 -
Branch / Tag:
refs/tags/v0.1.0-beta.21 - Owner: https://github.com/miditkl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@c011540a730233ba2a8d907751b94f3f86e8ac13 -
Trigger Event:
release
-
Statement type: