Direktes einbinden des Xiaomi Roborock in Loxone

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Maruu
    LoxBus Spammer
    • 07.03.2017
    • 489

    Direktes einbinden des Xiaomi Roborock in Loxone

    Hallo zusammen,

    für diejenigen, die Ihren Xiaomi Roborock Mi oder Xiaomi Roborock S5x direkt ohne Umwege (Loxberry Plugin) in Loxone integrieren wollen, habe ich hier einen Wiki-Eintrag geschrieben: https://www.loxwiki.eu/display/LOX/Xiaomi+Roborock

    Dabei wird eine Custom-Firmware (Valetudo) auf den Staubsaugerroboter aufgespielt, die eine REST-API mitbringt und dadurch die direkt Einbindung zulässt. Zusätzlicher Vorteil, Valetudo unterbindet die Kommunikation des Roborock zu den (chinesischen) Servern von Xiaomi.

    Viel Spaß beim Ausprobieren, bei Fragen gerne hier melden.

    Gruß Hannes
  • heilmoa
    Smart Home'r
    • 04.12.2017
    • 42

    #2
    Hallo,

    Erstmal danke für die Anleitung, werde ​​ich definitiv übernehmen.

    Ich habe auf meinem Roborock Valetudo Re installiert, vor allem da man hier mehrere Karten speichern kann (habe einen Roborock für zwei Stockwerke).

    Werde das Ganze definitiv austesten und berichten, ob Unterschiede zu Valetudo Re bestehen.

    Auch würde ich die Karte gerne in Loxone switchen können... Mal schauen!

    Danke fürs Teilen deines Wissens

    Gruß Michael

    Kommentar

    • Maruu
      LoxBus Spammer
      • 07.03.2017
      • 489

      #3
      Hi Michael,

      Valetudo Re hatte ich bisher aus Zeitmangel noch nicht getestet, das Feature mit den Maps ist aber cool. Aber die API sieht hier ziemlich gleich aus, sollte also auch klappen: https://github.com/rand256/valetudo/...r/WebServer.js

      In Zeile 876 gibt es einen API-Call /api/load_map, der müsste für das Switchen der Karten richtig sein. Mit /api/list_maps bekommst du alle gespeicherten Maps, ist also kein Hexenwerk das auch noch zu integrieren.

      Berichte doch mal, ob es geklappt hat.

      Gruß Hannes

      Kommentar

      • Igel18
        Dumb Home'r
        • 05.01.2016
        • 16

        #4
        Hallo zusammen,
        Ich habe das Valetudo Re auf meinem RoboRock drauf. Dank des Wiki-Eintrags war es ziemlich einfach den zu integrieren :-). Die Api ist wirklich ähnlich aber es unterscheidet sich im Detail:
        so gibt es hier z.B. ein /api/start_cleaning_zone (ohne id).

        Leider hab ich noch nicht rausgefunden wie ich das in der Loxone anpassen muss, damit ich die Zonen-Reinigung und Raumreinigung bedienen kann

        Vielleicht kann hier jemand unterstützen...

        So viel habe ich schon raus gefunden. Das ist in der map.html zu finden:

        const segments = map.getLocations().segments;
        const zones = map.getLocations().zones;
        promise = () => fn.prequestWithPayload("api/start_cleaning_segment", JSON.stringify([segments, iterations]), "PUT");
        promise = () => fn.prequestWithPayload("api/start_cleaning_zone", JSON.stringify(zones), "PUT");

        Jetzt weiß ich aber nicht, was er als "zones" bzw. "segments" erwartet.

        VG

        Kommentar

        • heilmoa
          Smart Home'r
          • 04.12.2017
          • 42

          #5
          Hallo,

          Ich verwende als Befehl bei EIN: /api/start_cleaning_zone_by_name
          und übergebe als HTTP-Post Befehl bei EIN ["Esszimmer","Küche"]

          Den String kann man sich auch per Statusbaustein erstellen und mit <v> an den Ausgang übergeben.


          EDIT: Hab kurz nachgeschaut


          Der Roboter kann mit der API recht gut eingebunden werden, auch ein wechseln der Karte ist per POST Befehl möglich. Das ist mMn. auch der einzige Grund für die RE-Version.


          Ansonsten sollte man die originale Valetudo Version verwenden. Der Entwickler von RE hat wohl relativ dreist kopiert und gab wohl auch mehrfach Streit...


          Ich steuere die Loxone Befehle außerdem aus Node-RED heraus. Nun kann ich zu Alexa sagen, [Name des Roboters] soll die Küche saugen. Und zack, der Roboter fängt an zu saugen.
          Sehr komfortabel!


          Gruß Michael
          Zuletzt geändert von heilmoa; 27.05.2021, 13:13.

          Kommentar

          • Igel18
            Dumb Home'r
            • 05.01.2016
            • 16

            #6
            Hallo Michael,

            /api/start_cleaning_zone_by_name funktioniert für die "Gespeicherten Zonen" Danke dir.

            Aber die "Zimmerkonfiguration" kann ich damit nicht ansprechen.

            VG Dominik

            Kommentar

            • heilmoa
              Smart Home'r
              • 04.12.2017
              • 42

              #7
              Ich habe keine Räume definiert.


              Versuche Mal folgendes:
              /API/start_cleaning_segment
              Und der Wert müsste folgendes sein
              [["1"],1,1]
              oder
              [[1],1,1]



              Die erste 1 ist der Raum, die zweite die Wiederholungen, die dritte, ob die Reihenfolge beachtet werden soll
              mehrere Räume wären dann:
              [[1,2,3],1,1]
              ​​​​​​

              WIe du jetzt rausfindest, welcher Raum, welchen Integer Wert hat, kann ich dir leider nicht sagen Edit: dafür gäbe es wohl auch einen Befehl: /API/segment_names ist ein GET und müsste damit auch im Browser funktionieren (oder natürlich mit Postman etc.)
              Zuletzt geändert von heilmoa; 27.05.2021, 13:54.

              Kommentar

              • Igel18
                Dumb Home'r
                • 05.01.2016
                • 16

                #8
                Jetzt geht es:

                mit /api/segment_names kann man die Namen und Ids der Räume auslesen. Diese Ids werden dann als Raumnummer mit [[1],1,1] verwendet.
                Bei mir ist z.B. das WC der 1. Raum in der Liste, hat aber die id 16
                Somit /API/start_cleaning_segment
                [[16,1,1]

                VG

                Kommentar

                • Nick
                  Smart Home'r
                  • 03.03.2016
                  • 57

                  #9
                  Hallo,
                  Ich habe einen Xiaomi F9 und habe grade versucht die Schritte soweit durchzuführen, allerdings scheitere ich schon beim ersten Aufbau der SSH Verbindung.
                  über Putty finde ich keinen Punkt wo ich den Key mitgeben kann und habe alternativ den RRCC getestet, aber auch da klappt die Verbindung nicht!?

                  Kommentar

                  • justStefan
                    Smart Home'r
                    • 24.08.2021
                    • 70

                    #10
                    Hallo! Mit der aktuellen Version von Valetudo dürfte das nicht mehr so funktionieren!?
                    Jetzt wollte ich ex mit MQTT probieren. bekomme aber keine bzw. nur ein einziges Mal Daten in das MQTT Gateway am Loxberry geliefert. Gibt es jemand der ein Valetudo in der Version 2022.01.0 eingebunden hat in Loxone?

                    Kommentar

                    • loxforum
                      Smart Home'r
                      • 08.10.2021
                      • 58

                      #11
                      Zitat von justStefan
                      Hallo! Mit der aktuellen Version von Valetudo dürfte das nicht mehr so funktionieren!?
                      Jetzt wollte ich ex mit MQTT probieren. bekomme aber keine bzw. nur ein einziges Mal Daten in das MQTT Gateway am Loxberry geliefert. Gibt es jemand der ein Valetudo in der Version 2022.01.0 eingebunden hat in Loxone?
                      Warum nicht einfach direkt per HTTP Request (Virtueller Ausgang) einbinden? Funktioniert bei mir super.

                      Kommentar

                      • Chrissi
                        Extension Master
                        • 24.09.2015
                        • 149

                        #12
                        Hallo Zusammen,
                        ich habe es endlich geschafft auf meinen S50 Valetudo aufzuspielen.
                        Es gibt aber eine neue API V2 von Valetudo, die Request aus dem Loxwiki funktionieren nicht mehr mit der aktuellen Version.
                        Der neue Request zum starten, stoppen usw. sieht dann so aus:

                        http://192.168.1.239/api/v2/robot/ca...trolCapability ( hier muss noch start/stop/pause rein?)

                        Ich scheitere aber beim Zusammenbauen des Befehls für die Loxone. Ich habe mal zwei Screenshots der API angehängt.
                        Vielleicht hat ja jemand eine Idee wie der Befehl aussehen muss?

                        Danke und Viele Grüße

                        Christian

                        Kommentar

                        • loxforum
                          Smart Home'r
                          • 08.10.2021
                          • 58

                          #13
                          Wie shared man hier am besten Teile einer LoxConfig? Ich habe mittlerweile eine recht umfangreiche Implementierung, basieren auf diversen Posts hier im Forum, Loxwiki und meiner eigenen Logik, welche dem ein oder anderen helfen könnte.

                          Kommentar


                          • heilmoa
                            heilmoa kommentierte
                            Kommentar bearbeiten
                            Für kleine Teile nehmen die meisten wohl Screenshots. Ansonsten wohl das komplette Projekt als .Loxone. Da musst du aber entweder alles rauslöschen was privat bleiben soll, oder in ein neues Projekt migrieren, da müssen dann aber die Ein- und Ausgänge neu angelegt werden.

                            Du könntest auch einen eigenen Wiki Eintrag anlegen, oder einen bestehenden überarbeiten?

                          • loxforum
                            loxforum kommentierte
                            Kommentar bearbeiten
                            Wiki Eintrag klingt sinnvoll, eventuell sollte ich das ganze auch als einzelne Config extrahieren, sind immerhin 2 Ganze Seiten voll mit Bausteinen.
                        • heilmoa
                          Smart Home'r
                          • 04.12.2017
                          • 42

                          #14
                          Zitat von Chrissi
                          Hallo Zusammen,
                          ich habe es endlich geschafft auf meinen S50 Valetudo aufzuspielen.
                          Es gibt aber eine neue API V2 von Valetudo, die Request aus dem Loxwiki funktionieren nicht mehr mit der aktuellen Version.
                          Der neue Request zum starten, stoppen usw. sieht dann so aus:

                          http://192.168.1.239/api/v2/robot/ca...trolCapability ( hier muss noch start/stop/pause rein?)

                          Ich scheitere aber beim Zusammenbauen des Befehls für die Loxone. Ich habe mal zwei Screenshots der API angehängt.
                          Vielleicht hat ja jemand eine Idee wie der Befehl aussehen muss?

                          Danke und Viele Grüße

                          Christian
                          Du musst die gleichen Daten wie in deinem Screenshot beim Curl Befehl "mitgeben".

                          In der Loxone-Config bedeutet das:
                          Befehl bei ein /api/v2/robot/capabilities/BasicControlCapability
                          HTTP Header bei ein Content-Type: application/json
                          HTTP Body bei ein { "action": "stop" }
                          HTTP Methode bei EIN PUT
                          Am Einfachsten ist, du machst dir je action einen virtuellen Befehl und änderst jeweils den Body (Start, Stop, Pause,...)

                          Alternativ:
                          Kannst du den Http Body auch innerhalb der Config über einen Status Baustein machen.

                          So sieht das bei mir aus (ist aber ValetudoRE):

                          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 3086
Größe: 25,0 KB
ID: 366393

                          In LoadMap ist der HTTP Body dann: <v> (damit wird der Wert aus dem Status Baustein übergeben und für den API Aufruf verwendet)​

                          Kommentar

                          • loxforum
                            Smart Home'r
                            • 08.10.2021
                            • 58

                            #15
                            Habe das bei mir ebenfalls über den Status Baustein realisiert, aber auf Basis der einzelnen Segmente/Räume:

                            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 3019
Größe: 11,6 KB
ID: 366452
                            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 2929
Größe: 6,8 KB
ID: 366453
                            Die IDs entweder direkt per API auslesen oder als HTTP Eingang, z.B. über den Namen Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 3014
Größe: 2,2 KB
ID: 366454
                            Damit kann man dann den z.B. den "Küche saugen" Taster implementieren, oder Küche alle x Tage saugen usw.​​

                            Kommentar

                            Lädt...