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

RappaSan

Otto hat mich auf die richtige Idee gebracht.
Die Meldung des fehlenden Staubbehälters provoziere ich nun mit einem watchdog, nachdem ich den Sauger nach getaner Tat an eine bestimmte Stelle geschickt habe.
Er fährt los, wenn ich per Anwesenheitserkennung im FHEM gemeldet wurde und äußert sein Begehr über das Sonos-System.
Danach wartet er, daß der Behälter entnommen und nach Leerung wieder eingesetzt wird. Anschließend fährt er wieder in die Ladestation.
Feddich ! :)

ToM_ToM

Hallo Zusammen,

kann man eigentlich irgendwie die Lautstärke für den "locate" Befehl einstellen? Habe auch in der Xiaomi App nichts gefunden. Die Ansage wo sich der Roborock gerade befindet, ist extrem laut.

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

Markus M.

Der locate Befehl ist unabhängig von der eingestellten Lautstärke, damit man die nicht erst aufdrehen muss um den Sauger zu finden.
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

Newbee

Zitat von: Tinko am 29 Oktober 2017, 10:06:19
[Gelöst: Token bei neuer Firmware des Xiaomi Roboters mittels iPhone und MAC/PC auslesen] siehe update unten

Update: Habe es jetzt durch ausprobieren herausgefunden:
- Roboter eingerichtet lassen im Heimnetzwerk
- Backup vom iphone machen
- Roboter nicht zurücksetzen und auch kein WLAN reset
- 96 Token aus Backup auslesen
- 96 Token in 32 umrechnen
- 32 Token verwenden - fertig

Ich habe ein Mischung aus diesen beiden Anleitungen verfolgen müssen. Allein mit einer hätte ich nicht verstanden was ich tun soll.

https://forum.smartapfel.de/forum/thread/370-saugroboter-xiaomi-mi-robot-vacuum-token-auslesen/ (hauptsächlich gefolgt)
https://github.com/jghaanstra/com.xiaomi-miio/blob/master/docs/obtain_token_mirobot_new.md (unterstützend bei Fragen)

Gruß.

Hallo Tinko,

Damit hat es bei mir nun auch funktioniert!  :D

Danke!

Grüße Newbee
Intel-NUC mit ubuntu server 20.04; FHEM 6.0
HM, Dect, Netatmo, Hue

stehajo

Zitat von: RappaSan am 29 April 2018, 10:05:32
Otto hat mich auf die richtige Idee gebracht.
Die Meldung des fehlenden Staubbehälters provoziere ich nun mit einem watchdog, nachdem ich den Sauger nach getaner Tat an eine bestimmte Stelle geschickt habe.
Er fährt los, wenn ich per Anwesenheitserkennung im FHEM gemeldet wurde und äußert sein Begehr über das Sonos-System.
Danach wartet er, daß der Behälter entnommen und nach Leerung wieder eingesetzt wird. Anschließend fährt er wieder in die Ladestation.
Feddich ! :)

Hi RappaSan

könntest Du das etwas konkreter beschreiben? Das wäre echt Klasse. Mich würde der code für den watchdog, sowie die Implementierung an sich interessieren, würde es gerne nachbauen.

Dankeschön,
Stephan

RappaSan

Gerne. Ich habe mal alles komplett in eine cfg gepackt. Es sollte genügen, daß an entsprechender Stelle die richtige IP, Token und das Presence-device eingetragen werden.
Verbesserungsvorschläge sind immer willkommen.

ToM_ToM

ZitatDer locate Befehl ist unabhängig von der eingestellten Lautstärke, damit man die nicht erst aufdrehen muss um den Sauger zu finden.
Das habe ich gemerkt. Und man kann es auch in der App nicht anpassen. Daher geht es wohl auch nicht übers Modul... oder? Es ist ja vom Grundsatz her auch sinnvoll dass dieser lauter ist. Jedoch ist der schon extrem laut und ich würde ihn gerne ein wenig leiser einstellen. ;)

VG und einen schönen 1. Mai! ;)
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

RappaSan

In der neuesten app von flole ist die Karte mittlerweile integriert.
Also scheint es ja irgendwie machbar zu sein - vielleicht auch in dem prima FHEM-Modul?
Man kann dort sogar die Koordinaten in die Zwischenablage kopieren, leider verstehe ich die kopierte Zahlenkolonne nicht.
Es wäre schon ein riesiger Schritt in die Richtung, daß man die Goto- und Zone-Funktion komfortabler nutzen könnte.

gsbox

Hi.

@RappaSan
Ich habe einen gerooteten Robo in der 2. Gen. Das mit den Zonen fand ich auch ziemlich "unglücklich" gelöst. Daher habe ich zwei Linux-Scripte geschrieben, sowie das Xiaomi-Fhem-Modul gepimpt. Ich kann nun mittels eines Fhem-Dummies angeben, welche Zone (EZ = Esszimmer, KU=Küche, etc) ich in Fhem einlernen will. Anschliessend drücke ich in der MiHome-App auf "zoned clean", definiere die Zone und sage "starte". Dann trägt das Skript die empfangenen Koordinaten der Zone (oder Zonen, wenn mehrere definiert), in das Dummy-Device als Reading ein.

Bei dem Staubi kann ich dann mittels eines eigenen Befehls "sauge [ez|ku|...]" die jeweilige Zone säubern lassen. So komfortabel sollte das schon von Werk aus sein....

Ich kann das bei Bedarf ja mal dokumentieren und hier bekannt geben....

Esjay

Zitat von: gsbox am 03 Mai 2018, 11:28:15
Hi.

@RappaSan
Ich habe einen gerooteten Robo in der 2. Gen. Das mit den Zonen fand ich auch ziemlich "unglücklich" gelöst. Daher habe ich zwei Linux-Scripte geschrieben, sowie das Xiaomi-Fhem-Modul gepimpt. Ich kann nun mittels eines Fhem-Dummies angeben, welche Zone (EZ = Esszimmer, KU=Küche, etc) ich in Fhem einlernen will. Anschliessend drücke ich in der MiHome-App auf "zoned clean", definiere die Zone und sage "starte". Dann trägt das Skript die empfangenen Koordinaten der Zone (oder Zonen, wenn mehrere definiert), in das Dummy-Device als Reading ein.

Bei dem Staubi kann ich dann mittels eines eigenen Befehls "sauge [ez|ku|...]" die jeweilige Zone säubern lassen. So komfortabel sollte das schon von Werk aus sein....

Ich kann das bei Bedarf ja mal dokumentieren und hier bekannt geben....

Das hört sich ja schon fast nach dem "heiligen Gral" an. Ich denke das Interesse die Informationen hier zu erhalten ist durchaus vorhanden.

Grüße

RappaSan

@gsbox: markus hat mit seinem Modul ja schon einen 1A job hingelegt. Ich denke, er kann mit jeder hilfreichen Info etwas anfangen.

@Markus: flole hat das mit der Karte hinbekommen, ohne daß der Staubi gerootet werden muß. Vielleicht bekommst Du von ihm den entscheidenden Tip? :)

gsbox

Ok, ich werde mich mal daran machen, das zu dokumentieren und die skripte hier zu posten. Ich hoffe, dass ich das zeitnah schaffe.

Das einzige Problem, was ich jetzt noch habe, ist dass der "clean"-Befehl die karte löscht und damit die Zonen ungültig macht und man den ganzen "driss" wieder von vorne  machen muss... Jetzt suche ich einen Weg, wie ich auf dem Roboer den "clean"-Befehl abfangen kann und statt dessen einen "zoned clean" aufrufen kann. Das sollte natürlich auch über die Taste am Roboter funktionieren... Vielleicht kennt da jemand einen Weg ?

VG

thymjan

Gibts in fhem eine Struktur in der man eine Art Arbeitsliste abbilden kann?

Listeneinträge:
Reinige Zone A
Reinige Zone B
Reinige Zone C

Mit einem notify kann man doch abfangen wenn ein job erledigt ist,
dann den nächsten starten.

So könnte man nach und nach weitere Bereiche hinzufügen während der Staubsauger schon am arbeiten ist.

Hat jemand ne Idee dazu?

Diggewuff

die Entschlüsselung des tokens scheint bei mir nicht zu funktionieren.
Asked to truncate 170 bytes, which is greater than Crypt::Cipher::AES's blocksize (16 bytes).

2018.05.03 18:00:45 4: vacuum: Crypt::Rijndael_PP not found
2018.05.03 18:00:45 3: vacuum: initialized, using AES
2018.05.03 18:00:45 3: vacuum: token decryption using Crypt::Cipher::AES
2018.05.03 18:00:45 1: vacuum: token decryption failed

