Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter Mihome-vacuum v3.1.6 Next Generarition

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter Mihome-vacuum v3.1.6 Next Generarition

    This topic has been deleted. Only users with topic management privileges can see it.
    • Neuschwansteini
      Neuschwansteini @tazdevil20 last edited by

      @tazdevil20

      laeuft denn dein Redis-Server?

      T 1 Reply Last reply Reply Quote 0
      • T
        tazdevil20 @Neuschwansteini last edited by

        @ilovegym
        Der Dienst läuft und wenn ich die redis-cli starte kann ich auch ganz normal z. B. "info server" mir anzeigen lassen.
        Ich suche gerade eine Möglichkeit mittels Javascript Daten aus der Redis-DB auszulesen. Ich denke, dass das mein Problem ist da die Daten nicht mehr im Filesystem abgelegt werden. Oder habe ich redis falsch verstanden?

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

          @tazdevil20

          hast du richtig verstanden, deine Daten liegen bei redis/redis in der Redis-Datenbank. Zugriff hast du damit mit bei iobroker javascript mit readfile / writefile, im Gegenzug zu readfilefs/writefilefs was aufs Filesystem zugreift.

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

            hmm ich habe gerade mit den Räumen bisschen rumgespielt. Ich bekomme nur IDs angezeigt keine Namen.
            Wie finde ich nun raus was welcher Raum ist? So weiss ich ja welcher Mapindex dann der Raum ist und dann den Staubsauger zum Mapindex schicken.
            Leider kann man wohl auch nicht erkennen in welchem Raum er gerade ist? Ich bekomme in dem Räumen leider keine änderungen wenn er sich darin befindet.

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

              @chrisxy da hilft nur den Raum einmal mit dem Button roomclean reinigen zu lassen, dann siehst du, welcher das ist..
              oder hat jemand ne andere Idee ???

              C 1 Reply Last reply Reply Quote 0
              • T
                tazdevil20 last edited by

                @ilovegym
                Dann war die Überlegung nicht ganz falsch. Aber nächstes Problem. Ich bekomme die Daten aus Redis nicht raus.

                In den Beispielen in der Dokumentation (https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#readfile) würde es wie folgt aussehen:

                readFile('mihome-vacuum.admin', '/actualMap_0.png', function (error, data) {
                    console.log(data.substring(0, 50));
                });
                

                oder

                readFile('/../mihome-vacuum.admin/actualMap_0.png', function (error) {
                     console.log(data.substring(0, 50));
                });
                

                Bei beiden Abfragen kommt die Meldung

                TypeError: Cannot read properties of undefined (reading 'substring')
                

                zusätzlich stürzt der komplette javascript-Adapter ab. Das Beispiel 1 aus der Dokumentation funktioniert. Das Beispiel zwei nicht.

                Hab jemand das schon hinbekommen und kann mir mitteilen wo ich den Fehler habe?

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

                  @ilovegym ja nun hat es geklappt ich musste jeweils den Staubsauger zur Ladestation schicken. Sonst hat er es nicht angekommen. Noch ein Tipp? Wie kann ich nun per Control eine ID angeben? Geht das? Also Mapindex 12 soll er reinigen? Oder muss ich dies zwingend über den room.71284738.clean.. gehen ?

                  Plan war es eine Dropdown im VIS oder ähnliches zu machen wo man den Raum nur auswählen muss. Notlösung jeder Raum ein Schalter.

                  Den Status in welchem Raum er ist kann man nicht sehen? Außer die MAP

                  Neuschwansteini bahnuhr 2 Replies Last reply Reply Quote 0
                  • Neuschwansteini
                    Neuschwansteini @ChrisXY last edited by Neuschwansteini

                    @chrisxy mit den ID's hab ich noch nie gearbeitet .. k.a.

                    Ich hab das gar nicht in der VIS drin, nur die Raeume mit dem iot-Adapter verknuepft, Alexa reinige Wohnzimmer, und fertich.. mehr brauchen wir hier nicht.. der Rest geht automatisch, wenn keiner Zuhause ist mit den 4 Saugern..

                    @tazdevil20
                    was hast du denn vor?

                    Ich lasse mir nur Statusmeldungen und die Map aufs Handy schicken per SynoChat..

                    Und wenn der Staubbehaelter voll ist, fahren se zum Muelleimer.. 😄 dazu hab ich ein Script, dass zu jedem vollendeten Saugvorgang einen Zaehler hochsetzt, bis der Behaelter voll ist ( hab ich selbst rausklabustert wieviel das bei welchem Sauger ist).. Wenn der Behaelter geleert ist, muss ich den Datenpunkt dann wieder manuell auf 0% setzen, was ich zu 99% vergesse und er beim naechsten mal wieder zum Muelleimer faehrt.. er vergisst ja nix..

                    1 Reply Last reply Reply Quote 0
                    • bahnuhr
                      bahnuhr Forum Testing Most Active @ChrisXY last edited by

                      @chrisxy
                      In vis so:
                      08826de9-9704-487d-b396-6922cd7cbdfa-image.png

                      und mit einem Script:

                      // Mihome - Staubsauger
                      
                      var request = require('request'), logging = true, Auto_Sprache = 'javascript.0.System.Automatik.Sprachausgabe';
                      var ID_Wz = "2803", ID_Kueche = "2831", ID_Buero = "2832", ID_Flur = "5081", ID_Sz = "2868", ID_Bad = "2870", ID_GaesteWC = "2902", ID_Arbeitsz = "3924"
                      
                      // Räume:       Erdgeschoss                     Kellergeschoss
                      //              451001032803  Wohnzimmer        451001035078  ???
                      //              451001032831  Küche             451001035079  ???
                      //              451001032832  Büro              451001035080  ???
                      //              451001035081  Flur
                      //              451001032868  Schlafzimmer
                      //              451001032870  Bad
                      //              451001032902  Gäste WC
                      //              451001033924  Arbeitszimmer
                      
                      
                      // Zonen - Reinigung ----------------------------------------------------------------------------------------------
                      on({id: "javascript.0.Geräte.Staubsauger.Taster_Zone", change: "ne", val:true}, function() {   // Taster wurde gedrückt
                          var Zone = [];
                          setState('mihome-vacuum.0.cleanmap.actualMap', 0);      // 0 = Erdgeschoss, 1 = Kellergeschoss
                          setTimeout(function() { if (getState("javascript.0.Geräte.Staubsauger.Zone_Arbeitszimmer").val) { setState('mihome-vacuum.0.rooms.45100103' + ID_Arbeitsz + '.roomClean', true); Zone.push("Arbeitszimmer"); }}, 500);
                          setTimeout(function() { if (getState("javascript.0.Geräte.Staubsauger.Zone_Bad").val) { setState('mihome-vacuum.0.rooms.45100103' + ID_Bad + '.roomClean', true); Zone.push("Bad"); }}, 1000);
                          setTimeout(function() { if (getState("javascript.0.Geräte.Staubsauger.Zone_Büro").val) { setState('mihome-vacuum.0.rooms.45100103' + ID_Buero + '.roomClean', true); Zone.push("Büro"); }}, 1500);
                          setTimeout(function() { if (getState("javascript.0.Geräte.Staubsauger.Zone_Flur").val) { setState('mihome-vacuum.0.rooms.45100103' + ID_Flur + '.roomClean', true); Zone.push("Flur"); }}, 2000);
                          setTimeout(function() { if (getState("javascript.0.Geräte.Staubsauger.Zone_GästeWC").val) { setState('mihome-vacuum.0.rooms.45100103' + ID_GaesteWC + '.roomClean', true); Zone.push("Gäste WC"); }}, 2500);
                          setTimeout(function() { if (getState("javascript.0.Geräte.Staubsauger.Zone_Küche").val) { setState('mihome-vacuum.0.rooms.45100103' + ID_Kueche + '.roomClean', true); Zone.push("Küche"); }}, 3000);
                          setTimeout(function() { if (getState("javascript.0.Geräte.Staubsauger.Zone_Schlafzimmer").val) { setState('mihome-vacuum.0.rooms.45100103' + ID_Sz + '.roomClean', true); Zone.push("Schlafzimmer"); }}, 3500);
                          setTimeout(function() { if (getState("javascript.0.Geräte.Staubsauger.Zone_Wohnzimmer").val) { setState('mihome-vacuum.0.rooms.45100103' + ID_Wz + '.roomClean', true); Zone.push("Wohnzimmer"); }}, 4000);
                          setTimeout(function() { 
                              if (Zone.length == 0) {
                                  if (Sprache === true || Sprache === 1) {
                                      Tablet_Lautstaerke(getState("javascript.0.System.Sonstige.Laut_Gong").val);
                                      setState('sayit.3.tts.text', '/opt/iobroker/iobroker-data/files/vis.0/mp3/tos-computer-03.mp3');
                                      setTimeout(function() { Tablet_Lautstaerke(getState("javascript.0.System.Sonstige.Laut_Text").val); }, 2800);
                                      setTimeout(function() { setState('sayit.4.tts.text', "Achtung, zur Zonenreinigung muss mindestens 1 Raum angeklickt sein!")}, 3000);
                                  }
                                  log ("Zonenreinigung: Es wurde kein Raum angeklickt!");
                              } else {
                                  var Sprache = getState(Auto_Sprache).val;
                                  var Str_Zone = Zone.join(', ');
                                  if (Sprache === true || Sprache === 1) {
                                      Tablet_Lautstaerke(getState("javascript.0.System.Sonstige.Laut_Gong").val);
                                      setState('sayit.3.tts.text', '/opt/iobroker/iobroker-data/files/vis.0/mp3/tos-computer-03.mp3');
                                      setTimeout(function() { Tablet_Lautstaerke(getState("javascript.0.System.Sonstige.Laut_Text").val); }, 2800);
                                      setTimeout(function() { setState('sayit.4.tts.text', "ok, Die Zonenreinigung wird im " + Str_Zone + " ausgeführt!")}, 2000);
                                  }
                                  log ("Zonenreinigung wird im " + Str_Zone + " durchgeführt!");
                              }
                          }, 5000);
                      });
                      
                      
                      
                      // Fahre zum Mülleimer ----------------------------------------------------------------------------------------------
                      on({id: "javascript.0.Geräte.Staubsauger.Taster_Muell", change: "ne", val:true}, function() {   // Taster wurde gedrückt
                              var Sprache = getState(Auto_Sprache).val;
                              if (Sprache === true || Sprache === 1) {
                                  Tablet_Lautstaerke(getState("javascript.0.System.Sonstige.Laut_Gong").val);
                                  setState('sayit.3.tts.text', '/opt/iobroker/iobroker-data/files/vis.0/mp3/tos-computer-03.mp3');
                                  setTimeout(function() { Tablet_Lautstaerke(getState("javascript.0.System.Sonstige.Laut_Text").val); }, 2800);
                                  setTimeout(function() { setState('sayit.4.tts.text', "ok, Der Staubsauger fährt zum Mülleimer!")}, 2000);
                              }
                          //setState('mihome-vacuum.0.control.fan_power', 104);     // Beschleunige die Fahrt auf 100%
                          setStateDelayed('mihome-vacuum.0.control.goTo', "17500,29300", 3000);
                          //setStateDelayed('mihome-vacuum.0.control.X_send_command','app_goto_target; [17350,22600]', 3000);
                          //setStateDelayed('mihome-vacuum.0.control.fan_power', 102, 300000);     // nach 5 Minuten die Power wieder auf 50%
                      });
                      
                      
                      
                      
                      D 1 Reply Last reply Reply Quote 0
                      • D
                        dirkhe Developer @bahnuhr last edited by

                        warum machst du das aller per script? Du hast doch für jeden raum deine datenpunkte und kansst die starten, sauglevel einstelle usw. Dax fanze kannst du auch für eine zone machen, einfach addroom ancklicken ubd koordinaten eingeben

                        bahnuhr 1 Reply Last reply Reply Quote 1
                        • bahnuhr
                          bahnuhr Forum Testing Most Active @dirkhe last edited by

                          @dirkhe sagte in Test Adapter Mihome-vacuum v3.1.6 Next Generarition:

                          warum machst du das aller per script? Du hast doch für jeden raum deine datenpunkte und kansst die starten, sauglevel einstelle usw. Dax fanze kannst du auch für eine zone machen, einfach addroom ancklicken ubd koordinaten eingeben

                          addroom ging bei mir nicht (oder ich hab es nicht hinbekommen).
                          Deshalb hab ich mir ein Script geschrieben.

                          1 Reply Last reply Reply Quote 0
                          • T
                            tazdevil20 last edited by

                            @ilovegym
                            Habe es aufgegeben mit Redis das ganze zu lösen. Schlussendlich habe ich die Funktion wie in der Doku (umwandlung in eine jpg-Datei im Filesystem) eingebaut:

                            function send(text) {
                                request.get({url: 'http://iobroker.fritz.box:8082/mihome-vacuum.admin/actualMap_0.png', encoding: 'binary'}, function (err, response, body) {
                                    fs.writeFile("/tmp/roborock.jpg", body, 'binary', function(err) {
                                    if (err) {
                                        console.error(err);
                                    } else {
                                        sendTo('telegram.0', {
                                            text: '/tmp/roborock.jpg', 
                                            caption: text
                                        });
                                    }
                                  });
                                });
                            }
                            

                            Zumindest funktioniert es wieder so wie ich wollte.
                            Vielen Dank an alle für die Hinweise und Hilfe.

                            Neuschwansteini 1 Reply Last reply Reply Quote 0
                            • Neuschwansteini
                              Neuschwansteini @tazdevil20 last edited by

                              @tazdevil20 ja, entweder so, dann kannst du dir das Bild auch weiter aufs NAS oder so kopieren, oder ueber den Weg ins iobroker-filesystem-Redis, dann musst du es erst holen mit request dann mit writefile wohinschreiben und dann kannst du es dir fuer Telegram wieder holen und senden.. da ist deine jetzige Methode einfacher, da Telegram das direkte versenden von files supported..

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

                                @dirkhe Eingeloggt muss er sein zumindest immer dann wenn Kartenupdates kommen. Es klemmt ja nicht permanent sondern meist 2-x minuten. Zum Teil aber eben auch >10min.
                                Wird nur die Karte selbst vom Cloudserver geholt und alles andere wie Zeit, Fläche usw. direkt lokal vom Sauger?

                                1 Reply Last reply Reply Quote 0
                                • D
                                  dirkhe Developer last edited by

                                  @diginix soweit ich weiß und den code überschaue, wird die karte aus der coud geholt.

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

                                    @dirkhe Ja, das ist klar. Ging eher um die restlichen Werte. Aber da ja die lokale IP mit Token im Adapter stehen, wird das sicher auch alles direkt lokal geholt.

                                    Die neuen imho zu dunklen Map Farben für Sauger ohne Teppicherkennung oder Wischfunktion habe ich in der mapCreator.js Zeile 18-23 wieder auf die aus v3.6.0 gestellt. Bis auf die falschen zu früh geleerten room.states ist die 3.8.4 ansonsten nun wieder brauchbar. 😉

                                    D 1 Reply Last reply Reply Quote 0
                                    • D
                                      dirkhe Developer @Diginix last edited by

                                      @diginix ich denke die farben sind auch in der app geändert, oder? Das könnte man aber konfigurierbar machen, entweder alle werte oder sowas wie farbthemes

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

                                        @dirkhe Nein, in der App sind sie bei mir immer gleich seit Jahren. Die Mapfarben des Adapters kommen aus ihm, nicht von Xiaomi. Vllt haben Sauger mit Teppicherkennung andere Farben für die Bereiche im Raum, in dem Teppich erkannt wurde. Aber das ist ja für Modelle ohne diese Funktion belanglos. Wäre also tatsächlich eine individualisierbare Sache für die Instanz.

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

                                          @dirkhe Mit 3.8.4, die seit gestern 09:28 Uhr lief, hatte ich heute morgen wieder den Fall, dass aus unbekanntem Grund die CPU Last um 10% steigt.

                                          Der Sauger war gestern zuletzt 20:30 Uhr unterwegs und stand seit dem im Dock. 11 Stunden später steigt die CPU Last spürbar an (Pfeil im Bild) und 10:30 Uhr habe ich die Instanz dann beendet und man sieht den deutlichen Abfall auf ein niedrigeres Niveau als zuvor wo die Instanz ruhig vor sich hinlief (blaue Linie). Die Instanz selbst braucht also klar etwas CPU (1-4%) wenn sie normal läuft. Aber was ab 07:30 Uhr im Adpater schief läuft, wäre interessant. Im Netzwerk steigt zu der Zeit auch der ausgehende Traffic deutlich an. Mit 3.6.0 ist das noch nie passiert.

                                          78c72841-a306-449a-80f8-469f7af670f6-image.png

                                          D 1 Reply Last reply Reply Quote 0
                                          • D
                                            dirkhe Developer @Diginix last edited by

                                            @diginix ich habe den fehler gefunden, denke ich. siehe update kommentsr hier https://forum.iobroker.net/topic/59480/test-für-mihome-vacuum

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            854
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            100
                                            1198
                                            279066
                                            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