Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [Frage] Xiaomi Vacuum cleaner

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Frage] Xiaomi Vacuum cleaner

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      ltsalvatore last edited by

      ich muss auch noch mal in die runde frage..
      gibt es mittlerweile eine lösung zu dem problem, dass sich die karte immer um 90 grad dreht bei dem vacuum 1?
      würde gerne endlich mal die zonenreinigung in iobroker einrichten.

      1 Reply Last reply Reply Quote 0
      • B
        Bluelightcrew @dali3 last edited by

        @dali3

         if (v_Error === 0) v_Text = "no Error";
         if (v_Error === 1) v_Text = "Laser distance sensor error";
         if (v_Error === 2) v_Text = "Collision sensor error";
         if (v_Error === 3) v_Text = "Wheels on top of void, move robot";
         if (v_Error === 4) v_Text = "Clean hovering sensors, move robot";
         if (v_Error === 5) v_Text = "Clean main brush";
         if (v_Error === 6) v_Text = "Clean side brush";
         if (v_Error === 7) v_Text = "Main wheel stuck?";
         if (v_Error === 8) v_Text = "Device stuck, clean area";
         if (v_Error === 9) v_Text = "Dust collector missing";
         if (v_Error === 10) v_Text = "Clean filter";
         if (v_Error === 11) v_Text = "Stuck in magnetic barrier";
         if (v_Error === 12) v_Text = "Low battery";
         if (v_Error === 13) v_Text = "Charging fault";
         if (v_Error === 14) v_Text = "Battery fault";
         if (v_Error === 15) v_Text = "Wall sensors dirty, wipe them";
         if (v_Error === 16) v_Text = "Place me on flat surface";
         if (v_Error === 17) v_Text = "Side brushes problem, reboot me";
         if (v_Error === 18) v_Text = "Suction fan problem";
         if (v_Error === 19) v_Text = "Unpowered charging station";
        1 Reply Last reply Reply Quote 0
        • juergen2908
          juergen2908 @Nitro25NOH last edited by

          @Nitro25NOH Wie hast du genau in deiner VIS gemacht, damit du einfach nur die Zonen anhacken musst? Lg Jürgen

          B 1 Reply Last reply Reply Quote 0
          • B
            Brati @juergen2908 last edited by

            @juergen2908

            VIS alleine schafft das nicht. Wenn du immer nur eine Zone reinigen möchtest, kannst du per VIS Button den Befehl in den State "mihome-vacuum.0.control.zoneClean" schreiben. Ansonsten musst du das per Script zusammen basteln:

            Zwischenablage01.jpg

            Diese View steuert das Script.

            var IDRobo      =   "mihome-vacuum.0.control.X_send_command"/*send command*/,
                IDFan       =   "mihome-vacuum.0.control.fan_power"/*Suction power*/,
                IDGoTo      =   "mihome-vacuum.0.control.goTo"/*Go to point*/,
                IDZoneClean =   "mihome-vacuum.0.control.zoneClean"/*Clean a zone*/,
                IDCarpet    =   "mihome-vacuum.0.control.carpet_mode"/*Carpet mode*/,
                IDStartClean=   'mihome-vacuum.0.control.start'/*Start vacuum*/,
                Zone1       =   "[26100,24500,29500,29000,1]", // Wohnzimmer incl. Teppich bis Terrasse
                Zone2       =   "[22500,25200,26000,29000,1]", // Wohnzimmer Teppichkante bis Tür
                Zone3       =   "[22500,25200,25900,26350,1]",// Wohnzimmer nur Laufbereich bis Teppichkante
                Zone3a      =  "[22500,25500,23100,28500,1]",// Wohnzimmer nur Laufbereich vor der Küche
                Zone4       =   "[18600,27050,22500,28600,1]", // Küche komplett
                Zone4a      =   "[18600,27250,22250,28600,1]", // Küche Laufbereich
                Zone5       =   "[18500,24800,22500,26650,1]", // Flur komplett
                Zone6       =   "[21400,25000,22500,26700,1]", // Flur nur bis Treppe
                ZoneP       =   "app_goto_target; [20400,27600]", // vor dem Mülleimer parken
                Zone        =   "",
                Timertaeglich,
                Logging     =   true,
                tag         =   new Date().getDay(), 
                          
                Urlaub, timer, Gaeste, Anwesen, Verlass, KinderD, Tuer, Morjens, Morjenslos, TuerSchlaf, Feier      =   false;
                
            // setState(IDRobo, "app_zoned_clean;[" + Zone4a + "]"); // Zone testen
            // setState(IDRobo, ZoneP);                             // Zielpunkt testen
            
            /*app_zoned_clean;[[27200,28800,28300,32700,1]] unten links, oben rechts, Anzahl */
            
            /* Zusammensetzen der Zonen für die Reinigung */
            function RZone(){
                    Zone        =   "";        
                    if (getState("javascript.0.Roborock.Zone1").val) Zone = Zone1;
                    if (getState("javascript.0.Roborock.Zone2").val && Zone !=="") Zone = Zone + "," + Zone2;
                    if (getState("javascript.0.Roborock.Zone2").val && Zone ==="") Zone = Zone2;
                    if (getState("javascript.0.Roborock.Zone3").val && Zone !=="") Zone = Zone + "," + Zone3;
                    if (getState("javascript.0.Roborock.Zone3").val && Zone ==="") Zone = Zone3;
                    if (getState("javascript.0.Roborock.Zone4").val && Zone !=="") Zone = Zone + "," + Zone4;
                    if (getState("javascript.0.Roborock.Zone4").val && Zone ==="") Zone = Zone4;
                    if (getState("javascript.0.Roborock.Zone5").val && Zone !=="") Zone = Zone + "," + Zone5;
                    if (getState("javascript.0.Roborock.Zone5").val && Zone ==="") Zone = Zone5;
                
               Zone= "app_zoned_clean;[" + Zone + "]";
            }
            
                
            /* aktuelle Randbedingungen abfragen */
            function VarStatus(){
                Urlaub  = getState("hm-rega.0.2638"/*Urlaub*/).val;
                Gaeste  = getState("hm-rega.0.3469"/*Gaeste*/).val;
                Anwesen = getState("hm-rega.0.7028"/*Anwesenheit*/).val;
                Verlass = getState("hm-rega.0.13102"/*Verlassen*/).val;
                KinderD = getState("hm-rega.0.25633"/*Kinderdienst*/).val;
                Tuer    = getState("hm-rpc.0.LEQ1468275.1.STATE"/*Wohnzimmer Kontakt Tuer.STATE*/).val;
                Feier   = getState("feiertage.0.heute.boolean"/*Feiertag heute?*/).val;
                tag     = new Date().getDay();
                Morjens = getState("javascript.0.Roborock.Morjens").val;
            }
            
            
            /* Zone auf Abruf in Vis */
            on({id: new RegExp('javascript\\.0\\.Roborock\\.Zone1' + "|" + 'javascript\\.0\\.Roborock\\.Zone2' + "|" + 'javascript\\.0\\.Roborock\\.Zone3' + "|" + 'javascript\\.0\\.Roborock\\.Zone4' + "|" + 'javascript\\.0\\.Roborock\\.Zone5'), val: true}, function (obj) {
                
                if (timer) clearTimeout(timer);
                timer = setTimeout(function () {
                    RZone();
                    setState(IDFan, 77);
                    setState(IDCarpet, true);
                    setState(IDRobo, Zone);
                    setState("javascript.0.Roborock.Zone1", false);
                    setState("javascript.0.Roborock.Zone2", false);
                    setState("javascript.0.Roborock.Zone3", false);
                    setState("javascript.0.Roborock.Zone4", false);
                    setState("javascript.0.Roborock.Zone5", false);
                    }, 10000);
            });
            
            
            
            /* tägliche Reinigung alles*/
            
            function TimerSetzen(value) {
                value   = value.split(":");
            var time    = value[1] + " " + value[0] + " * * *"; 
                log("täglicher Zeit: " + time);
                Timertaeglich   =   schedule(time, function (){
                    Reinigungtaegl ();
                });
            };
            
            on({id: 'javascript.0.Roborock.Timer.Time', change: "ne"}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                TimerSetzen(value);
                clearSchedule(Timertaeglich);
            });
            
            TimerSetzen(getState('javascript.0.Roborock.Timer.Time').val);
            
            function Reinigungtaegl() {
                VarStatus();
                
                if (!Urlaub && getState("javascript.0.Roborock.Timer." + tag).val) {
                    setState(IDFan, 77);
                    setState(IDCarpet, true);
                    setState(IDStartClean, true);
                    sendTo("pushover.0", {
                            message:  'tägliche Reinigung!', // mandatory - your text message
                            title:    'Roborock', // optional  - your message's title, otherwise your app's name is used
                            priority: -1,});
                }
            };
            
            /* früh den Laufbereich */
            schedule("30 4 * * 1-5", function () {
                Morjenslos = true;
                });
            
            schedule("30 8 * * 1-5", function () {
                Morjenslos = false;
                });
            
            on({id: 'mihome.0.devices.magnet_158d0002bf95de.state'/*Is opened*/, val: false}, function (obj) {    
                VarStatus();
                MorjensReinigung();
            });
            
            function MorjensReinigung(){
                if (!Urlaub && !Feier && !Tuer && !Gaeste && Morjens && Morjenslos) {
                    Zone        =   "app_zoned_clean;[" + Zone4a + "," + Zone3a + "," + Zone3 + "," + Zone6 + "]";
                    Morjenslos = false;
                    setState(IDFan, 60);
                    setState(IDCarpet, false);
                    setState(IDRobo, Zone);
                }
            }
            
            
            createState('Roborock.Timer.1', false,{type: "boolean",name:"Montag",  role: "Montag"});
            createState('Roborock.Timer.2', false,{type: "boolean",name:"Dienstag",  role: "Dienstag"});
            createState('Roborock.Timer.3', false,{type: "boolean",name:"Mittwoch",  role: "Mittwoch"});
            createState('Roborock.Timer.4', false,{type: "boolean",name:"Donnerstag",  role: "Donnerstag"});
            createState('Roborock.Timer.5', false,{type: "boolean",name:"Freitag",  role: "Freitag"});
            createState('Roborock.Timer.Time', "14:00:00",{type: "string",name:"Startzeit",  role: "Startzeit"});
            createState('Roborock.Zone1', false,{type: "boolean",name:"Zone 1",  role: "Wz incl Teppich bis Terrasse"});
            createState('Roborock.Zone2', false,{type: "boolean",name:"Zone 2",  role: "Wz ab Teppich bis Tür"});
            createState('Roborock.Zone3', false,{type: "boolean",name:"Zone 3",  role: "Wz Laufbereich"});
            createState('Roborock.Zone4', false,{type: "boolean",name:"Zone 4",  role: "Küche komplett"});
            createState('Roborock.Zone5', false,{type: "boolean",name:"Zone 5",  role: "Flur komplett"});
            createState('Roborock.Zone6', false,{type: "boolean",name:"Zone 6",  role: "Flur vor der Treppe"});
            createState('Roborock.Morjens', true,{type: "boolean",name:"Morjens reinigen",  role: "Morjens reinigen"});
            
            

            Man kann die Zonen wählen, alles reinigen, die tägliche Reinigung einstellen...

            Ich habe schon ein paar Dinge rausgelöscht, morgens reinigen triggert zum Beispiel die Schlafzimmertür, erst wenn der Erste aufgestanden ist und diese geschlossen wird, düst er los...

            Grüße

            Brati

            F 1 Reply Last reply Reply Quote 0
            • S
              sabphil22 last edited by sabphil22

              Hi, ich hab ein Problem bei der Zonenreinigung. Einige Zonen werden ganz normal angesteuert und werden mir auch richtig in der App angezeigt. Bei zwei Zimmer, die nebeneinander liegen wird keine Zonen in der App angezeigt. Er fängt dann mit einer kompletten Reinigung an.
              Hab schon probiert die Zimmer in mehrere Zonen zu unterteilen um nicht über die Wände zu kommen. Ist es richtig wenn ich die einzelnen Zonen mit Komma und Leerzeichen trenne?

              Grüße Philippe

              1 Reply Last reply Reply Quote 0
              • F
                fischmir @Brati last edited by

                @Brati Kannst du mir deine log()-Methode schicken? (Skriptfehler)... danke!

                B 1 Reply Last reply Reply Quote 0
                • B
                  Brati @fischmir last edited by

                  @fischmir sagte in [Frage] Xiaomi Vacuum cleaner:

                  @Brati Kannst du mir deine log()-Methode schicken? (Skriptfehler)... danke!

                  Welche log Methode meinst du? Die Variable logging lege ich bei der Entwicklung immer mit an, hab sie hier aber gar nicht verwendet.

                  Das Script stark vereinfacht, habe ich hier noch mal gepostet

                  https://forum.iobroker.net/post/256428

                  Grüße Brati

                  1 Reply Last reply Reply Quote 0
                  • F
                    fabian.krauss @looxer01 last edited by

                    @looxer01 said in [Frage] Xiaomi Vacuum cleaner:

                    @Meistertr:

                    jedoch hat man hier keine Einfluss auf die formatierung oder liege ich da falsch? Über Dass Html widget ist es alles super formatiert.. `

                    Man kann auch formatieren aber weniger flexibel. Dafuer ist es aber sehr einfach einzubinden und anzupassen.

                    Mit der Formatierung des HTML Widgets habe ich ein Problem. Die Spalte "Flaeche" läuft ueber und wird daher zweizeilig dargestellt.

                    Die Schrift laesst sich zwar verkleinern, allerdings muss sie so klein dargestellt werden, dass es kaum noch lesbar ist.

                    und 1000 Dank fuer deine Muehe den View mit allem drum und dran zur Verfuegung zu stellen. So konnte ich relativ schnell meine Anpassungen vornehmen: siehe unten.

                    Dort siehst du auch das Formatierungsproblem mit dem HTML Widget.

                    305_robert.jpg

                    Kann mir jemand zu dieser Frage die Lösung/Antwort sagen? Der Thread geht ja sehr durcheinander

                    S 1 Reply Last reply Reply Quote 0
                    • F
                      FloJo last edited by

                      Hallo Zusammen,
                      Ich habe mittlerweile auch den Roboter in iobroker eingefügt und beschäftige mich jetzt mit der Zonenreinigung. Leider wird bei mir unter dem Adapter nur Spotcleaning und kein zoneclean unter control angezeigt. Hat jemand ne Ahnung woran das liegt und kann mir helfen?

                      Danke
                      Flo

                      O 1 Reply Last reply Reply Quote 0
                      • O
                        oetti @FloJo last edited by

                        @FloJo sagte in [Frage] Xiaomi Vacuum cleaner:

                        Hallo Zusammen,
                        Ich habe mittlerweile auch den Roboter in iobroker eingefügt und beschäftige mich jetzt mit der Zonenreinigung. Leider wird bei mir unter dem Adapter nur Spotcleaning und kein zoneclean unter control angezeigt. Hat jemand ne Ahnung woran das liegt und kann mir helfen?

                        Danke
                        Flo

                        Bei SpotCleaning dreht der Roboter nur eine Runde um sich selbst (glaube ich zumindest).
                        Probier mal "ZoneClean" aus und gib eine Zone in der Form [x1,y1,x2,y2,i] ein.

                        x1,y1 = Koordinaten linke untere Ecke
                        x2,y2 = Koordinaten rechte obere Ecke
                        i = Anzahl Reinigungen

                        Basis hat immer 25500 (x), 25500 (y) als Ausgangskoordinaten.

                        Gruß
                        oetti

                        1 Reply Last reply Reply Quote 0
                        • L
                          Leviathan09 last edited by

                          Wie bekommt ihr das hin das der Vacuum V1 mehrere Zonen nacheinander reinigt?
                          Ich habe aktuell die Firmware 3.3.9.3600 mit Valetudo 0.3.1 am laufen.
                          Habe mir nun über das Valetudo Webinterface meinen Zonen angelegt (die Koordinaten stehen in der /config.json)
                          Wähle ich nun z.B. meine Zone Flur aus, welche aus zwei kleinen Zonen besteht, über das Webinterface aus funktioniert die Reinigung perfekt.
                          Gebe ich die gleichen Koordinaten über den iobroker unter "ZoneClean" ein fährt der Robo kurz nach vorne, bricht dann ab und fährt ans Dock zurück.

                          B 1 Reply Last reply Reply Quote 0
                          • B
                            Brati @Leviathan09 last edited by Brati

                            @Leviathan09

                            Du musst die Zonen in [] und mit "," getrennt übergeben, also:

                            app_zoned_clean;[[27200,28800,28300,32700,1],[21400,25000,22500,26700,1]]
                            

                            Das setzt du im State "mihome-vacuum.0.control.X_send_command".

                            Wenn die Koordinaten nicht stimmen, fährt er natürlich auch nicht.

                            Grüße

                            Brati

                            L 1 Reply Last reply Reply Quote 0
                            • L
                              Leviathan09 @Brati last edited by

                              @Brati
                              Moin Brati,

                              leider funktioniert das so nicht bei mir. Wenn ich exakt die Koordinaten aus Valetudo übernehme fährt er wie beschrieben nur kurz nach vorne und bricht dann ab.
                              Komischerweise funktionieren diese Koordinaten jedoch über Valetudo direkt.
                              Ich frage mich wo da nun der Fehler liegt.

                              Habe das gerade nochmal mit meiner Küche getestet...
                              Reinigung über Valetudo angestoßen, kein Problem
                              Reinigung mit den gleichen Koordinaten über X_send_command wie von dir Beschrieben, passiert nichts

                              A 1 Reply Last reply Reply Quote 0
                              • A
                                Ash2k @Leviathan09 last edited by

                                @Leviathan09
                                schau mal ob du zwei Klammern [ bzw. ] hast. Eine davon muss jeweils entfernt werden, dann sollte er auch weiterlaufen.

                                L 1 Reply Last reply Reply Quote 0
                                • L
                                  Leviathan09 @Ash2k last edited by

                                  @Ash2k
                                  Ich habe es jetzt mit allen Varianten die ich irgendwo gelesen habe versucht.
                                  unter x_send_command als auch zone clean

                                  1. app_zoned_clean;[[25758,26857,26643,28798,1]]
                                  2. app_zoned_clean;[25758,26857,26643,28798,1]
                                  3. [[25758,26857,26643,28798,1]]
                                  4. [25758,26857,26643,28798,1]
                                  5. 25758,26857,26643,28798,1

                                  Und das ganze auch mit mehreren Zonen:

                                  1. app_zoned_clean;[[25105,30813,26652,34238,1],[25105,30829,27941,31777,1]]
                                  2. app_zoned_clean;[25105,30813,26652,34238,1],[25105,30829,27941,31777,1]
                                  3. [[25105,30813,26652,34238,1],[25105,30829,27941,31777,1]]
                                  4. [25105,30813,26652,34238,1],[25105,30829,27941,31777,1]

                                  Nichts davon führt zu dem gewünschten Ergebnis.

                                  Habe den Vacuum nun auch mal über MQTT eingebunden, aber auch da komme ich einfach nicht weiter.
                                  Kann über MQTT nicht mal ganz normal eine Reinung starten.
                                  Ich bin einfach zu blöd dafür, für heute mache ich wohl feierabend und versuche es morgen oder so nochmal.

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    Brati last edited by

                                    Wird bei Valetudo der Robi geflasht? Wenn ja, könnte es ja auch daran liegen...

                                    L 1 Reply Last reply Reply Quote 0
                                    • L
                                      Leviathan09 @Brati last edited by

                                      @Brati Ja, der Roboter wird geflasht und gerootet, aber das ist denke ich nicht das Problem.

                                      Ich habe es hinbekommen über meinen ioBroker einen PUT Befehl an den Roboter zu senden​ um die Zonen Reinigung zu starten.

                                      curl -X PUT -H 'Content-Type: application/json' -d '[25639,22893,26539,23672,1]' http://IP-Roboter/api/start_cleaning_zone
                                      

                                      Nun habe ich aber folgendes Problem, obwohl ich ihm im Befehl die gleichen Koordinaten übergebe wie sie auch auf dem Roboter unter der entsprechenden Zone gespeichert sind, macht er nichts....Bzw fährt nur ein halben Meter nach vorne um direkt wieder an die Station zu fahren.

                                      Starte ich die Zonen Reinigung jedoch über das Valetudo Webinterface funktioniert alles problemlos.

                                      Es muss doch irgendwie machbar sein das ich dem Roboter sagen kann er soll eine bestimmte Zone reinigen ohne das Webinterface aufzurufen.

                                      Ich würde das gerne in meine VIS mit einbinden damich alles über mein Tablet bedienen kann.

                                      Hat sich noch keiner mit Valetudo befasst und hat evtl. einen Tipp oder eine Idee?

                                      N 1 Reply Last reply Reply Quote 0
                                      • G
                                        GeorgS last edited by GeorgS

                                        Hallo Leute,

                                        ich versuche grade meine Zonen Reinigung zu realisieren. Ich habe mein Skript so weit fertig und wollte jetzt die erste Zone Testen.

                                        Jetzt habe ich aber das Problem das der Robi auserhalb der Zone und nicht die ganze Zone reinigt...

                                        AuserhalbderZone.JPG

                                        Der Befehl: app_zoned_clean;[[21889,24308,26084,28057,1]]

                                        Woran kann das liegen, sollte ich noch mal den Robi zurücksetzten und neu aufsetzten?

                                        Meistertr 1 Reply Last reply Reply Quote 0
                                        • Meistertr
                                          Meistertr Developer @GeorgS last edited by

                                          @GeorgS die zonen die du bei valetudo sehen kannst, sind nicht die korrekten Koordinaten. Schau mal bei valetudo auf git in den issues dort steht es irgendwo.

                                          G 1 Reply Last reply Reply Quote 0
                                          • G
                                            GeorgS @Meistertr last edited by

                                            @Meistertr OK danke... naja ich habe mein Robi erst mal komplett zurückgesetzt und neu eingerichtet mit der Xiaomi App jetzt läuft es erst mal 😄

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            961
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            204
                                            2196
                                            784366
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo