Plugin: MiRobot2Lox-NG - Xiaomi Vacuum Robots

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Deleted
    Dumb Home'r
    • 11.04.2020
    • 14

    Hallo, hab mir einen Roborock S7 gekauft und sofort das Plugin installiert, was sich leider als äusserst mühsam erwies. Ein Fehler nach dem anderen während der Installation, egal ob auf dem 3er oder 4er PI. Den PI komplett neu aufsetzen brachte auch nichts.

    Zielführend war dann diese Pakete als root händisch zu installieren:

    export RUSTUP_UNPACK_RAM=16800000
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    pip install --ignore-installed pyyaml
    pip install python-miio

    Danach konnte ich das Plugin fehlerfrei installieren.
    Ich habe das Plugin mit meinen Daten gefüttert, und siehe an, ich kann das Ding steuern.
    Allerdings kann ich immer noch keine Daten auslesen, weder "Sende über UDP" noch "Sende über HTTP" funktioniert

    Hier ist, was die gabber.pl -v ausspuckt:

    <LOGSTART> 16.05.2021 03:22:28 TASK STARTED
    <LOGSTART> MiRobo2Lox-NG GRABBER process started
    <INFO> LoxBerry Version 2.2.0.4 ( is_raspberry.cfg )
    <INFO> MiRobot2Lox-NG Version 1.2.0
    <INFO> Loglevel: 7
    This is grabber.pl Version 1.2.0.0
    <INFO> Fetching Data from Robots
    <INFO> Fetching Status Data for Robot 1...
    <INFO> Protocol is vacuum
    <INFO> /opt/loxberry/bin/plugins/mirobot2lox-ng/mirobo_wrapper.sh xxx.xxx.xxx.xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx status none vacuum 2
    <INFO> Fetching Consumables Data for Robot 1...
    <INFO> /opt/loxberry/bin/plugins/mirobot2lox-ng/mirobo_wrapper.sh xxx.xxx.xxx.xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx consumable_status none vacuum 2
    <INFO> Fetching Cleaning Data for Robot 1...
    <INFO> /opt/loxberry/bin/plugins/mirobot2lox-ng/mirobo_wrapper.sh xxx.xxx.xxx.xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx clean_history none vacuum 2
    Not an ARRAY reference at grabber.pl line 409.
    <LOGEND> 16.05.2021 03:22:35 TASK FINISHED
    Getestet hab ich Plugin-Version:
    1.2.0
    1.0.6
    1.0.5

    der Fehler ist immer der selbe

    $djson3->[0] = sprintf("%.3f", $djson3->[0] / 60 / 60); # Total Clean time
    an dieser Zeile bleibt er immer hängen...


    Vielleicht kann hier wer helfen?
    Danke, LG

    Kommentar


    • Prof.Mobilux
      Prof.Mobilux kommentierte
      Kommentar bearbeiten
      Erste einmal danke für die Hinweise. Wie vermutet haben sie mal wieder an der Python Lib herumgespielt und es gibt jetzt wohl zusätzliche Abhängigkeiten.... ich werde das direkt mit einbauen.

      Zu deinem anderen Problem: das Datenformat des S7 scheint nicht kompatibel mit den bisherigen Saugern zu sein. Das müsste direkt ins Plugin eingebaut werden. Ich habe alle4dings keinen S7...

      Erster Schritt Ware einmal hier den Output des Kommandos zu posten, der beim abfragen der Daten verwendet wird. Dazu musst du mal die mii-robo Doku lesen und die Befehle für deinen Roboter auf der Kommandozeile ausfuhren.
  • Deleted
    Dumb Home'r
    • 11.04.2020
    • 14

    Danke für die schnelle Antwort. Ich schau mir das heut am Abend mal an. Meine Linux-Python-Perl-usw. Kenntnisse sind halt leider recht bescheiden, somit könnts ein wenig dauern.

    Kommentar

    • Tom001
      LoxBus Spammer
      • 20.05.2016
      • 311

      Sollte ein Befehl von diesen hier sein oder?

      Kommentar

      • Prof.Mobilux
        Supermoderator
        • 25.08.2015
        • 4630

        Wir nutzen miiocli und nicht mirobo. Die Syntax ist etwas anders.

        Wir die "alten" Robots nutze ich zum Abfragen des Status folgenden Befehl:

        Code:
        miiocli -o json_pretty vacuum --ip IPADRESSE --token TOKEN status
        Für die neueren gibt es leider keine JSON-Ausgabe (warum auch immer...):

        Code:
        miiocli viomivacuum --ip IPADRESSE --token TOKEN status
        🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


        LoxBerry - Beyond the Limits

        Kommentar

        • Tom001
          LoxBus Spammer
          • 20.05.2016
          • 311

          Das kommt bei mir raus wenn ich das abfrage:

          Code:
          WARNING:miio.viomivacuum:Unknown vacuum state: None
          
          ValueError: None is not a valid ViomiBinType
          
          
          
          
          During handling of the above exception, another exception occurred:
          
          
          
          
          Traceback (most recent call last):
          
          File "/usr/local/bin/miiocli", line 8, in <module>
          
          sys.exit(create_cli())
          
          File "/usr/local/lib/python3.7/dist-packages/miio/cli.py", line 63, in create_cli
          
          return cli(auto_envvar_prefix="MIIO")
          
          File "/usr/local/lib/python3.7/dist-packages/miio/click_common.py", line 59, in __call__
          
          return self.main(*args, **kwargs)
          
          File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 717, in main
          
          rv = self.invoke(ctx)
          
          File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1137, in invoke
          
          return _process_result(sub_ctx.command.invoke(sub_ctx))
          
          File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1137, in invoke
          
          return _process_result(sub_ctx.command.invoke(sub_ctx))
          
          File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 956, in invoke
          
          return ctx.invoke(self.callback, **ctx.params)
          
          File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 555, in invoke
          
          return callback(*args, **kwargs)
          
          File "/usr/local/lib/python3.7/dist-packages/miio/click_common.py", line 285, in wrap
          
          result_msg = result_msg_fmt.format(**kwargs)
          
          File "/usr/local/lib/python3.7/dist-packages/miio/viomivacuum.py", line 321, in bin_type
          
          return ViomiBinType(self.data["box_type"])
          
          File "/usr/lib/python3.7/enum.py", line 310, in __call__
          
          return cls.__new__(cls, value)
          
          File "/usr/lib/python3.7/enum.py", line 564, in __new__
          
          raise exc
          
          File "/usr/lib/python3.7/enum.py", line 548, in __new__
          
          result = cls._missing_(value)
          
          File "/usr/lib/python3.7/enum.py", line 577, in _missing_
          
          raise ValueError("%r is not a valid %s" % (value, cls.__name__))
          
          ValueError: None is not a valid ViomiBinType

          Kommentar


          • Deleted
            Deleted kommentierte
            Kommentar bearbeiten
            der S7 wird damit abgefragt:
            miiocli -o json_pretty vacuum --ip IPADRESSE --token TOKEN status
        • Deleted
          Dumb Home'r
          • 11.04.2020
          • 14

          Hab mich jetzt intensiv mit der Materie beschäftigt, und trotz NULL Perl-Kenntnisse hab ich das irgendwie zum laufen gebracht.

          Hier die Änderungen die in der grabber.pl nötig sind:
          !!!ACHTUNG, gilt nur für den Roborock S7, bzw. ist nur am S7 getestet!!!

          Originalfile:

          # Calculations

          $djson3->[0] = sprintf("%.3f", $djson3->[0] / 60 / 60); # Total Clean time
          $djson3->[1] = sprintf("%.3f", $djson3->[1] / 1000000); # Total clean area
          my $last = $t - $djson3->[3]->[0];

          # UDP
          data_to_send{'total_clean_time'} = $djson3->[0];
          $data_to_send{'total_clean_area'} = $djson3->[1];
          $data_to_send{'total_cleanups'} = $djson3->[2];

          # HTML
          print F "MiRobot$i: total_clean_time=$djson3->[0]\n";
          print F "MiRobot$i: total_clean_area=$djson3->[1]\n";
          print F "MiRobot$i: total_cleanups=$djson3->[2]\n";





          ersetzen gegen:

          # Calculations
          $djson3->{'clean_time'} = sprintf("%.3f", $djson3->{'clean_time'} / 60 / 60);
          $djson3->{'clean_area'} = sprintf("%.3f", $djson3->{'clean_area'} / 1000000);
          my $last = $t - $djson3->{'records'}->[0];

          # UDP
          $data_to_send{'total_clean_time'} = $djson3->{'clean_time'};
          $data_to_send{'total_clean_area'} = $djson3->{'clean_area'};
          $data_to_send{'total_cleanups'} = $djson3->{'clean_count'};

          # HTML
          print F "MiRobot$i: total_clean_time=$djson3->{'clean_time'}\n";
          print F "MiRobot$i: total_clean_area=$djson3->{'clean_area'}\n";
          print F "MiRobot$i: total_cleanups=$djson3->{'records'}\n";

          LG

          Kommentar


          • Tom001
            Tom001 kommentierte
            Kommentar bearbeiten
            wo genau finde ich diese grabber.pl?
        • Deleted
          Dumb Home'r
          • 11.04.2020
          • 14

          /opt/loxberry/bin/plugins/mirobot2lox-ng/grabber.pl

          Kommentar

          • Prof.Mobilux
            Supermoderator
            • 25.08.2015
            • 4630

            Ich könnte das Probieren so einzubauen. Damit kommt bei Dir die Statusabfrage und Du kannst den Robo auch steuern?
            🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


            LoxBerry - Beyond the Limits

            Kommentar


            • Deleted
              Deleted kommentierte
              Kommentar bearbeiten
              Ja, so funktioniert es einwandfrei. Wenn Du das so einbaust sollte man im Plugin beim Gerätetyp noch den S7 als dritte Option anlegen.

              Hier noch der Output meiner clean_history (die müsste ja beim S7 offensichtlich anders sein):

              {
              "clean_time": 9615,
              "clean_area": 135702500,
              "clean_count": 10,
              "dust_collection_count": 0,
              "records": [
              1621166072,
              1621064803,
              1621064117,
              1621064007,
              1621026417,
              1621025748,
              1621014382,
              1621013635,
              1621013541,
              1621008136
              ]
              }

            • Prof.Mobilux
              Prof.Mobilux kommentierte
              Kommentar bearbeiten
              Deleted Nur noch der Vollständigkeit halber: Der S7 verhält sich exakt so wie die "alten" Mirobots (Roborock, S5 usw.). Aber die Kollegen des Projekts python-miio haben einfach das JSON-Format geändert :-( Somit liefen mit der aktuellen Version auch alle alten S5er usw. nicht mehr...
          • Tom001
            LoxBus Spammer
            • 20.05.2016
            • 311

            Deleted
            du bist ein Held!
            Läuft bei mir auch endlich wieder!

            Kommentar


            • Deleted
              Deleted kommentierte
              Kommentar bearbeiten
              wär ich nicht gerade in Urlaub, hätt ich das eh nie hinbekommen... Zeitmangel und so
          • Prof.Mobilux
            Supermoderator
            • 25.08.2015
            • 4630

            Es gibt eine neue Version V1.2.1: https://www.loxwiki.eu/display/LOXBERRY/MiRobot2Lox-NG
            • Add support for new Status "Sequence Cleaning". Thanks to @fs79
            • Add Support for S7 (in fact it acts like S5, but JSON format of python-miio changed - so also S5 didn't work anymore. Thanks to LoxForum User Deleted
            • Add software token_extractor.py - see https://www.loxwiki.eu/x/QAN7AQ
            🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


            LoxBerry - Beyond the Limits

            Kommentar

            • .:Chris:.
              Extension Master
              • 05.01.2016
              • 190

              MiRobot2Lox-NG: Script fails. Installation cannot be continued.



              INFO: Start installing Python Setuptools...
              Traceback (most recent call last):
              File "/usr/local/bin/pip3", line 6, in
              from pip._internal.cli.main import main
              ModuleNotFoundError: No module named 'pip._internal.cli.main'
              yes: standard output: Broken pipe
              Traceback (most recent call last):
              File "/usr/local/bin/pip3", line 6, in
              from pip._internal.cli.main import main
              ModuleNotFoundError: No module named 'pip._internal.cli.main'

              WARNING: Python Setuptools installation failed! The plugin will not work without.

              WARNING: Giving up.

              30.05.2021 09:35:06 CRITICAL: Script fails. Installation cannot be continued.


              @Prof.Mobilux: Eine Idee woran das liegen könnte?

              Der Updatevorgang wurde manuell gestartet, da über die Pluginverwaltung kein Updatepaket erkannt wurde.

              Vielen Dank
              .:Chris:.

              Kommentar


              • Prof.Mobilux
                Prof.Mobilux kommentierte
                Kommentar bearbeiten
                Und ging's dann? Dann könnte ich das sicherhetlber mit einbauen.

              • .:Chris:.
                .:Chris:. kommentierte
                Kommentar bearbeiten
                ja, damit ist die Installation durchgelaufen. Wobei jetzt keine Daten mehr im MS ankommen.

              • .:Chris:.
                .:Chris:. kommentierte
                Kommentar bearbeiten
                Die html-Datei "/plugins/mirobot2lox-ng/robotsdata.txt" hat auch keinen Inhalt.
                Wo kann ich prüfen wann und was an den MS gesendet wurde? Habe das logfile auf debug, doch da sind diese Informationen nicht enthalten.
            • renezs
              Extension Master
              • 01.07.2016
              • 133

              Hallo bei mir kommt eine Fehlermelldung mit Rust Compiler (siehe .log). Hat das auch was mit dem pip zu tun?

              XLc686GBM6.log

              Kommentar

            • .:Chris:.
              Extension Master
              • 05.01.2016
              • 190

              Guten Morgen zusammen,

              heute Morgen wollte ich mich wieder dem Thema annehmen und nun können auch keine Daten mehr vom Gerät bezogen werden. Wahrscheinlich war das gestern Abend bereits der Fall.
              Klicke auf die Grafik für eine vergrößerte Ansicht

Name: debug.JPG
Ansichten: 558
Größe: 225,3 KB
ID: 306809


              Leider fehlen mir die Kentnisse um den Debug-Report interpretieren zu können.

              Ich hoffe die Experten können hier weiterhelfen.

              Danke
              .:Chris:.

              Kommentar


              • Prof.Mobilux
                Prof.Mobilux kommentierte
                Kommentar bearbeiten
                "Unable to discover the device". IP richtig? Token richtig?

              • .:Chris:.
                .:Chris:. kommentierte
                Kommentar bearbeiten
                beides geprüft und richtig.

              • .:Chris:.
                .:Chris:. kommentierte
                Kommentar bearbeiten
                habe jetzt das plugin deinstalliert und wieder die vorversion installiert.
                Besteht die Möglichkeit, dass der Roborock S6 nach dem Update nicht mehr unterstützt wird?
            • kudykam
              Dumb Home'r
              • 19.04.2021
              • 22

              Mit Version 1.2.1 kann ich das Plugin immer noch nicht installieren
              Die Installation der Python MIIo-Tools ist fehlgeschlagen!
              Auch nach einem Installationsfehler funktioniert das Plugin, aber ich habe dies im Debug erhalten

              Code:
              Dollar1 = 192.168.20.7
              Dollar2 = 304a7448684756xxxxxxxxxx
              Dollar3 = raw_command Dollar4 = miIO.info
              Dollar5 = vacuum Dollar6 = 1 -d -o json_pretty vacuum --ip 192.168.20.7 --token 304a74486847566xxxxxxxxxx raw_command miIO.info 2>&1
              Output: /opt/loxberry/bin/plugins/mirobot2lox-ng/mirobo_wrapper.sh: line 62: -d: command not found
              Zuletzt geändert von kudykam; 01.06.2021, 09:04.

              Kommentar

              • Prof.Mobilux
                Supermoderator
                • 25.08.2015
                • 4630

                Irgendetwas bei euch ist kaputt. Ich brauche das install logfile.
                🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


                LoxBerry - Beyond the Limits

                Kommentar

                Lädt...