Skip to main content

Python library for GARDENA smart local API

Enables controlling and monitoring GARDENA smart devices in the local network, without going through the cloud.

Supported Devices

Device Article Number Model (EAN suffix) Stack
smart Sensor 19030-20 18845 1st gen
smart Sensor II 19040-20 19040 1st gen
smart Water Control 19031-20 18869 1st gen
smart Water Control 19033-20 2812 2nd gen
smart Dual Water Control 19034-20 2814 2nd gen
smart Pipeline Water Control 19050-20 2826 2nd gen
smart Automatic Home & Garden Pump 19080-20 22538 1st gen
smart Irrigation Control 19032-20 31653 1st gen
smart Irrigation Control 19035-20 469 2nd gen
smart Power Adapter 19095-20 35279 1st gen
smart SILENO 19060-20, 19060-60 6146 1st gen
smart SILENO+ 19061-20, 19061-60, 19064-60, 19065-60 6146 1st gen
smart SILENO city 19066-20, 19069-20 29694 1st gen
smart SILENO life 19113-20, 19114-20, 19115-20 29694 1st gen
smart SILENO city (with LONA) 19602-66, 19603-60, 19605-60 53988 1st gen
smart SILENO life (with LONA) 19701-60, 19702-60, 19703-66, 19704-60 53988 1st gen
smart SILENO pro 19802-20, 19802-22 488 2nd gen
smart SILENO max 19901-22 488 2nd gen
smart SILENO free 19921-22, 19922-22, 19923-22 488 2nd gen
Flymo UltraLife 970620501, 970620701, 970715101, 970715201 488 2nd gen

Installation

pip install gardena-smart-local-api

Using the Library

Have a look at our example code.

You can run the examples from within the repository as follows:

uv sync --group examples
uv run gardena_smart_local_api/examples/irrigation.py --help

Contributing

Debugging

Various strategies exist to figure out why things are not working the way you want them to. This section lists some common ones.

Verbose logging on the gateway

websocketd:

mkdir -p /etc/systemd/system/websocketd.service.d
cat << EOF > /etc/systemd/system/websocketd.service.d/debug.conf
[Service]
Environment=RUST_LOG=debug
EOF
systemctl daemon-reload && systemctl restart websocketd.service

lemonbeatd:

mkdir -p /etc/systemd/system/lemonbeatd.service.d
cat << EOF > /etc/systemd/system/lemonbeatd.service.d/debug.conf
[Service]
Environment=RUST_LOG=debug
EOF
systemctl daemon-reload && systemctl restart lemonbeatd.service

lwm2mserver (add --log-level=lwm2mserver.event=DEBUG as a argument to lwm2mserver):

mkdir -p /etc/systemd/system/lwm2mserver.service.d
cat << EOF > /etc/systemd/system/lwm2mserver.service.d/debug.conf
[Service]
ExecStart=
ExecStart=/usr/bin/lwm2mserver ppp0 --bind-to-device \\
                                    --server-uri "coap://[fc00::6:100:0:0]" \\
                                    --port 20017 \\
                                    --lemonbeat-dongle-connection \\
                                    --state-storage /var/lib/lwm2mserver \\
                                    --lb-key-file /var/lib/lemonbeatd/Network_management/Network_key.json \\
                                    --ipso-directories "\${IPSO_REGISTRY_DIR}/base" "\${IPSO_REGISTRY_DIR}/fwrolloutd" "\${IPSO_REGISTRY_DIR}/dev" \\
                                    --log-level=lwm2mserver.event=DEBUG \\
EOF
systemctl daemon-reload && systemctl restart lwm2mserver.service

cloudadapter:

mkdir -p /etc/systemd/system/cloudadapter.service.d
cat << EOF > /etc/systemd/system/cloudadapter.service.d/debug.conf
[Service]
ExecStart=
ExecStart=/usr/bin/cloudadapter --verbosity --debug
EOF
systemctl daemon-reload && systemctl restart cloudadapter.service

Commits

Try to keep commits reviewable, i.e. they should only contain one logical change and generally not be too big.

As we use rebase to integrate pull requests, clean commits matter. Use commands like git commit --amend, git commit --fixup ... and git rebase --interactive ... to rework your commits. Should this be too advanced for you, just push temporary commits and when review is done, run e.g.:

git fetch
git rebase origin/main
git reset origin/main
git commit --all
git push --force-with-lease

For the commit message(s), follow these guidelines. If you are unsure how to formulate your commit messages, look at git log for inspiration.

Linting

uv sync --all-groups
uv run ruff check
uv run ruff format --check
uv run ty check

Running Tests

uv sync --group test
uv run python -m pytest

Licensing Compliance

uv run reuse lint

Metadata

Release files for gardena-smart-local-api 0.2.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 gardena-smart-local-api 0.2.0
File Size Uploaded
gardena_smart_local_api-0.2.0.tar.gz 123.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gardena-smart-local-api 0.2.0
File Interpreter ABI Platform
gardena_smart_local_api-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 207.5 kB

Release files / gardena_smart_local_api-0.2.0.tar.gz

Download URL gardena_smart_local_api-0.2.0.tar.gz
Size 123.6 kB
Tags Source
SHA-256 checksum
How to use checksums
172d56d20399f12f51362324f05b5ee705e23a44d4e97a636b5029544a9dbf51
BLAKE2b-256 checksum
How to use checksums
1abf1c0cf0f2607bdd1098f0a3e8ad5dc1f5224a1e00bfd47b806f4fb9dcb126
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / gardena_smart_local_api-0.2.0-py3-none-any.whl

Download URL gardena_smart_local_api-0.2.0-py3-none-any.whl
Size 83.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
60ea88f2b50949351752caf41f71d44e56ad3a7ced9a00138d2c4048e9c232fe
BLAKE2b-256 checksum
How to use checksums
6939ff8cee7c5d8e57188ef0f02d9db1be0956e2366070e2dbaa40853bf2dd4e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.1

2 release files

This release

0.2.0 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

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