Xiaomi WiFi Devices Modul (Vacuum/Airpurifier/Fan) - 72_XiaomiDevice (Support)

Begonnen von Markus M., 11 Juni 2017, 12:48:58

Vorheriges Thema - Nächstes Thema

Bengt79

Genau EG scheint map_status 3 zu sein, OG map_status 7.
Zumindest würde ich die Infos so interpretieren....

Thx for your work on this

;-)

Björn

Markus M.

Traut sich wer einen Versuch, den name_segment Befehl auszuprobieren?
Keine Ahnung ob der schreibt oder nur liest.
Versuch mach kluch  ;D

set VACUUMNAME json {"id":1234,"method":"name_segment","params":[17,"test123"]}

Und danach ein Check mit

set VACUUMNAME json {"id":1235,"method":"get_room_mapping","params":[""]}


Oder wenn der erste Befehl nen Fehler ergibt:

set VACUUMNAME json {"id":1236,"method":"name_segment","params":[17]}

FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

KernSani

Zitat von: Markus M. am 29 Mai 2020, 18:50:52
Traut sich wer einen Versuch, den name_segment Befehl auszuprobieren?
Keine Ahnung ob der schreibt oder nur liest.
Versuch mach kluch  ;D

set VACUUMNAME json {"id":1234,"method":"name_segment","params":[17,"test123"]}

Und danach ein Check mit

set VACUUMNAME json {"id":1235,"method":"get_room_mapping","params":[""]}


Oder wenn der erste Befehl nen Fehler ergibt:

set VACUUMNAME json {"id":1236,"method":"name_segment","params":[17]}


Hi Markus,

ich nehme an, er schreibt... aber scheinbar nichts sinnvolles:

020.05.29 23:11:17 0:  EG_Abst_vacuum: sending raw json request
{"id":1234,"method":"name_segment","params":[17,"test123"]}
2020.05.29 23:12:02 3:  EG_Abst_vacuum: connection timeout
2020.05.29 23:13:52 0:  EG_Abst_vacuum: sending raw json request
{"id":1235,"method":"get_room_mapping","params":[""]}
2020.05.29 23:13:52 0:  EG_Abst_vacuum: result for json request w/ id 1235, return is
$VAR1 = {
          'id' => 1235,
          'result' => [
                        [
                          16,
                          '749001010932'
                        ],
                        [
                          17,
                          '749001010925'
                        ],
                        [
                          18,
                          '749001010926'
                        ],
                        [
                          19,
                          '749001010927'
                        ],
                        [
                          20,
                          '749001010922'
                        ],
                        [
                          21,
                          '749001010956'
                        ],
                        [
                          22,
                          '749001010928'
                        ]
                      ]
        };

2020.05.29 23:14:38 0:  EG_Abst_vacuum: sending raw json request
{"id":1234,"method":"name_segment","params":[17,"test123"]}
2020.05.29 23:15:02 3:  EG_Abst_vacuum: disconnecting
2020.05.29 23:15:02 2:  EG_Abst_vacuum: connecting
2020.05.29 23:15:02 3:  EG_Abst_vacuum: initialized
2020.05.29 23:15:28 0:  EG_Abst_vacuum: sending raw json request
{"id":1234,"method":"name_segment","params":[17]}
2020.05.29 23:16:13 3:  EG_Abst_vacuum: connection timeout


Was aber auffällig ist, nach dem ersten "name_segment" zerschiesst es mir die Map Darstellung in der App, da ist dann erstmal nur ein rechteckiger Bereich (+ Barrieren etc...) zu sehen. Wenn ich dann auf Karte 2 und wieder zurück wechsle ist alles ok.

Ich vermute name_segment braucht vorher ein start_edit_map oder sowas und am Ende ein save. Ich habe auch noch mit get_segment_status rumgespielt. Da bekomme ich immer eine "1" als Antwort.

Ich habe mir map_status auch nochmal angesehen und kann bestätigen: 3 = Karte 1, 7 = Karte 2, 11 = Karte 3 (würde mal annehmen, die 15 ist Karte 4, ich habe aber aktuell nur 3 Karten). Das wäre wertvoll in den Readings.

Ich spiele noch ein bisschen, das geht ja mit dem set json jetzt sehr einfach und melde mich, falls ich was rausfinde.

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Markus M.

Zitat von: KernSani am 29 Mai 2020, 23:42:32
Ich spiele noch ein bisschen, das geht ja mit dem set json jetzt sehr einfach und melde mich, falls ich was rausfinde.
Hab wieder was für dich :)


set EG_Abst_vacuum json {"id":1111,"method":"get_recover_maps","params":[]}

Sollte 3, 7 und 11 ausgeben - deine Maps


set EG_Abst_vacuum json {"id":1112,"method":"get_recover_maps","params":[3]}

Sollte dann auf eine dieser Maps umschalten


set EG_Abst_vacuum json {"id":1113,"method":"name_segment","params":[{"miRoomId": "Test17", "robotRoomId": 17},{"miRoomId": "Test18", "robotRoomId": 18}]}

Sollte irgendwas umbenennen, evtl. brauchst du dabei aber alle Räume auf einmal in den Parametern
Anschliessender Check mal wieder mit:
set EG_Abst_vacuum json {"id":1234,"method":"get_room_mapping","params":[""]}

FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

KernSani

Zitat von: Markus M. am 30 Mai 2020, 19:25:28
Hab wieder was für dich :)


set EG_Abst_vacuum json {"id":1111,"method":"get_recover_maps","params":[]}
Sollte 3, 7 und 11 ausgeben - deine Maps
Leider nein... ich glaube das hatte ich auch schon probiert (get_recover_map das selbe)

2020.05.30 22:50:09 0: EG_Abst_vacuum: result for json request w/ id 1111, return is
$VAR1 = {
          'id' => 1111,
          'result' => 'unknown_method'
        };


Zitat
set EG_Abst_vacuum json {"id":1112,"method":"get_recover_maps","params":[3]}

Sollte dann auf eine dieser Maps umschalten
demzufolge auch nicht :-( "recover_map" kennt er auch nicht...

Zitat
set EG_Abst_vacuum json {"id":1113,"method":"name_segment","params":[{"miRoomId": "Test17", "robotRoomId": 17},{"miRoomId": "Test18", "robotRoomId": 18}]}

Sollte irgendwas umbenennen, evtl. brauchst du dabei aber alle Räume auf einmal in den Parametern
Anschliessender Check mal wieder mit:
set EG_Abst_vacuum json {"id":1234,"method":"get_room_mapping","params":[""]}

Leider auch nichts ... Die existierenden Namen werden dabei gelöscht, aber keine neuen gesetzt. Ich habe das auch für eine Karte probiert in der ich nur einen Raum habe...
==> Halte ich auch nicht für wichtig, schöner wäre es das korrekte Setzen der Karte hinzubekommen, ich komme da aber auch nicht wirklich weiter...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

florian2833

Da bei mir der Token nicht mehr über die bekannten Wege (unter anderem den in Post #1)auszulesen war hier meine Vorgehensweise, vielleicht gibts das aber schon in diesem Forum - die Suche sagte jedoch nein (oder ich war zu doof).

Sorry Markus wenn ich dir damit den Thread vollspamme - vielleicht kannst du das in Post 1 aufnehmen?


Problem:

Kein Token im Backup ab Firmware 3.5.4_004007 - alte Mi home App 5.0.19 verbindet sich nicht mehr mit dem Vakuum aufgrund dieser Firmare.

Ja natürlich, man kann mittels Flolevac ein downgrade machen, den Token ,wie im ersten Post beschrieben ist, auslesen und kommt so vermutlich auch ans Ziel.

Es geht aber schneller und einfacher. Und ohne Root.

Lösung: 

Kurz: Gehackte mi Home App von Vevs 

Lang:

Über Reddit bin ich darauf gestoßen, dass wohl auch andere dieses Problem haben, aber es sich recht einfach lösen lässt. Leider finde ich das nicht mehr, aber im Roboterforum gibts einen langen Thread darüber

Viele Webseiten zu dem Thema verweisen auf einen link unter *cloud.mail.ru/public/....  Dieser Link funktioniert jedoch nicht mehr, oder nicht immer, da dieser meist nur auf eine bestimmte Version der App verweist - neue Version -> Link obsolete.

Es gibt aber eine Webseite zu der App, welche eine funktionierende Version anbietet (die zugegeben) recht schwer (für mich) zu finden war: (link am ende - erst lesen dann machen..)



  • richte den Vakuum soweit möglich mit der Version ein du gerade hast
  • Paranoia mode on: Ich empfehle das Mi account Passwort jetzt (für die nachfolgenden Schritte) zu ändern.

  • Dann scrollt man auf dieser Seite recht weit nach unten, bis man linker Hand folgendes als link sieht "СКАЧАТЬ ВЕРСИЮ *5.6.xxx" (Siehe Angehängtes Bild.)

  • Ein Klick darauf und eine Apk "Mihome_5.6.****_*****_vevs.apk" wird zum download angeboten

  • Jetzt die alte mi Home app deinstallieren, die neue aufs Handy kopieren und installieren

  • Mi home app wie gewohnt einrichten, mit dem neuen Kennwort

  • Sobald sich alle Geräte wieder angemeldet haben (und du den Vakkum eingerichtet hast ) steht der Token schon bereit

  • Klicke dazu auf Profil -> Teilen -> geteilte Geräte. Jetzt siehst du alle Token, von allen Xiaomi devices. Auch den von deinem Sauger. Diesen gibst du in Fhem ein. Fertig.

Nach Abschluss solltest du die App wieder entfernen und deine Mi Home app wieder installieren. Und dein Kennwort natürlich wieder auf dein altes ändern, sofern du es im ersten schritt geändert hast.









Thema im Roboterforum
https://www.roboter-forum.com/index.php?thread/25148-token-auslesen-mit-mitoolkit-flolevac-russischer-mi-home-usw/&pageNo=7

Link zur App-webseite
https://www.kapiba.ru/2017/11/mi-home.html


MadMax-FHEM

Bevor ich mir eine russische App auf's Handy knall roote ich lieber...

Wenn die Umgebung mal installiert ist (auf z.B. einem PI: max. 30min), geht das fix...
...ebenso wie das Einspielen anderer FW-Stände (sofern diese "entschlüsselt" werden können, wobei der aktuelle Schlüssel sehr simpel ist ;)  )...
...und ohne App rauskramen, Passwörter ändern, zurück ändern, App runterwerfen (und hoffen, dass die inzwischen keine "dummen" Sachen macht ;)  )...

Man kann sich so etwas mit dem Sauger "unterhalten"..  ;)
Autom. FW-Updates verhindern...
...WLAN ändern/anpassen (wie man will)...
Und sogar den Cloud-Betrieb abstellen... :)

Geht aber leider (aktuell) nur mit V1 und V2 (S50)...

Daher ist bei mir noch kein anderes Modell "eingezogen"...

Aber das ist nur meine Meinung dazu... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

dominik

Auf einem Android Device geht das viel leichter, einfach Mi Home 5.4.54 installieren und den Token aus dem Log File entnehmen:
https://github.com/Maxmudjon/com.xiaomi-miio/blob/master/docs/obtain_token.md
Kapitel: Extract token from log file

Die Kapiba.ru Version empfehle ich keinesfalls zu installieren! Ich hatte diese auch mal installiert, nach ca. einem Jahr war auf meinem Chromebook eines Morgens die yandex.ru Money Seite und die kapiba.ru Seite offen und versuchte Geld zu ueberweisen. Wie das ging, ich weiss es nicht, hatte damals alles neu aufgesetzt und alle Passwoerter geaendert.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

TWART016

Zitat von: Andy89 am 21 April 2020, 07:46:42
mache ich - aber meine Motivation, sich darum zu kümmern ist sehr gering. ???


ich habe hier den Patch und das Skript angehängt.

Hi Andy,

musstest du die in ein gleiches VLAN packen, oder nur ins gleiche Netz? Ansonsten könnte man das mit einem 25er Subnetz trennen. z.B. 192.168.11.0/25 und 192.168.11.128/25.

Andy89

Zitat von: TWART016 am 03 Juni 2020, 00:40:53
Hi Andy,

musstest du die in ein gleiches VLAN packen, oder nur ins gleiche Netz? Ansonsten könnte man das mit einem 25er Subnetz trennen. z.B. 192.168.11.0/25 und 192.168.11.128/25.
das kann ich dir tatsächlich nicht sagen. Ich weiß nicht, ob das gleiche Netz tatsächlich das Problem gelöst hätte. Ein Versuch wäre es Wert  8)
FHEM 6.0 auf rPi4 docker (mit Alexa & Siri); dbLog, FTUI, Sonos, XiaomiMapCreator auf rPi4 docker;
raspimatic auf rPi3+ > diverse Aktoren und Sensoren;
LGW > (PCA301),EC3000,LaCrosse; MQTT2 > WLAN-Steckdosen,Xiaomi Map;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Withings;Unifi;AMAD

hoppel118

Auf das Ergebnis wäre ich auch gespannt. Habe es bisher auch nur mit unterschiedlichen VLANs getestet. Wobei das ja eigentlich auch der Sinn war, IoT-Geräte in ein eigenes VLAN zu packen... ;)

Gruß Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

TWART016

Zitat von: hoppel118 am 03 Juni 2020, 13:24:54
Auf das Ergebnis wäre ich auch gespannt. Habe es bisher auch nur mit unterschiedlichen VLANs getestet. Wobei das ja eigentlich auch der Sinn war, IoT-Geräte in ein eigenes VLAN zu packen... ;)

Gruß Hoppel

Das kann man auch, der erste Teil des Subnetz in VLAN10 und der zweite Teil in VLAN11. Dazwischen kann man eine Firewall haben und Traffic blockieren.

hoppel118

Ja klar, aber dann habe ich doch wieder das gleiche Problem, oder? Naja, kannst ja mal berichten, ob das funktioniert. Bin gerade auf Reise und etwas länger nicht am PC.

Viele Grüße Hoppel
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

TWART016

Zitat von: hoppel118 am 03 Juni 2020, 22:11:42
Ja klar, aber dann habe ich doch wieder das gleiche Problem, oder? Naja, kannst ja mal berichten, ob das funktioniert. Bin gerade auf Reise und etwas länger nicht am PC.

Viele Grüße Hoppel

Genau das weiß ich noch nicht. Mein Netzwerk ist noch nicht soweit. Werde es dann aber testen.

erdnar

OT: Hat jemand eine qualifizierte Quelle für einen Ersatz-Akku für den "rockrobo.vacuum.v1"?
Danke