Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Navimow Steuerung ioBroker

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    658

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Navimow Steuerung ioBroker

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 2 Kommentatoren 62 Aufrufe 1 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • K Online
    K Online
    Kippe
    schrieb am zuletzt editiert von Kippe
    #1

    IMG_1970.png 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

    Screenshot (696).png Screenshot (697).png

    const ROLLO = 'hm-rpc.0.OEQ0550361.1.LEVEL';
    const MOWER_START = 'navimow.0.21EAB2545Y4281.remote.start';
    const MOWER_STATUS = 'navimow.0.21EAB2545Y4281.status.state';

    JasonTemp.txt

    1 Antwort Letzte Antwort
    0
    • T Offline
      T Offline
      tombox
      schrieb am zuletzt editiert von
      #2

      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

      1 Antwort Letzte Antwort
      0
      • K Online
        K Online
        Kippe
        schrieb am zuletzt editiert von
        #3

        Hallo
        Ich habe das Heute mal so gemacht, wie du es geschrieben hast, und habe auch den Trigger Button erstellt und auf das Tablett gelegt

        1 Antwort Letzte Antwort
        0
        • K Online
          K Online
          Kippe
          schrieb am zuletzt editiert von
          #4

          so sieht es jetzt aus und läuft auch erstmal.

          // 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';

          // ===== WLED =====
          const wledOn = "wled.0.bcddc225fc96.on";
          const wledPreset = "wled.0.bcddc225fc96.ps";
          const wledBri = "wled.0.bcddc225fc96.bri";

          // ===== PRESETS =====
          const PRESET_ROT = 1;
          const PRESET_GRUEN = 2;
          const PRESET_WEISS = 3;

          // Trigger-Datenpunkt erstellen
          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;
          setState(TRIGGER, false, true);
          
          // 1. Tor öffnen
          setState(ROLLO, 100);
          log("➡️ Tor öffnet");
          
          // 🔴 WLED ROT (Blinken Preset 1)
          setState(wledOn, true);
          setState(wledBri, 255);
          setState(wledPreset, PRESET_ROT);
          
          // 2. Warten bis Tor komplett offen (2 Minuten)
          await wait(120000);
          
          // 3. Mäher starten
          log("🤖 Starte Mäher");
          setState(MOWER_START, true);
          
          // 🟢 WLED GRÜN (Preset 2)
          setState(wledPreset, PRESET_GRUEN);
          
          // 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;
          
                  // 🔴 Wieder ROT (Blinken)
                  setState(wledPreset, PRESET_ROT);
          
                  // 5. Warten bis Mäher in Garage (2 Minuten)
                  await wait(120000);
          
                  // 6. Tor schließen
                  setState(ROLLO, 0);
                  log("🔒 Tor schließt");
          
                  // 7. Zeitfenster prüfen (20–23 Uhr)
                  const hour = new Date().getHours();
          
                  if (hour >= 20 && hour < 23) {
                      // ⚪ Weiß
                      setState(wledPreset, PRESET_WEISS);
                      log("💡 WLED Weiß (Abendmodus)");
                  } else {
                      // 🔌 AUS
                      setState(wledOn, false);
                      log("🌙 WLED aus");
                  }
          
                  running = false;
              }
          });
          

          });

          Jetzt brauche ich nur noch ein Countdown für mein Button zum Starten der mir 120 Sekunden runterzählt bis der Mäher Los legt. Höttest du da eine Lösung noch für mich, wie ich das machen kann ?

          1 Antwort Letzte Antwort
          0
          • T Offline
            T Offline
            tombox
            schrieb zuletzt editiert von
            #5
            // 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';                                                                                                                                                                                                                                             
            const COUNTDOWN = '0_userdata.0.Garage_Maeher_Countdown';                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                            
            // ===== WLED =====                                                                                                                                                                                                                                                                             
            const wledOn = "wled.0.bcddc225fc96.on";                                                                                                                                                                                                                                                        
            const wledPreset = "wled.0.bcddc225fc96.ps";                                                                                                                                                                                                                                                    
            const wledBri = "wled.0.bcddc225fc96.bri";                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                            
            // ===== PRESETS =====                                                                                                                                                                                                                                                                          
            const PRESET_ROT = 1;                                                                                                                                                                                                                                                                           
            const PRESET_GRUEN = 2;                                                                                                                                                                                                                                                                         
            const PRESET_WEISS = 3;                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                            
            // Trigger-Datenpunkt erstellen                                                                                                                                                                                                                                                                 
            createState(TRIGGER, false, {                                                                                                                                                                                                                                                                   
                name: 'Mäher mit Garagentor starten',                                                                                                                                                                                                                                                       
                type: 'boolean',                                                                                                                                                                                                                                                                            
                role: 'button',                                                                                                                                                                                                                                                                             
                read: true,                                                                                                                                                                                                                                                                                 
                write: true                                                                                                                                                                                                                                                                                 
            });                                                                                                                                                                                                                                                                                             
                            
            createState(COUNTDOWN, 0, {                                                                                                                                                                                                                                                                     
                name: 'Countdown Mäher Start',
                type: 'number',                                                                                                                                                                                                                                                                             
                unit: 's',                                                                                                                                                                                                                                                                                  
                read: true,                                                                                                                                                                                                                                                                                 
                write: false                                                                                                                                                                                                                                                                                
            });                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                            
            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;                                                                                                                                                                                                                                                                             
                setState(TRIGGER, false, true);                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                            
                // 1. Tor öffnen                                                                                                                                                                                                                                                                            
                setState(ROLLO, 100);                                                                                                                                                                                                                                                                       
                log("➡️  Tor öffnet");                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                            
                // 🔴 WLED ROT (Blinken Preset 1)                                                                                                                                                                                                                                                           
                setState(wledOn, true);                                                                                                                                                                                                                                                                     
                setState(wledBri, 255);                                                                                                                                                                                                                                                                     
                setState(wledPreset, PRESET_ROT);                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                                                            
                // 2. Countdown 120 Sekunden                                                                                                                                                                                                                                                                
                for (let i = 120; i > 0; i--) {                                                                                                                                                                                                                                                             
                    setState(COUNTDOWN, i);                                                                                                                                                                                                                                                                 
                    await wait(1000);                                                                                                                                                                                                                                                                       
                }                                                                                                                                                                                                                                                                                           
                setState(COUNTDOWN, 0);                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                            
                // 3. Mäher starten                                                                                                                                                                                                                                                                         
                log("🤖 Starte Mäher");                                                                                                                                                                                                                                                                     
                setState(MOWER_START, true);                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                            
                // 🟢 WLED GRÜN (Preset 2)                                                                                                                                                                                                                                                                  
                setState(wledPreset, PRESET_GRUEN);                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                            
                // 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;                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                            
                        // 🔴 Wieder ROT (Blinken)                                                                                                                                                                                                                                                          
                        setState(wledPreset, PRESET_ROT);                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                            
                        // 5. Countdown 120 Sekunden (Tor schließen)                                                                                                                                                                                                                                        
                        for (let i = 120; i > 0; i--) {                                                                                                                                                                                                                                                     
                            setState(COUNTDOWN, i);                                                                                                                                                                                                                                                         
                            await wait(1000);                                                                                                                                                                                                                                                               
                        }                                                                                                                                                                                                                                                                                   
                        setState(COUNTDOWN, 0);                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                            
                        // 6. Tor schließen                                                                                                                                                                                                                                                                 
                        setState(ROLLO, 0);                                                                                                                                                                                                                                                                 
                        log("🔒 Tor schließt");                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                            
                        // 7. Zeitfenster prüfen (20–23 Uhr)                                                                                                                                                                                                                                                
                        const hour = new Date().getHours();                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                            
                        if (hour >= 20 && hour < 23) {                                                                                                                                                                                                                                                      
                            // ⚪ Weiß                                                                                                                                                                                                                                                                      
                            setState(wledPreset, PRESET_WEISS);                                                                                                                                                                                                                                             
                            log("💡 WLED Weiß (Abendmodus)");                                                                                                                                                                                                                                               
                        } else {                                                                                                                                                                                                                                                                            
                            // 🔌 AUS                                                                                                                                                                                                                                                                       
                            setState(wledOn, false);                                                                                                                                                                                                                                                        
                            log("🌙 WLED aus");                                                                                                                                                                                                                                                             
                        }                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                            
                        running = false;                                                                                                                                                                                                                                                                    
                    }       
                });                                                                                                                                                                                                                                                                                         
            });
            
            1 Antwort Letzte Antwort
            0
            • K Online
              K Online
              Kippe
              schrieb zuletzt editiert von
              #6

              Super Danke 🙏
              Muss ich denn noch ein Widget haben, der mir den Countdown anzeigt. Wenn ja welches mit welchen Einstellungen?

              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              571

              Online

              32.7k

              Benutzer

              82.6k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe