Skip to content

Contributing DE

Kay edited this page Apr 26, 2026 · 1 revision

Mitwirken

Sprache: Deutsch · English

Danke fürs Interesse an einer Mitwirkung an der Gardena-Smart-System-Integration für Home Assistant! Bug-Reports, Feature-Wünsche und Pull-Requests sind willkommen.

Entwicklungsumgebung

  1. Repository klonen:

    git clone https://github.com/kayloehmann/ha-gardena-smart-system.git
    cd ha-gardena-smart-system
  2. Virtuelle Umgebung anlegen und aktivieren:

    python -m venv .venv
    source .venv/bin/activate
  3. Abhängigkeiten installieren (inklusive der mitgelieferten Client-Libraries im Editable-Mode):

    pip install -e ./aiogardenasmart -e ./aioautomower
    pip install pytest pytest-asyncio pytest-cov pytest-homeassistant-custom-component mypy ruff

Tests ausführen

pytest -q

Mit Coverage:

pytest --cov --cov-report=term-missing

Linting

ruff check custom_components/ tests/
ruff format --check custom_components/ tests/

Typprüfung

Die Integration wird gegen mypy --strict geprüft:

mypy custom_components/gardena_smart_system/

Pull-Requests

  • Feature-Branch von main abzweigen.
  • Tests für neue Funktionalität mitschicken.
  • Alle CI-Checks müssen grün sein (Lint, Tests, Mypy, Hassfest).
  • PRs fokussiert halten — ein Feature bzw. Fix pro PR.
  • Bestehenden Übersetzungsworkflow beachten: Bei neuen sichtbaren Strings die strings.json aktualisieren und das Translation-Tooling für die 31 unterstützten Sprachen anstossen.

Architektur

Die Integration unterstützt zwei Husqvarna-APIs über separate Coordinator:

  • Gardena Smart System APIcoordinator.py + GardenaCoordinator
  • Automower Connect APIautomower_coordinator.py + AutomowerCoordinator

Beide erben von base_coordinator.py, der das WebSocket-First-Verhalten, den Rate-Limit-Backoff, den Circuit Breaker, den Watchdog und das API-Budget-Tracking implementiert — geteilt von beiden APIs.

Entity-Plattformen sind nach API-Typ getrennt:

  • Gardena: sensor.py, binary_sensor.py, valve.py, switch.py, lawn_mower.py, event.py
  • Automower: automower_sensor.py, automower_binary_sensor.py, automower_lawn_mower.py, automower_switch.py, automower_select.py, automower_number.py, automower_device_tracker.py, automower_calendar.py, automower_button.py, automower_event.py

Beide APIs verwenden WebSocket für Echtzeit-Updates mit REST-Polling als Fallback. Detaillierte Aufrufmuster: siehe API-Rate-Limits.

Qualitätsziele

Die Integration zielt auf das Home Assistant Integration Quality Scale Platinum-Level:

  • 99 % Testabdeckung
  • mypy --strict ohne Fehler auf allen Quelldateien
  • PEP 561 konform (py.typed-Marker)
  • Vollständig asynchron — keine blockierenden I/O-Aufrufe im Event-Loop
  • Diagnose mit Redaktion sensibler Daten
  • Übersetzte Ausnahmen für alle benutzerseitigen Fehler

Nochmals danke — siehe auch GitHub-Repository und Issue-Tracker.

Clone this wiki locally