Als Besitzer eines automatischen Mähroboters steht man vor der Herausforderung, ihn möglichst effizient, wetterabhängig und zeitschonend zu steuern.
In meinem Smart Home nutze ich Home Assistant, um meinen Green Cruiser Mähroboter (Gardena smart SILENO city, 500 m²) perfekt in meinen Alltag zu integrieren.
Heute möchte ich dir meine finale Automatisierungslösung vorstellen, die ich über mehrere Wochen optimiert habe. Ich erkläre dir genau, wie die Steuerung funktioniert, welche Automatisierungen ich dafür eingesetzt habe, welche Helfer-Entitäten dabei eine wichtige Rolle spielen und wie die Benutzeroberfläche zur Steuerung aufgebaut ist.
Ausgangsproblem
Der Gardena Mähroboter bringt von Haus aus ein eigenes Scheduling-System mit.
Dieses steuert:
- wann der Roboter fährt
- wann er lädt
- wann er pausiert
Problem:
- Zeitplan aktiv →
gutes Ladeverhalten,
automatisches Starten - Zeitplan deaktiviert →
keine Eigenstarts,
Ladeverhalten teilweise suboptimal
Zusätzlich:
- der Zeitplan lässt sich nur „pausieren“
- wird aber im Hintergrund teilweise wieder automatisch aktiviert
Ziele meiner Automatisierung
Mähen nur in festgelegten Zeitfenstern
Kein Mähen bei Regen
Automatisches Fortsetzen des Mähens nach dem Aufladen
Manuelles, spontanes Mähen für eine selbstgewählte Dauer unabhängig von Zeitfenstern
Verhindern unerlaubter Starts außerhalb erlaubter Zeitfenster ohne expliziten Home Assistant-Trigger
Übersichtliche Bedienelemente und Statusanzeigen in Home Assistant
Home Assistant soll die einzige Steuerinstanz sein – ohne unkontrolliertes Eigenverhalten des Roboters
Architektur meines Systems
Das gesamte System basiert auf drei zentralen Bausteinen:
- Automatikbetrieb (Zeit + Wetter + Akku)
- Spontanbetrieb (manuell über UI)
- Schutz-Mechanismus gegen Fremdstarts
Wichtigste Hilfsmittel: Helper (Input-Entitäten)
Damit die Automatisierungen flexibel und nutzerfreundlich sind, verwende ich verschiedene Helper in Home Assistant:
1. Steuer-Flags
input_boolean.mahroboter_spontan_akti
Steuert den manuellen, spontanen Mähmodus. Wird dieser aktiviert, läuft der Mäher unabhängig vom Zeitfenster.
input_boolean.mahroboter_hat_gemaeht
Merkt sich, ob der Mäher bereits gemäht hat – wichtig, um nach vollständigem Akku-Laden richtig zu entscheiden.
2. Zeitsteuerung
input_datetime.mahroboter_startzeit und input_datetime.mahroboter_endzeit
Dienen zur Definition der erlaubten Mähzeitfenster. So kann man jederzeit bequem per UI Start- und Endzeit anpassen.
3. Spontanmodus Parameter
input_number.mahroboter_spontan_dauer
Einstellbarer Timer, wie lange das spontane Mähen laufen soll.
input_datetime.mahroboter_spontan_ende
Speichert das Ende des spontanen Mähvorgangs zeitlich ab, damit es in der UI angezeigt werden kann.
Diese Helper sind essentiell, um dynamisch und intelligent auf Zeit, Regen und Batterielevel reagieren zu können.
Wetterlogik (Binary Sensor)
Ein wichtiger Bestandteil ist ein eigener Sensor:
„Mähroboter Regen OK“
Funktion
- wertet die Regenrate aus
- entscheidet, ob Mähen aktuell erlaubt ist
Logik (vereinfacht)
- Regenrate < 0.1 → OK
- Regenrate >= 0.1 → gesperrt
YAML - Code
- binary_sensor:
- name: "Mähroboter Regen OK"
unique_id: maehroboter_regen_ok
state: >
{{ states('sensor.gw1100a_rain_rate') | float(0) < 0.1 }}
icon: >
{% if states('sensor.gw1100a_rain_rate') | float(0) < 0.1 %}
mdi:weather-sunny
{% else %}
mdi:weather-rainy
{% endif %}
Vorteil:
klare Freigabe / Sperre
direkt im Dashboard sichtbar
einfache Integration in Automationen
Die drei finalen Automatisierungen im Detail
1.
Intelligente Regen-, Akku- und Zeitsteuerung
Diese Automatisierung sorgt dafür, dass der Green Cruiser nur im definierten Zeitfenster mäht, bei Regen sofort ins Dock zurückkehrt und nach vollem Akku-Aufladen sein Mähen fortsetzt.
Trigger:
Startzeit erreicht (input_datetime.mahroboter_startzeit)
Endzeit erreicht (input_datetime.mahroboter_endzeit)
Regen beginnt
Regen ist mindestens 2 Stunden vorbei
Akku voll (>95%)
Bedingungen & Ablauf:
Start bei passenden Bedingungen innerhalb Zeitfenster
Kein Start bei Regen
Fortsetzung nach dem Laden
Rückkehr bei Regen oder Endzeit
Diese Logik sorgt für maximale Effizienz: Kein Mähen bei Regen, nur im definierten Fenster, und automatische Fortsetzung nach Laden.
Besonderheit:
Die Automation nutzt gezielt Trigger-IDs (zeit_start, regen_vorbei, akku_voll) und Zustandslogik (mahroboter_hat_gemaeht), um Chaoszustände zu vermeiden.
Dadurch entsteht eine sehr präzise Steuerung ohne Chaoszustände
alias: "Mähroboter: Intelligente Regen-, Akku- und Zeitsteuerung"
description: >
Green Cruiser fährt nur im Zeitfenster, reagiert auf Regen und setzt nach
Laden fort.
triggers:
- trigger: time
at: input_datetime.mahroboter_startzeit
id: zeit_start
- trigger: time
at: input_datetime.mahroboter_endzeit
id: zeit_ende
- trigger: numeric_state
entity_id: sensor.gw1100a_rain_rate
above: 0
id: regen_start
- trigger: numeric_state
entity_id: sensor.gw1100a_rain_rate
below: 0.1
for: "02:00:00"
id: regen_vorbei
- trigger: numeric_state
entity_id: sensor.green_cruiser_battery_level_2
above: 95
id: akku_voll
actions:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.mahroboter_spontan_akti
state: "off"
- condition: or
conditions:
- condition: trigger
id: zeit_start
- condition: trigger
id: regen_vorbei
- condition: trigger
id: akku_voll
- condition: time
after: input_datetime.mahroboter_startzeit
before: input_datetime.mahroboter_endzeit
- condition: numeric_state
entity_id: sensor.gw1100a_rain_rate
below: 0.1
- condition: state
entity_id: lawn_mower.green_cruiser_lawn_mower
state: docked
- condition: or
conditions:
- condition: not
conditions:
- condition: trigger
id: akku_voll
- condition: state
entity_id: input_boolean.mahroboter_hat_gemaeht
state: "on"
sequence:
- action: button.press
target:
entity_id: button.green_cruiser_start_mowing_now
- action: input_boolean.turn_on
target:
entity_id: input_boolean.mahroboter_hat_gemaeht
- conditions:
- condition: state
entity_id: input_boolean.mahroboter_spontan_akti
state: "off"
- condition: or
conditions:
- condition: trigger
id: zeit_ende
- condition: trigger
id: regen_start
sequence:
- action: button.press
target:
entity_id: button.green_cruiser_return_to_dock_2
- condition: trigger
id: zeit_ende
- action: input_boolean.turn_off
target:
entity_id: input_boolean.mahroboter_hat_gemaeht
mode: restart
2.
Spontan mähen für Dauer
Manchmal will man nicht auf Zeitfenster warten und den Mäher spontan starten lassen – z. B. an einem sonnigen Tag zwischendurch.
Trigger:
Spontanmodus wird aktiviert
Akku ist voll
Ablauf:
Start aus dem Dock
Berechnung der Endzeit
Lauf für definierte Dauer
Rückkehr ins Dock
Neustart nach Laden wenn nötig
Besonderheit:
Diese Automation funktioniert unabhängig vom Zeitfenster — daher war eine zusätzliche Schutzlogik notwendig.
alias: "Mähroboter: Spontan mähen für Dauer"
description: ""
triggers:
- trigger: state
entity_id: input_boolean.mahroboter_spontan_akti
to: "on"
id: start
- trigger: numeric_state
entity_id: sensor.green_cruiser_battery_level_2
above: 95
id: akku_voll
actions:
- choose:
- conditions:
- condition: trigger
id: start
- condition: state
entity_id: lawn_mower.green_cruiser_lawn_mower
state: docked
sequence:
- action: button.press
target:
entity_id: button.green_cruiser_start_mowing_now
- action: input_boolean.turn_on
target:
entity_id: input_boolean.mahroboter_hat_gemaeht
- action: input_datetime.set_datetime
target:
entity_id: input_datetime.mahroboter_spontan_ende
data:
datetime: >
{{ (now() +
timedelta(minutes=states('input_number.mahroboter_spontan_dauer')
| int)).strftime('%Y-%m-%d %H:%M:%S') }}
- delay:
minutes: "{{ states('input_number.mahroboter_spontan_dauer') | int }}"
- action: button.press
target:
entity_id: button.green_cruiser_return_to_dock_2
- action: input_boolean.turn_off
target:
entity_id: input_boolean.mahroboter_spontan_akti
- conditions:
- condition: trigger
id: akku_voll
- condition: state
entity_id: input_boolean.mahroboter_spontan_akti
state: "on"
- condition: state
entity_id: input_boolean.mahroboter_hat_gemaeht
state: "on"
- condition: state
entity_id: lawn_mower.green_cruiser_lawn_mower
state: docked
sequence:
- action: button.press
target:
entity_id: button.green_cruiser_start_mowing_now
mode: restart
3.
Unerlaubten Start blockieren
Manche Mäher starten auch mal spontan oder ungewollt. Diese Automatisierung verhindert genau das.
Das Problem:
Der Gardena Zeitplan darf weiterhin aktiv bleiben (für Ladeverhalten), startet aber gelegentlich eigenständig.
Trigger:
Zustand wechselt auf „mowing“
Bedingungen:
Spontanmodus aus
außerhalb Zeitfenster
Ablauf:
kurze Wartezeit
erneute Prüfung
Rückfahrt zum Dock
Ergebnis:
- Der Zeitplan bleibt aktiv
- Das Ladeverhalten bleibt optimal
- Aber jede unerwünschte Bewegung wird sofort gestoppt
alias: "Mähroboter: Unerlaubten Start blockieren"
description: Stoppt den Mäher, wenn er außerhalb erlaubter Zeiten ohne HA-Trigger startet
triggers:
- entity_id: lawn_mower.green_cruiser_lawn_mower
to: mowing
trigger: state
conditions:
- condition: state
entity_id: input_boolean.mahroboter_spontan_akti
state: "off"
- condition: or
conditions:
- condition: time
before: input_datetime.mahroboter_startzeit
- condition: time
after: input_datetime.mahroboter_endzeit
actions:
- delay: "00:00:05"
- condition: state
entity_id: lawn_mower.green_cruiser_lawn_mower
state: mowing
- delay: "00:00:03"
- target:
entity_id: button.green_cruiser_return_to_dock_2
action: button.press
mode: restart
Die Steuerungsoberfläche (UI) für den Mähroboter
Um die Steuerung einfach und intuitiv zu halten, habe ich in Home Assistant eine übersichtliche View aufgebaut.
Diese umfasst:
Zeit-Fenster Steuerung (Start & Endzeit)
Wetterfreigabe (Farbige Anzeige basierend auf binary_sensor.maehroboter_regen_ok)
Automationsstatus
Manueller Start / Spontanmodus mit Dauer-Einstellung und Anzeige Ende
Status des Mähers und Batteriestand
Direkte Steuerung (Start / Zurück zum Dock)
Der Aufbau nutzt custom:button-card, um Karten farblich und interaktiv attraktiv zu gestalten.
- type: grid
cards:
- type: heading
heading: Rasenmäher Start - & Endzeiten
heading_style: title
icon: mdi:robot-mower
- square: false
type: grid
columns: 2
grid_options:
rows: 1
cards:
- type: custom:button-card
entity: input_datetime.mahroboter_startzeit
icon: mdi:clock-start
show_name: false
show_state: true
show_icon: true
tap_action:
action: more-info
layout: vertical
aspect_ratio: 3/1
size: 22px
styles:
card:
- height: 60px
- padding: 4px
- border-radius: 10px
- border: '1px solid #555'
- background: var(--card-background-color)
grid:
- grid-template-areas: '"i" "s"'
- grid-template-rows: 1fr auto
- justify-items: center
icon:
- width: 24px
- height: 24px
state:
- font-size: 14px
- font-weight: bold
- type: custom:button-card
entity: input_datetime.mahroboter_endzeit
icon: mdi:clock-end
show_name: false
show_state: true
show_icon: true
tap_action:
action: more-info
layout: vertical
aspect_ratio: 3/1
size: 22px
styles:
card:
- height: 60px
- padding: 4px
- border-radius: 10px
- border: '1px solid #555'
- background: var(--card-background-color)
grid:
- grid-template-areas: '"i" "s"'
- grid-template-rows: 1fr auto
- justify-items: center
icon:
- width: 24px
- height: 24px
state:
- font-size: 14px
- font-weight: bold
- type: heading
heading_style: title
icon: ''
- type: heading
heading: Rasenmäher aktivieren
heading_style: title
icon: mdi:robot-mower
- square: false
type: grid
cards:
- type: custom:button-card
entity: binary_sensor.maehroboter_regen_ok
aspect_ratio: 3/1
size: 22px
name: Wetterfreigabe
show_name: true
show_state: false
icon: |
[[[
const s = states['binary_sensor.mahroboter_regen_ok']?.state;
return s === 'on'
? 'mdi:weather-sunny'
: 'mdi:weather-rainy';
]]]
tap_action:
action: none
hold_action:
action: none
double_tap_action:
action: none
styles:
card:
- height: 60px
- padding: 6px 10px
- border-radius: 10px
- border: 1px solid
- background: |
[[[
const s = states['binary_sensor.mahroboter_regen_ok']?.state;
if (s === 'on') return '#2e7d32'; // grün → Freigabe erteilt
return '#c62828'; // rot → gesperrt (Regen)
]]]
name:
- font-size: 14px
- color: '#ffffff'
icon:
- width: 22px
- height: 22px
- color: '#ffffff'
- type: custom:button-card
entity: >-
automation.mahroboter_intelligente_regen_akku_und_zeitsteuerung
icon: mdi:robot-mower-outline
show_name: false
show_state: true
layout: vertical
aspect_ratio: 3/1
size: 22px
styles:
card:
- height: 60px
- padding: 6px 10px
- border-radius: 10px
- border: '1px solid #555'
grid:
- grid-template-areas: '"i" "s"'
- grid-template-rows: 1fr auto
- justify-items: center
icon:
- width: 24px
- height: 24px
state:
- font-size: 14px
- font-weight: bold
state:
- value: 'on'
styles:
card:
- background: '#2e7d32'
- border: '1px solid #ffffff'
icon:
- color: '#a5d6a7'
state:
- color: '#e8f5e9'
- value: 'off'
styles:
card:
- background: '#c62828'
- border: '1px solid #ffffff'
icon:
- color: '#ffcdd2'
state:
- color: '#ffebee'
columns: 2
grid_options:
columns: 12
rows: 1
- type: heading
heading_style: title
icon: ''
- type: heading
heading: Rasenmäher manueller Start
heading_style: title
icon: mdi:robot-mower
- square: false
type: grid
cards:
- type: custom:button-card
entity: input_boolean.mahroboter_spontan_akti
aspect_ratio: 3/1
size: 22px
name: Start jetzt
icon: mdi:play-circle-outline
tap_action:
action: toggle
styles:
card:
- height: 60px
- padding: 6px 10px
- border-radius: 10px
- cursor: default
name:
- font-size: 14px
- font-weight: 600
icon:
- width: 22px
- height: 22px
- type: custom:button-card
name: Dauer
icon: mdi:timer
show_name: false
entity: input_number.mahroboter_spontan_dauer
tap_action:
action: call-service
service: input_number.increment
target:
entity_id: input_number.mahroboter_spontan_dauer
hold_action:
action: call-service
service: input_number.decrement
target:
entity_id: input_number.mahroboter_spontan_dauer
double_tap_action:
action: more-info
show_state: true
state_display: |
[[[
const v = Number(entity.state);
return `${v} min`;
]]]
aspect_ratio: 3/1
size: 22px
styles:
card:
- height: 60px
- padding: 6px 10px
- border-radius: 10px
- border: 1px solid
- background: |
[[[
const v = Number(entity.state);
if (v === 0) return '#424242'; // aus / deaktiviert
if (v <= 120) return '#2e7d32'; // grün (kurz, sicher)
if (v <= 240) return '#f9a825'; // gelb (normal)
return '#c62828'; // rot (lang)
]]]
name:
- font-size: 14px
- font-weight: 600
- color: '#cccccc'
icon:
- width: 22px
- height: 22px
- color: '#bdbdbd'
state:
- font-size: 14px
- font-weight: bold
- color: '#ffffff'
- type: custom:button-card
name: Läuft bis
icon: mdi:clock-end
show_state: true
show_icon: false
state_display: |
[[[
const e = states['input_datetime.mahroboter_spontan_ende'];
if (!e || !e.state) return "-";
const d = new Date(e.state);
if (isNaN(d)) return "-";
return d.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
]]]
styles:
card:
- height: 60px
- border-radius: 10px
- border: |
[[[
const e = states['input_datetime.mahroboter_spontan_ende'];
if (!e || !e.state) return 'none';
const end = new Date(e.state);
const now = new Date();
return (end > now) ? '1px solid white' : 'none';
]]]
- background: |
[[[
const e = states['input_datetime.mahroboter_spontan_ende'];
if (!e || !e.state) return '#424242';
const end = new Date(e.state);
const now = new Date();
return (end > now) ? '#2e7d32' : '#424242';
]]]
name:
- font-size: 14px
- font-weight: 600
- color: |
[[[
const e = states['input_datetime.mahroboter_spontan_ende'];
if (!e || !e.state) return '#cccccc';
const end = new Date(e.state);
const now = new Date();
return (end > now) ? 'white' : '#cccccc';
]]]
icon:
- width: 22px
- height: 22px
- color: |
[[[
const e = states['input_datetime.mahroboter_spontan_ende'];
if (!e || !e.state) return '#bdbdbd';
const end = new Date(e.state);
const now = new Date();
return (end > now) ? 'white' : '#bdbdbd';
]]]
state:
- font-size: 16px
- font-weight: bold
- color: white
- type: custom:button-card
show_name: false
show_icon: false
show_state: false
styles:
card:
- height: 60px
- background: none
- box-shadow: none
- border: none
columns: 3
grid_options:
rows: 1
- type: heading
heading_style: title
icon: ''
- type: heading
heading: Rasenmäher Status
heading_style: title
icon: mdi:robot-mower
- square: false
type: grid
cards:
- type: custom:button-card
entity: lawn_mower.green_cruiser_lawn_mower
name: Übersicht
icon: mdi:robot-mower
show_state: true
aspect_ratio: 3/1
size: 22px
tap_action:
action: more-info
hold_action:
action: none
double_tap_action:
action: none
state:
- value: mowing
styles:
card:
- background: '#2e7d32'
- border: 2px solid "#2e7d32"
icon:
- color: '#ffffff'
name:
- color: '#ffffff'
state:
- color: '#e8f5e9'
- value: returning
styles:
card:
- background: '#ef6c00'
- border: 2px solid "#ef6c00"
icon:
- color: '#ffffff'
name:
- color: '#ffffff'
state:
- color: '#fff3e0'
styles:
card:
- height: 60px
- padding: 6px 10px
- border-radius: 10px
- background: var(--ha-card-background)
- border: 1px solid var(--divider-color)
- cursor: pointer
grid:
- grid-template-areas: '"i n" "i s"'
- grid-template-columns: 32px auto
- grid-template-rows: auto auto
- align-items: center
- column-gap: 8px
icon:
- width: 22px
- height: 22px
- color: var(--secondary-text-color)
name:
- font-size: 14px
- font-weight: 600
state:
- font-size: 12px
- opacity: 0.8
- type: custom:button-card
entity: sensor.green_cruiser_battery_level_2
name: Batterie
icon: mdi:battery
show_state: true
aspect_ratio: 3/1
size: 22px
tap_action:
action: more-info
hold_action:
action: none
double_tap_action:
action: none
styles:
card:
- height: 60px
- padding: 6px 10px
- border-radius: 10px
- background: var(--ha-card-background)
- border: 1px solid var(--divider-color)
- cursor: pointer
grid:
- grid-template-areas: '"i n" "i s"'
- grid-template-columns: 32px auto
- grid-template-rows: auto auto
- align-items: center
- column-gap: 8px
icon:
- width: 22px
- height: 22px
name:
- font-size: 14px
- font-weight: 600
state:
- font-size: 12px
- opacity: 0.75
columns: 2
- type: heading
heading: Rasenmäher manuell steuern
heading_style: title
icon: mdi:robot-mower
- square: false
type: grid
cards:
- type: custom:button-card
entity: button.green_cruiser_start_mowing_now
name: Start Work
icon: mdi:home-export-outline
show_state: false
aspect_ratio: 3/1
size: 22px
tap_action:
action: call-service
service: button.press
target:
entity_id: button.green_cruiser_start_mowing_now
hold_action:
action: none
double_tap_action:
action: none
styles:
card:
- height: 60px
- padding: 6px 10px
- border-radius: 10px
- background: var(--ha-card-background)
- border: 1px solid var(--divider-color)
- cursor: pointer
grid:
- grid-template-areas: '"i n"'
- grid-template-columns: 32px auto
- align-items: center
- column-gap: 8px
icon:
- width: 22px
- height: 22px
- color: '#66bb6a'
name:
- font-size: 14px
- font-weight: 600
- type: custom:button-card
entity: button.green_cruiser_return_to_dock_2
name: Back Home
icon: mdi:home-import-outline
show_state: false
aspect_ratio: 3/1
size: 22px
tap_action:
action: call-service
service: button.press
target:
entity_id: button.green_cruiser_return_to_dock_2
hold_action:
action: none
double_tap_action:
action: none
styles:
card:
- height: 60px
- padding: 6px 10px
- border-radius: 10px
- background: var(--ha-card-background)
- border: 1px solid var(--divider-color)
- cursor: pointer
grid:
- grid-template-areas: '"i n"'
- grid-template-columns: 32px auto
- align-items: center
- column-gap: 8px
icon:
- width: 22px
- height: 22px
- color: '#e57373'
name:
- font-size: 14px
- font-weight: 600
columns: 2
Fazit und Ausblick
Mit diesen Automatisierungen steuere ich meinen Mähroboter effizient, wetterabhängig und flexibel in Home Assistant.
Die Kombination aus Zeitsteuerung, Regenwettererkennung, Akkustatus und manueller Spontansteuerung sorgt für maximale Automatisierung mit Benutzerkomfort.
Die Helper erlauben individuelle Anpassungen ohne Codeänderung und die UI macht die Bedienung kinderleicht.
Ich hoffe, dieser umfassende Einblick in meine Mähroboter-Steuerung zeigt dir, wie smart und flexibel man selbst vermeintlich simple Geräte in Home Assistant automatisieren kann!
Problem: Der Gardena Zeitplan als „unsichtbarer Gegenspieler“
Im Laufe der Umsetzung bin ich auf ein zentrales Problem gestoßen, das vermutlich viele Gardena-Nutzer kennen: Der in der App konfigurierte Zeitplan übernimmt nicht nur die Steuerung des Mähzeitraums, sondern beeinflusst auch das interne Verhalten des Roboters deutlich stärker als zunächst gedacht.
Wird der Zeitplan aktiv genutzt, sorgt er zwar für ein stabiles Ladeverhalten, jedoch startet der Mähroboter automatisch zu den im Plan definierten Zeiten – unabhängig davon, ob Home Assistant gerade andere Bedingungen vorgibt.
Eine einfache Lösung wie das „Pausieren“ des Zeitplans führt dabei nicht zum Ziel, da dieser Zustand von der Cloud bzw. vom Gerät selbst jederzeit wieder aufgehoben werden kann. In der Praxis bedeutet das: Der Mähroboter kann plötzlich wieder eigenständig starten, z. B. früh am Morgen, obwohl dies im Smart Home so gar nicht vorgesehen ist.
Auf der anderen Seite führt ein vollständiges Deaktivieren oder Entfernen des Zeitplans häufig dazu, dass der Roboter nicht mehr zuverlässig vollständig lädt, da die interne Energiemanagement-Logik ebenfalls daran gekoppelt ist.
Es entsteht also ein klassischer Zielkonflikt:
Zeitplan aktiv → stabiles Laden, aber ungewollte Starts
Zeitplan aus → volle Kontrolle über Home Assistant, aber suboptimales Ladeverhalten
Die Lösung dieses Problems ist kein simples Umschalten, sondern eine gezielte Kombination aus beiden Welten:
Der Zeitplan bleibt aktiv (für optimales Ladeverhalten)
Home Assistant übernimmt die eigentliche Steuerung
Unerwünschte Starts werden aktiv erkannt und sofort korrigiert
Genau aus diesem Grund ist die dritte Automatisierung „Unerlaubten Start blockieren“ ein essenzieller Bestandteil der Gesamtarchitektur. Sie fungiert als Schutzmechanismus, der sicherstellt, dass ausschließlich Home Assistant bestimmt, wann der Roboter tatsächlich mäht.
