Skip to main content

washpy

PyPI License documentation

washpy offers a partial implementation of the Miele Professional IP Profile API.

The project focusses on implementing the parts of the API for washing machines from Miele Professional.

Getting started

Documentation

Read the documentation of washpy.

Project with washpy usage

washpy is used in the dorfwash project. You can have a look there on how to use washpy in practice.

Installation

washpy is available on PyPI, so washpy can be installed via pip, poetry, or any other tool that interfaces with PyPI.

Hardware setup

I have tested this library on Miele Professional PWM 507 machines, with the Miele XKM 3200-WL-PLT KOM module.

  • slide the KOM module into the slot of your machine
  • connect the RJ45 jack of the module to your network
    • at the time of writing (2024), the modules need a network with DHCP, they do not support static IP addresses

Set up your KOM module

You have to somehow find out the IP addresses of your machines. For that, I can recommend arp-scan to discover all hosts in your IPv4 network.

Now, give your machine a visit with your web browser, and if your browser asks you about the SSL certificate being untrustworthy, tell the browser to trust the certificate:

https://{your.device.ip.address}/Devices/

From there, you can get your machines' fabrication number. This is important for all further calls to the API

Activate the admin user

On the KOM module, there exists the Admin default user, with the default password "" (the empty string).

I had to activate the admin user by changing its password:

from washpy import post_new_password

post_new_password(
    "https://192.168.1.251/Devices/000116343328", "Admin", "", "verySecurePassword!"
)

Add new User

from washpy import DeviceUser
from washpy.user import User

d = DeviceUser(
    "https://192.168.1.251/Devices/000116343328", "Admin", "verySecurePassword!"
)

user = User(
    ID=102,
    LoginName="MyUser",
    Password="evenStrongerPassword!",
    Description="My first User",
    Roles=[1, 2],
)

# user the Admin standard user to add a new user
d.post_new_user(user)

Interact with a device

The core of washpy is the DeviceUser class. Once constructed, it provides many methods to control the Miele device.

The script

from washpy import DeviceUser

my_device = DeviceUser(
    "https://192.168.1.251/Devices/000116343328", "Admin", "verySecurePassword!"
)

print(my_device.get_state().Status)

will yield

<Status.RUNNING: 5>

See also the exapmles folder for more usage examples.

Is there documentation of the IP Profile API?

Yes, you have to request access to it from Miele Professional.

known issues

Do not upgrade requests, as it will upgrade to urllib3 version 2.x.

Problem: you will get handshake errors:

SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] ssl/tls alert handshake failure (_ssl.c:1006)'))

Also see this GitHub Issue.

License

LGPL-3.0-only

Release files for washpy 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for washpy 0.6.0
File Size Uploaded
washpy-0.6.0.tar.gz 26.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for washpy 0.6.0
File Interpreter ABI Platform
washpy-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 54.6 kB

Release files / washpy-0.6.0.tar.gz

Download URL washpy-0.6.0.tar.gz
Size 26.0 kB
Tags Source
SHA-256 checksum
How to use checksums
6afd94c84c615b0dedfcfafef619f4723912c434704689c4b5c0f1482e6dc319
BLAKE2b-256 checksum
How to use checksums
02b8f1c122bc5c12ec2e586f20c9bb63eeb1c410ca2521500c5e09ccd8a73bf1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.11.5-arch1-1

Release files / washpy-0.6.0-py3-none-any.whl

Download URL washpy-0.6.0-py3-none-any.whl
Size 28.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb330e803275a5f91fb854997f9b0a9ce3db96a8d019ba2c3523c0bb1096501f
BLAKE2b-256 checksum
How to use checksums
ab6603b835ce16efbcfe5c010ebabd08d2bd94bd3c8c278dd7350b4efed49023
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.4 CPython/3.12.7 Linux/6.11.5-arch1-1

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page