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.
    • Thomas Braun
      Thomas Braun Most Active @tazdevil20 last edited by

      @tazdevil20

      Beim Thema 'System aktuell halten' gibt es keine zwei Meinungen.

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

        @tazdevil20 das ist auf jeden fall ein problem ins filesystem zu schreiben, das problem ist, dass der adapter völlig abstürzt, das kann ich nicht abfangen.
        Der stürzt bei adapter.writeFile(... ab

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

          @dirkhe
          Danke.

          Ein iob fix hat nicht geholfen. Das Problem ist scheinbar redis.

          Das System sieht von der Konfiguration so aus:

          iobroker is running on this host.
          
          At least one iobroker host is running.
          
          Objects type: redis
          States  type: redis
          

          Nach dem ich die Konfiguration auf file/file umgestellt habe hat wieder alles funktioniert. Wieder auf redis/redis umgestellt funktioniert das Speichern der Karte nicht.

          Eine Idee wie man das lösen könnte? Ich nutze die png nur um mir nach dem Saugvorgang ein Bild des gesaugten Bereichs per Telegram zu senden. Lässt sich das auch mit base64 lösen? Dann hätte ich einen Workaround.

          Neuschwansteini 1 Reply Last reply Reply Quote 0
          • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            538
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

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