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

  • wichtiges UPDATE fĂŒr controller 7.2.2 im stable
    HomoranH
    Homoran
    9
    1
    645

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    3.0k

  • Neuer ioBroker-Blog online: MonatsrĂŒckblick MĂ€rz/April 2026
    BluefoxB
    Bluefox
    8
    1
    3.0k

Navimow Steuerung ioBroker

Geplant Angeheftet Gesperrt Verschoben JavaScript
7 BeitrÀge 2 Kommentatoren 255 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 Offline
    K Offline
    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 Offline
        K Offline
        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 Offline
          K Offline
          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 am 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 Offline
              K Offline
              Kippe
              schrieb am 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
              • K Offline
                K Offline
                Kippe
                schrieb am zuletzt editiert von
                #7

                Hallo Tombox đŸ™‹â€â™‚ïž
                Kannste mir wohl noch sagen welches Widget ich haben muss mit welchen Einstellungen fĂŒr den Countdown in der IoBroker Vis

                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

                550

                Online

                33.0k

                Benutzer

                83.3k

                Themen

                1.3m

                BeitrÀge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2026
                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