Asked to truncate 170 bytes, which is greater than Crypt::Cipher::AES's blocksize (16 bytes).


Hat jemand dazu einen Hinweis?

Mit entschlüsseltem token funktioniert es einwandfrei
habe sowohl
Crypt::Cipher::AES
als auch
Crypt::Rijndael_PP
getestet.

gsbox

Hi.

So, ich habe mal versucht zu dokumentieren, wie ich bei mir das automatische Eintragen der Zonen in FHEM realisiert habe. Man muss zwar ein paar Voraussetzungen erfüllen, aber wer das hinbekommt, dem könnten meine Skripte ein wenig helfen.

Auslesen der Saug-Zonen und automatisches Eintragen in FHEM
===========================================================

Voraussetzung:

- Der Robot ist gerootet und man kommt per ssh darauf
- Man kann per ssh auf dem raspi ein Kommando absetzen
- Auf dem Robi ist die "bash" installiert

Anleitung:

1. Anlegen des FHEM Dummy Device. Ich habe hier die meine Zonen
   definiert (ez = Esszimmer, di = Diele, etc)

 
   define StaubiZonen dummy
   attr StaubiZonen eventMap none ez ku di hwr wz_ez_ku ug og

2. Anlegen einer perl-Funktion in 99_myUtils.pm

######################################################
# Bekommt vom Roboter eine neue Zone mitgeteilt
######################################################
sub
checkNewZone($)
{
   my $zonenWert = shift;
   # Demaskieren der Zonen : A=[ und B=]
   $zonenWert =~ s/A/\[/g;
   $zonenWert =~ s/B/\]/g;
   my $zonenStatus = Value("StaubiZonen");
   my $msg = "Neue Staubsauger-Zone erhalten : $zonenWert";
   Log 3,"$msg";
   
   fhem("setreading StaubiZonen last_zone $zonenWert");
   
   if ($zonenStatus eq "none")
   {
  return;
   }

   my @zonen = split(" ",AttrVal("StaubiZonen", "eventMap", "none"));
   foreach my $zone (@zonen)
   {
  if ($zonenStatus eq $zone)
  {
$msg = $msg . " und in $zone gespeichert";
fhem("setreading StaubiZonen $zone $zonenWert");
fhem("set StaubiZonen none");
last;
  }
   }
}

3. Auf dem Roboter
==================
3.1 Verzeichnis "/root/zoneWatch" Verzeichnis anlegen
3.2 "sendNewZone.sh" :
     - editieren und zweimal die IP des Raspi eintragen (Zeile 24)
     - in Verzeichnis aus 3.1 kopieren
3.3 die Datei "watch4zones.sh" ebenso in Verzeichnis kopieren
3.4 Ausführungsrechte für beide Dateien setzen
3.5 in beiden Dateien in "/etc/rc.local" eintragen, damit sie beim Neustart
    gestartet werden
    "rc.local":
    /root/zoneWatch/watch4zones.sh &
    sleep 2
   /root/zoneWatch/sendNewZone.sh &

3.6 starten der beiden Skripte :
    - "/root/zoneWatch/watch4zones.sh &"
    - "/root/zoneWatch/sendNewZone.sh &"

4. 72_XiaomiDevice.pm Anpassungen
=================================
4.1 Ich habe in der Datei das "sauge"-Kommando inkl der Zonen ergänzt
    - Zeile 530
    - Zeile 802 bis 841

5. Anwendung
============
5.1 Wenn man nun die Zonen einlernen will, dann geht man wie folgt vor :
   1. Man setzt bei dem Dummy "StaubiZonen" die Zone, die man einlernen will
   2. Dann definiert man die Zone/Zonen in der MiHome-App und startet dann
      dort die Zonen-Reinigung.
     
   3. Wenn alles richtig funktioniert, dann wird nun automatisch in FHEM die
      erkannte Zone/Zonen in die eingestellte Zone gespeichert
   4. Nun kann man von FHEM aus mittels "set Staubsauger sauge [ez|di...]"
      die jeweilige Zone reinigen lassen.

Die benötigten Dateien habe ich als hier angehängt.

Ich hoffe, ich konnte dem ein oder anderen helfen