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.
    • S
      seppel786 @der-eine last edited by

      @der-eine

      Kurze Frage zum Verständnis - Warum machst du diese Abfrage?

      27ca7bee-2818-49af-a5ef-08be63536208-grafik.png

      D 2 Replies Last reply Reply Quote 0
      • D
        der-eine @seppel786 last edited by

        @seppel786 da wird geprüft, ob der Roboter nach 60 min immer noch läuft. Wenn ja hängt er irgendwo und soll stehen bleiben. Das hab ich hin und wieder wenn er am Eck vom Teppich hängen bleibt. Leider ist mit der Zonenreinigung die Intelligenz beim Teufel...

        1 Reply Last reply Reply Quote 0
        • Knallochse
          Knallochse last edited by Knallochse

          Edit: Beitrag im neuen Vacuum Adapter 2.0 gepostet (verschoben)
          https://forum.iobroker.net/post/445731

          1 Reply Last reply Reply Quote 0
          • D
            der-eine @seppel786 last edited by

            @seppel786 der Richtigkeit halber sollte der timeout4 gestoppt werden wenn der Status 8 ist.

            Bildschirmfoto 2020-06-07 um 20.35.07.png

            1 Reply Last reply Reply Quote 0
            • E
              elisonbold last edited by elisonbold

              All vacuum cleaners operate based on air flowing from the opening at the cleaning head or tool, through the best and most powerful canister vacuum and the bag and/or filter system and then out the exhaust port.

              1 Reply Last reply Reply Quote 0
              • J
                JohnnyBahama last edited by

                Wie habt ihr das gelöst, dass es eine Rückmeldung gibt, dass der Roboter fertig ist mit der Reinigung? Ich sehe keinen Datenpunkt dazu

                D M 2 Replies Last reply Reply Quote 0
                • D
                  der-eine @JohnnyBahama last edited by

                  @JohnnyBahama mit was willst Du darauf reagieren? Willst wissen wann er fertig ist und das in der Vis anzeigen oder andere Aktion starten?

                  J 1 Reply Last reply Reply Quote 0
                  • M
                    Marty56 @JohnnyBahama last edited by

                    @JohnnyBahama

                    //-------- Klasse zur wiederholten Ausgabe von Warnungen auf den Lautsprechern -----
                    function sleep(ms) {
                      return new Promise(resolve => setTimeout(resolve, ms));
                    }
                    
                    class Repeat_Warning {
                      constructor() {
                        this.text = "";
                        this.duration = 0;
                        this.repeat = true;
                        this.first_duration = 0;
                      }
                      start(text,duration,first_duration) {
                        this.text = text;
                        this.duration = duration * 60000;  
                        this.repeat = true;
                        if (first_duration != undefined) this.first_duration = first_duration* 60000;
                        (async () => {
                            if (this.first_duration != 0) await sleep(this.first_duration);
                            while (this.repeat) {
                                setState("speechout",JSON.stringify({text:this.text,device:"ALL",vol:70}));
                                await sleep(this.duration);
                            }
                        })();
                      }
                    
                      stop() {
                        this.repeat = false;
                      }
                    }
                    /*
                    ---------------------------- Status Meldungen ----------------------------------
                    Ausgabe von Telegram und Sprachnachricht, wenn Staubsauger Reinigung abge-
                    schlossen hat.
                    
                      "states": {
                          "0": "Unknown",
                          "1": "Initiating",
                          "2": "Sleeping",
                          "3": "Waiting",
                          "4": "?",
                          "5": "Cleaning",
                          "6": "Back to home",
                          "7": "Manuell mode",
                          "8": "Charging",
                          "9": "Charging Error",
                          "10": "Pause",
                          "11": "Spot Cleaning",
                          "12": "In Error",
                          "13": "Shutting down",
                          "14": "Updating",
                          "15": "Docking",
                          "16": "Going to Spot",
                          "17": "Zone cleaning",
                          "18": "Room cleaning"
                        }
                    */
                    
                    var vacuum_states =   {
                          "0": "hat einen unbekannten Status",
                          "1": "wird initialisiert",
                          "2": "schäft",
                          "3": "wartet",
                          "4": "?",
                          "5": "reinigt",
                          "6": "geht zur Docking Station",
                          "7": "ist im manuellen Modus",
                          "8": "wird geladen",
                          "9": "hat einen Ladefehler",
                          "10": "hat Pause",
                          "11": "führt Punkt Reinigung durch",
                          "12": "hat einen Fehlerzustand",
                          "13": "wird heruntergefahren",
                          "14": "wird upgedatet",
                          "15": "verbindet sich mit der Docking Station",
                          "16": "geht zum Zielpunkt",
                          "17": "reinigt den ausgewählten Bereich",
                          "18": "reinigt den Raum"
                        };
                    
                    var sauger_path = "javascript.0.sauger.";
                    var sauger_status = sauger_path + "status";
                    createState(sauger_status,'');
                    
                    on({id:"mihome-vacuum.0.info.state", change: 'ne'}, function(obj) {
                        var state = getState("mihome-vacuum.0.info.state").val; 
                        if ((state >= 0) && (state <= 18)) {
                            setState(sauger_status,vacuum_states[state]);
                            setState("speechout",JSON.stringify({text:"Staubsauger " + vacuum_states[state] + '!',device:"HausohneKZ",vol:70}));
                        }
                    });
                    
                    //------------------------- Fehler beim Reinigen ----------------------------------
                    //Einmalige Benachrichtung per Telegram und wiederholte Ausgabe von Sprach-
                    //nachricht, dass Staubsauger einen Fehler hat
                    /*
                       "states": {
                          "0": "No error",
                          "1": "Laser distance sensor error",
                          "2": "Collision sensor error",
                          "3": "Wheels on top of void, move robot",
                          "4": "Clean hovering sensors, move robot",
                          "5": "Clean main brush",
                          "6": "Clean side brush",
                          "7": "Main wheel stuck?",
                          "8": "Device stuck, clean area",
                          "9": "Dust collector missing",
                          "10": "Clean filter",
                          "11": "Stuck in magnetic barrier",
                          "12": "Low battery",
                          "13": "Charging fault",
                          "14": "Battery fault",
                          "15": "Wall sensors dirty, wipe them",
                          "16": "Place me on flat surface",
                          "17": "Side brushes problem, reboot me",
                          "18": "Suction fan problem",
                          "19": "Unpowered charging station"
                        }
                    */
                    
                    var vacuum_error_states = {
                          "0": "Es liegt kein Fehler vor.",
                          "1": "Laserabstandsmessung hat einen Fehler.",
                          "2": "Der Kollisionssensor hat einen Fehler.",
                          "3": "Die Räder sind auf der Spitze eines Hindernisses.",
                          "4": "Die Sensoren zur Stufenerkennung sind unsauber.",
                          "5": "Die Hauptbürste muss gereinigt werden.",
                          "6": "Die Seitenbürste muss gereinigt werden.",
                          "7": "Das Hauptantriebsrad ist verklemmt.",
                          "8": "Der Staubsauger ist verklemmt.",
                          "9": "Der Staubbehälter fehlt.",
                          "10": "Der Filter muss gereinigt werden.",
                          "11": "Ein magnetisches Hindernis hat blockiert.",
                          "12": "Der Akku hat keine Ladung.",
                          "13": "Das Laden ist fehlerhaft.",
                          "14": "Der Akku hat einen Fehler.",
                          "15": "Die Wandsensoren sind schmutzig und müssen gereinigt werden.",
                          "16": "Der Untergrund ist zu steil.",
                          "17": "Die Seitebürste hat ein Problem. Staubsauger neustarten!",
                          "18": "Der Saugventilator hat ein Problem.",
                          "19": "Die Ladestation hat keinen Strom."
                        };
                        
                    
                    var sauger_error = sauger_path + "error";
                    createState(sauger_error,'');
                    var Saugerladen_Fehler = new Repeat_Warning();
                    
                    on({id:"mihome-vacuum.0.info.error", change: 'ne'}, function(obj) {
                        var state = getState("mihome-vacuum.0.info.error").val; 
                        if ((state >= 1) && (state <= 19)) {
                            setState(sauger_error,vacuum_error_states[state]);
                            Saugerladen_Fehler.start("Staubsaugerfehler: " + vacuum_error_states[state] + '!',15);
                        } else if (state == 0) {
                            Saugerladen_Fehler.stop();
                            setState(sauger_error,vacuum_error_states[state]);
                        }
                    });
                    
                    //------------------------- Verschleißteile melden ----------------------------------
                    //Einmalige Benachrichtung per Telegram bei verschleiß
                    var sauger_wearout = "javascript.0.sauger.wearout";
                    createState(sauger_wearout,'');
                    
                    function wearout(id,text) {
                        if (getState(id).val < 5) {
                            setState("speechout",JSON.stringify({text:text,device:"HausohneKZ",vol:70}));
                            setState('Botschaft', text);
                            setState(sauger_wearout, text);
                        } else 
                            setState(sauger_wearout, "OK");
                    }
                    
                    on({id:"mihome-vacuum.0.consumable.filter", change: 'ne'}, function(obj) {
                        wearout("mihome-vacuum.0.consumable.filter","Der Filter ist verschlissen!");
                    });
                    
                    on({id:"mihome-vacuum.0.consumable.main_brush", change: 'ne'}, function(obj) {
                        wearout("mihome-vacuum.0.consumable.main_brush","Die Hauptbürste ist verschlissen!");
                    });
                    
                    on({id:"mihome-vacuum.0.consumable.sensors", change: 'ne'}, function(obj) {
                         wearout("mihome-vacuum.0.consumable.sensors","Die Sensoren müssen gereinigt werden!");
                    });
                    
                    on({id:"mihome-vacuum.0.consumable.side_brush", change: 'ne'}, function(obj) {
                        wearout("mihome-vacuum.0.consumable.side_brush","Die Seitenbürste ist verschlissen!");
                    });
                    
                    //----------------------- Warnung Saubsauger zu lange online  -----------------------
                    
                    var Sauger_lange_an = new Repeat_Warning();
                    
                    on({ id: "mihome-vacuum.0.info.connection", change: 'gt' }, function (obj) {
                        Sauger_lange_an.start("Der Staubsauger sollte abgeschaltet werden!",30,5*60)
                        setState(sauger_status,'online');
                    });
                    
                    on({ id: "mihome-vacuum.0.info.connection", change: 'lt' }, function (obj) {
                        Sauger_lange_an.stop();
                        Saugerladen_zu_ende_warning.stop();
                        setState(sauger_path + "Putzdatum",new Date().toISOString().slice(0,10));
                        past();
                        setState(sauger_status,'offline');
                    });
                    
                    //------------------------- Laden abgeschlossen ----------------------------------
                    
                    var Saugerladen_zu_ende_warning = new Repeat_Warning();
                    on({id:"mihome-vacuum.0.info.battery", change: 'ne'}, function(obj) {
                        if (getState("mihome-vacuum.0.info.battery").val === 100)
                            Saugerladen_zu_ende_warning.start("Der Staubsauger ist aufgeladen und kann abgeschaltet werden!",30);
                    });
                    
                    //------------------------- Putzdatum und vergangene Zeit aktualisieren ----------
                    
                    createState(sauger_path + "Putzdatum",'2020-05-01');
                    createState(sauger_path + "Putzdatum_formatiert",'am 01.05.2020 (vor 1 Tagen)');
                    
                    function past() {
                        var last_date        = getState(sauger_path + "Putzdatum").val;
                        var last_date_format = last_date.slice(0,10).split("-");
                        var last_date_german = last_date_format[2] + "." + last_date_format[1] + "." + last_date_format[0];
                        var vergangen        = Math.floor((new Date().getTime() - new Date(last_date).getTime())/(24*60*60*1000));
                        setState(sauger_path + "Putzdatum_formatiert",last_date_german + " vor " + vergangen + " Tagen");
                    }
                    past();
                    on({time: {hour: 10, minute: 0}}, function(obj){past()});
                    
                    J 1 Reply Last reply Reply Quote 0
                    • J
                      JohnnyBahama @der-eine last edited by JohnnyBahama

                      @der-eine Ich habe mir ein zyklisches blockly gebaut, indem der Sauger nur läuft wenn keiner zu Hause ist und mehr als 48Std nach der letzten komplett Reinigung vergangen sind. Jetzt kann es vorkommen, dass jemand während der Reinigung nach Hause kommt und dadurch der Sauger seinen Dienst unterbricht, indem er wieder zur Station geschickt wird mit GoHome Datenpunkt. Nachteil, er kann nicht mehr losgeschickt werden, um dort weiter zu machen, wo er aufgehört hat.
                      Leider hat sich der selbsterstellte Datenpunkt ´Wohnung gereinigt` wegen dem Startskript schon auf true gesetzt, also fährt er kein zweites Mal raus bis wieder alle Bedingungen erfüllt sind. Was dazu führt, das er erst wieder in zwei tagen fährt. Daher würde ich den Datenpunkt Wohnung gereingt vom Roboter haben wollen, um eine Prüfsumme zu haben.

                      Momentan probiere ich rum und glaube ich könnte es umgehen, wenn ich ihn erst an eine Koordinate schicke und dann auf Pause setze. Aber auch hier müsste ich dann wissen, wann er fertig ist, um die nächste Startzeit zu bekommen.

                      D 1 Reply Last reply Reply Quote 0
                      • J
                        JohnnyBahama @Marty56 last edited by JohnnyBahama

                        @Marty56 Bin in Java nicht so fit, aber ich versuch mich mal reinzufuchsen. Danke dir.

                        Edit: Ich habe mir das mal angeschaut, sehe aber auch dort keinen Punkt indem der Roboter die Meldung sendet: Reinigung abgeschlossen.

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          Marty56 @JohnnyBahama last edited by Marty56

                          @JohnnyBahama Stimmt!
                          Der Staubsauger sagt nur, dass er wieder im Standby oder auch an der Dockingstation ist, wenn er mit der Reinigung fertig ist.

                          Man müsste sich also eine kleine Statemachine programmieren, die erst bemerkt, dass der Staubsauger reinigt (das wird ja auch signalisiert) und wenn dann die Meldung kommt, dass Staubsauger in Standby oder an der Dockingstation ist, könnte "Wohnung gereinigt" ausgeben.

                          1 Reply Last reply Reply Quote 0
                          • D
                            der-eine @JohnnyBahama last edited by der-eine

                            @JohnnyBahama um festzustellen ob die ganze Wohnung gereinigt wurde, habe ich die gereinigten qm2 angeschaut. Wenn die über wert x waren, dann wurde die ganze Wohnung gereinigt wenn nicht dann war es nur eine Zonenreinigung. Dieser Wert wird ja pro fahrt generiert.

                            Edit: Unter dem Punkt Info -> Cleaned Area
                            dieser wird vor der nächsten Reinigung auf 0 gesetzt.

                            J 1 Reply Last reply Reply Quote 0
                            • Diginix
                              Diginix last edited by

                              Ich trigger auf Wertänderung des Status Objektes und in Abhängigkeit vom vorherigen Wert weiß ich was der Staubsauger gemacht hat.

                              ba715105-22d9-483e-a313-cbbe5b40acfc-image.png

                              J 1 Reply Last reply Reply Quote 0
                              • J
                                JohnnyBahama @Diginix last edited by JohnnyBahama

                                @Diginix Das ist auch nicht schlecht, ich könnte so den Start registrieren und wenn er zurück in die Station fährt das laden und somit Schlussfolgern das er fertig ist so wie @Marty56 das auch beschrieben hat.
                                Danke für den Hinweis.

                                Es wäre natürlich komfortabler wenn man den Trigger hat, den auch der Roboter von sich gibt, aber so sollte es auch gehen.

                                1 Reply Last reply Reply Quote 0
                                • J
                                  JohnnyBahama @der-eine last edited by JohnnyBahama

                                  @der-eine Nicht das was ich mir erhoffte, weil auch Türen ab und zu geschlossen sind und somit ich die kleinstmögliche qm Zahl nehmen müsste. Aber jetzt hast du mich auf die Idee gebracht mir eine Meldung schicken zu lassen, dass die Reinigung zwar abgeschlossen ist, aber Räume fehlen und ich manuel nach reinigen kann.

                                  By the way, kann man irgendwo feststellen, welche Räume ausgelassen worden sind oder welche gereinigt wurden bei einer Komplettreinigung? Als Datenpunkt natürlich.

                                  1 Reply Last reply Reply Quote 0
                                  • J
                                    JohnnyBahama last edited by

                                    Für jemanden den es interessiert. Es ist nicht möglich den roboter während einer komplett Reinigung zu pausieren und ihn an eine andere Position zu schicken. Dadurch verliert er den Reinigungszustand, sobald er einen anderen Befehl bekommt. GoHome und goTo löscht den Reinigungsvorgang.
                                    Also müssen Umwege her, indem ich eine Routine schreibe, die qm pro Raum abgleicht und somit die restlichen Räume reinigt nach einer unterbrechung. Hat den Vorteil, dass er zwischen laden kann.

                                    C 1 Reply Last reply Reply Quote 0
                                    • C
                                      ChrisXY @JohnnyBahama last edited by

                                      Wie kann ich den den Standort bzw den Raum erkennen wo er ist ? Es gibt zwar Rooms das geht aber nur wenn ich es dort über rooms Objekte auch starte. Bei einer Auto Reinigung oder Manuellen Renigung kann ich nicht sehen wo der Staubsauger gerade ist.
                                      Hab ich etwas übersehen?

                                      Diginix 1 Reply Last reply Reply Quote 0
                                      • Diginix
                                        Diginix @ChrisXY last edited by

                                        @ChrisXY Wenn du ihn nicht über den Adapter gezielt in einem Raum schickst, z.B. eben bei einer Komplettreinigung oder über die App, bekommst du das nicht raus.
                                        Richtig kreativ, aber auch aufwändig, wäre es das Bild der Karte zu analysieren um die Pixelkoordinaten des Saugericons zu ermitteln und darüber die Position innerhalb der Wohnung.
                                        Schöner wäre es wenn die API die Koordinaten jederzeit mit senden würde. Wäre das so, wäre es sicher auch im Adapter.

                                        C 1 Reply Last reply Reply Quote 0
                                        • C
                                          ChrisXY @Diginix last edited by

                                          @Diginix Okay danke für die Info.

                                          Hat da schon jemand was mit blockly gemacht ? Da starten ist ja nicht das Problem ich klick die Objekte von Rooms per Blockly. Aber in zusammenhang mit Alexa ? Die rooms haben ja keinen "Brauchbaren" Namen

                                          Diginix 1 Reply Last reply Reply Quote 0
                                          • Diginix
                                            Diginix @ChrisXY last edited by

                                            @ChrisXY Du holst dir alle Raum-Start-Buttons als virtuelle Geräte zu Alexa, z.B. über iot und legst jeweils eine Routine mit einem stimmigen Sprachbefehl an, die dann diesen Button auf true setzt.
                                            Das ganze dann noch für Pause, GoHome usw.
                                            So kann ich den Sauger komplett über Alexa steuern.
                                            Ich sage nacheinander z.B. "Alexa, Wohnzimmer saugen", dann "Alexa, Küche saugen" und so werden die Räume in die Warteliste geschrieben und abgearbeitet. Am Ende wurde auch die ganze Wohnung gesaugt aber in meiner Wunsch Reihenfolge und ioBroker wusste wo der Sauger ist. Nach Fertigstellung jedes Raumes bekomme ich die Karte mit Angabe zur Fläche und Zeit als Email und Telegram.

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

                                            Support us

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

                                            962
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            204
                                            2196
                                            784380
                                            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