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.1

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.1
File Size Uploaded
gardena_smart_local_api-0.2.1.tar.gz 122.4 kB Details

Built distribution (wheel)

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

Total release size: 206.2 kB

Release files / gardena_smart_local_api-0.2.1.tar.gz

Download URL gardena_smart_local_api-0.2.1.tar.gz
Size 122.4 kB
Tags Source
SHA-256 checksum
How to use checksums
139e53f8e342edd858bcaaf7446872757e9e4dd5b220041e84bd849a4d48fdca
BLAKE2b-256 checksum
How to use checksums
8c852d2f524c8a77ac0f6e39e03a0d5092ba52291c022191f2894107b460dd84
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 Oct 15, 2026.

Transparency log

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

Download URL gardena_smart_local_api-0.2.1-py3-none-any.whl
Size 83.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
efe56d309549b3044579ef879769a9479c31fce0a799e45d3f01fdd0d69a07a2
BLAKE2b-256 checksum
How to use checksums
ee6b82a4f1c8e8af680ecdd5f77ad531df62da154e0b4d7063260d88c16d3aff
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 Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

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