NEWS
Navimow Steuerung ioBroker
-
Hallo
We kann mir mal helfen.
Ich habe einen Rasenrobotor der Firma Navimow i208 in ioBroker mit den Datenpunkten siehe Photo.
Dann habe ich eine Garage mit Rolltoor Elektrisch das auch in ioBroker ist mit den Datenpunkten siehe Photo.
Ich möchte gerne eine Steuerung haben, wo ich ein Taster auf mein Tablett drücke und das Rolltoor aufgeht und nach 2 Minuten soll der Mäher aus ger Garage fahren und seine arbeit verrichten , und wenn er wieder angedockt hat an der Kadestation dann soll das Rolltoor wieder schliessen.
Ich habe esa mal versucht so wie im crypt, aber dann geht das rolltoor gleichzeiti mit dem start des mähers auf.Ich würde mich sehr über Eure Hilfe freuen, wenn mir da mal jemand was basteln könnte.
Bilder von den Datenpunkten und mein crypt

const ROLLO = 'hm-rpc.0.OEQ0550361.1.LEVEL';
const MOWER_START = 'navimow.0.21EAB2545Y4281.remote.start';
const MOWER_STATUS = 'navimow.0.21EAB2545Y4281.status.state'; -
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