Xiaomi Roborock und Homematic ohne iobroker
Moderator: Co-Administratoren
Xiaomi Roborock und Homematic ohne iobroker
Hey,
kennt jemand eine Möglichkeit einen Xiaomi Staubsauger S50/S5/Roborock 2 in Homematic einzubinden (CCU3) ohne über iobroker oder Mediola zugehen?
Danke.
kennt jemand eine Möglichkeit einen Xiaomi Staubsauger S50/S5/Roborock 2 in Homematic einzubinden (CCU3) ohne über iobroker oder Mediola zugehen?
Danke.
-
- Beiträge: 2483
- Registriert: 13.02.2012, 20:23
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 302 Mal
- Danksagung erhalten: 116 Mal
Re: Xiaomi Roborock und Homematic ohne iobroker
Was hast du denn vor?
Wenn es nur um das starten geht, Rootten deinen staubi und installiere das webbinterface drauf, danach kannst du über CUxD per http Befehl ihn starten.
https://www.youtube.com/watch?v=t3b2TN9 ... dex=4&t=0s
und teile davon
https://www.youtube.com/watch?v=SeyQrj2 ... 1w&index=3
Wenn es nur um das starten geht, Rootten deinen staubi und installiere das webbinterface drauf, danach kannst du über CUxD per http Befehl ihn starten.
https://www.youtube.com/watch?v=t3b2TN9 ... dex=4&t=0s
und teile davon
https://www.youtube.com/watch?v=SeyQrj2 ... 1w&index=3
-
- Beiträge: 6744
- Registriert: 22.05.2012, 08:40
- System: CCU
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 486 Mal
Re: Xiaomi Roborock und Homematic ohne iobroker
Was hast Du denn genau vor? IPSymconRoborock wäre noch eine Option.
Re: Xiaomi Roborock und Homematic ohne iobroker
Hey. Ich möchte einfach nur in der Homematic Aktionen mit dem Roborock ausführen, z.b. bei Abwesenheit das er dann startet ; Stadien sehen etv..etc. Allerdings scheint mir die Sache mit dem Rooten kompliziert zu sein. Setzt Kenntnisse in HTML voraus. Ob das Routen über Windows PC funktioniert?? Und das steuern über HTML mit cuxd und homematic genau so geht wie über iobroker ?
Keine Ahnung. Die Videos sind sicherlich hilfreich für jemanden, der HTML Kenntnisse hat und sich ein Lybien VM aufbauen kann....???
Keine Ahnung. Die Videos sind sicherlich hilfreich für jemanden, der HTML Kenntnisse hat und sich ein Lybien VM aufbauen kann....???
Re: Xiaomi Roborock und Homematic ohne iobroker
Ipsyncom wäre dann gut, wenn die zukünftige zentrale Steuerung über dieses laufen sollte.
Aber ich möchte die CCU3 als zentrales Element.
Aber ich möchte die CCU3 als zentrales Element.
-
- Beiträge: 6744
- Registriert: 22.05.2012, 08:40
- System: CCU
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 486 Mal
Re: Xiaomi Roborock und Homematic ohne iobroker
Wie kompliziert das ist hängt von den technischen Kentnissen des Nutzers ab, aber man sollte das nur machen wenn man sich ganz sicher ist was man tut. Grundsätzlich rooten muss man das Gerät nicht um es ansteuern zu können, das ist nur notwendig wenn man z.B. etwas auf dem Roborock aufspielen will wie z.B. ein alternatives Webinterface oder wenn man z.B. die Kartendaten des Robrock an ein externes System duchreichen will.
Einen einfachen Weg das nur mit Homematic Skripten mit der CCU zu steuern gibt es nicht. Du kannst entweder direkt auf der CCU3 piVCCU installieren und dann z.B. so was wie Symcon parallel installieren und dann dies zur Ansteuerung nutzten (s.o.). Alternativ könntest Du auch den Weg über das Addon RedMatic probieren und dort dann eine Node nachinstallieren die den Roborock steuern kann. Wie gut das mit RedMatic funktioniert kann ich selber nicht beurteilen, ich selber nutzte Symcon zur Ansteuerung eines Roborock Staubsaugerroboters.
Zuletzt geändert von Fonzo am 22.06.2019, 06:51, insgesamt 1-mal geändert.
-
- Beiträge: 487
- Registriert: 11.01.2015, 21:32
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 28 Mal
Re: Xiaomi Roborock und Homematic ohne iobroker
Einen gerooteten Xiaomi mit Valetudo (geht nur mit zwei Modellen!) per mqtt in node-red einzubinden geht wunderbar.
-
- Beiträge: 76
- Registriert: 16.05.2019, 10:10
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 11 Mal
Re: Xiaomi Roborock und Homematic ohne iobroker
Das mit der Homematic geht auch, Status abfragen und in Systemvariablen schreiben, steuern per CXUD...
ich hab schon mal mit einem script angefangen, aber die Zeit ist aktuell sehr wenig...
es gibt mehrere API Seiten die man auslesen kann, anbei mal am Beispiel der "current status"
Status: 6
Batterie: 100
Reinigungszeit-Zeit: 13
Reinigungsfläche-Zeit: 122500
error_code: 0
map_present 1
Fehlermeldung: "No error"
Status: "Returning home"
Lüfterdrehzahl: 100
angefangenes script, hier muss ich schon noch was tun, aber geht:
string Url = 'http://192.168.1.1/api/current_status';
string User = 'user';
string Password = 'password';
! Folgende Systemvariablen sind in der Homematic anzulegen:
! Status Werteliste (1, 2, 3, 4, Reinigung läuft,am Heimweg ,7 ,Charging, 9, Pause)
string stdout;
var posStart;
var posEnd;
string pos;
string dummy;
var substring;
string stderr;
! Mit HTTP Auth das verwenden (noch nicht getestet!)
! dom.GetObject("CUxD.CUX2801001:7.CMD_SETS").State("wget --http-user=" # User # " --http-password=" # Password # " -q -O - '" # Url # "'");
! Ohne Http Auth das verwenden
dom.GetObject("CUxD.CUX2801001:7.CMD_SETS").State("wget -q -O - " # Url);
dom.GetObject("CUxD.CUX2801001:7.CMD_QUERY_RET").State(1);
string stdout= dom.GetObject("CUxD.CUX2801001:7.CMD_RETS").State();
WriteLine("Originaldaten: ");
WriteLine(" ");
WriteLine(stdout);
WriteLine(" ");
WriteLine("Ausgabedaten für Systemvariablen:");
! Status abfrage
posStart = '"state":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Status: ' # substring);
! Batterie abfrage
posStart = '"battery":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Batterie: ' # substring);
! letzte Reinigungszeit abfragen
posStart = '"clean_time":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Reinigungszeit-Zeit: ' # substring);
! Gereinige Fläche abfragen
posStart = '"clean_area":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
! dom.GetObject('XAVI Status-Zeit').State(substring);
WriteLine('Reinigungsfläche-Zeit: ' # substring);
! error_code abfragen
posStart = '"error_code":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('error_code: ' # substring);
! map_present abfragen
posStart = '"map_present":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('map_present ' # substring);
! Fehlermeldung Zeichenkette abfragen
posStart = '"human_error":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Fehlermeldung: ' # substring);
! Status Zeichenkette abfragen
posStart = '"human_state":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Status: ' # substring);
! fan_power abfragen
posStart = '"fan_power":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Lüfterdrehzahl: ' # substring);
ich hab schon mal mit einem script angefangen, aber die Zeit ist aktuell sehr wenig...
es gibt mehrere API Seiten die man auslesen kann, anbei mal am Beispiel der "current status"
Status: 6
Batterie: 100
Reinigungszeit-Zeit: 13
Reinigungsfläche-Zeit: 122500
error_code: 0
map_present 1
Fehlermeldung: "No error"
Status: "Returning home"
Lüfterdrehzahl: 100
angefangenes script, hier muss ich schon noch was tun, aber geht:
string Url = 'http://192.168.1.1/api/current_status';
string User = 'user';
string Password = 'password';
! Folgende Systemvariablen sind in der Homematic anzulegen:
! Status Werteliste (1, 2, 3, 4, Reinigung läuft,am Heimweg ,7 ,Charging, 9, Pause)
string stdout;
var posStart;
var posEnd;
string pos;
string dummy;
var substring;
string stderr;
! Mit HTTP Auth das verwenden (noch nicht getestet!)
! dom.GetObject("CUxD.CUX2801001:7.CMD_SETS").State("wget --http-user=" # User # " --http-password=" # Password # " -q -O - '" # Url # "'");
! Ohne Http Auth das verwenden
dom.GetObject("CUxD.CUX2801001:7.CMD_SETS").State("wget -q -O - " # Url);
dom.GetObject("CUxD.CUX2801001:7.CMD_QUERY_RET").State(1);
string stdout= dom.GetObject("CUxD.CUX2801001:7.CMD_RETS").State();
WriteLine("Originaldaten: ");
WriteLine(" ");
WriteLine(stdout);
WriteLine(" ");
WriteLine("Ausgabedaten für Systemvariablen:");
! Status abfrage
posStart = '"state":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Status: ' # substring);
! Batterie abfrage
posStart = '"battery":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Batterie: ' # substring);
! letzte Reinigungszeit abfragen
posStart = '"clean_time":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Reinigungszeit-Zeit: ' # substring);
! Gereinige Fläche abfragen
posStart = '"clean_area":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
! dom.GetObject('XAVI Status-Zeit').State(substring);
WriteLine('Reinigungsfläche-Zeit: ' # substring);
! error_code abfragen
posStart = '"error_code":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('error_code: ' # substring);
! map_present abfragen
posStart = '"map_present":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('map_present ' # substring);
! Fehlermeldung Zeichenkette abfragen
posStart = '"human_error":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Fehlermeldung: ' # substring);
! Status Zeichenkette abfragen
posStart = '"human_state":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Status: ' # substring);
! fan_power abfragen
posStart = '"fan_power":';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();
dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));
WriteLine('Lüfterdrehzahl: ' # substring);
-
- Beiträge: 169
- Registriert: 15.12.2019, 12:26
- System: CCU
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 19 Mal
Re: Xiaomi Roborock und Homematic ohne iobroker
hi, hast Du da inzwischen was umsetzen können? Würde mich auch brennend interessieren. Habe den Roborock S50, an den Token bin ich rangekommen, iobroker, nodered, symcon usw. habe ich alles nicht und auch nicht vor.
Einfaches Starten und eventuell Stoppen des Roborock würde mir schon reichen.
Grüße
Germa
Einfaches Starten und eventuell Stoppen des Roborock würde mir schon reichen.
Grüße
Germa
wenn wir uns alle gegenseitig helfen, ist allen geholfen
_______________________________________________
CCU3 seit 2018, 103 Geräte, 202 Programme, 222 sysvar
Projekte: Wettersensor viewtopic.php?t=65631
_______________________________________________
CCU3 seit 2018, 103 Geräte, 202 Programme, 222 sysvar
Projekte: Wettersensor viewtopic.php?t=65631
Re: Xiaomi Roborock und Homematic ohne iobroker
Genau dieses Thema interessiert mich auch, Habe den Xiaomi Vacuum Gen. 1. Wenn man den automatisch starten könnte, wenn die Anwesenheitserkennung vollständige Abwesenheit erkennt, wäre das super.