KI Antwort:
Das Problem in deinem Skript ist klar: Du versuchst remote.start abzufangen und mit setState(MOWER_START, false) zurückzusetzen. Das funktioniert nicht, weil der Navimow-Adapter den Startbefehl sofort an die API sendet, bevor dein Skript ihn zurücksetzen kann. Deshalb fahren Tor und Mäher gleichzeitig los.
Die Lösung: Einen eigenen Trigger-Button verwenden statt remote.start abzufangen.
Hier das korrigierte Skript:
// Garage + Mäher Steuerung
const ROLLO = 'hm-rpc.0.OEQ0550361.1.LEVEL';
const MOWER_START = 'navimow.0.21EAB2545Y4281.remote.start';
const MOWER_STATUS = 'navimow.0.21EAB2545Y4281.status.state';
const TRIGGER = '0_userdata.0.Garage_Maeher_Start';
// Trigger-Datenpunkt erstellen (diesen Button auf dein Tablet legen)
createState(TRIGGER, false, {
name: 'Mäher mit Garagentor starten',
type: 'boolean',
role: 'button',
read: true,
write: true
});
let running = false;
let watcher = null;
on({id: TRIGGER, change: "any", ack: false}, async function (obj) {
if (obj.state.val !== true || running) return;
running = true;
// 1. Tor öffnen
setState(ROLLO, 100);
log("Tor öffnet");
// 2. Warten bis Tor komplett offen (2 Minuten)
await wait(120000);
// 3. Mäher starten
log("Starte Mäher");
setState(MOWER_START, true);
// 4. Rückkehr überwachen
if (watcher) unsubscribe(watcher);
watcher = on({id: MOWER_STATUS, change: "ne"}, async function (state) {
if (state.state.val === "isDocked" && state.state.ack) {
log("Mäher ist zurück");
unsubscribe(watcher);
watcher = null;
// 5. Warten bis Mäher in Garage (2 Minuten)
await wait(120000);
// 6. Tor schließen
setState(ROLLO, 0);
log("Tor schließt");
running = false;
}
});
});
Was ist anders:
Eigener Trigger-Button (0_userdata.0.Garage_Maeher_Start) -- diesen Datenpunkt legst du auf dein Tablet statt remote.start. Der Mäher wird erst nach 2 Minuten Wartezeit gestartet, nicht sofort.
change: "ne" beim Status-Watcher -- reagiert nur auf tatsächliche Statusänderungen, nicht auf wiederholte Werte.
ack-Prüfung -- state.state.ack === true stellt sicher, dass nur bestätigte Statusänderungen vom Gerät verarbeitet werden.
running-Flag -- verhindert, dass der Ablauf doppelt gestartet wird.
So richtest du es ein:
Skript in ioBroker JavaScript-Adapter einfügen und starten
Der Datenpunkt 0_userdata.0.Garage_Maeher_Start wird automatisch erstellt
Diesen Button auf dein Tablet (z.B. in VIS oder Lovelace) legen
remote.start direkt nicht mehr als Auslöser verwenden -- wenn du den Mäher ohne Garage starten willst, kannst du remote.start weiterhin normal nutzen