Plugin: MiRobot2Lox-NG - Xiaomi Vacuum Robots
Einklappen
X
-
Zuerst mal Danke für die tolle Arbeit. Das Einbinden hat bei mir dank der Anleitung problemlos funktioniert. Wäre es möglich, durch eine leichte Adaption das Plugin auch für den Xiaomi Smart Fan S2 zu verwenden? Er kommuniziert wie der Roboter auch via WLAN. Ich habe ihn zwar testweise als 2. Roboter eingetragen, was verständlicherweise nicht funktioniert hat...-
Du kannst direkt das Kommando und auch eine Option an das Programm miiocli übergeben. Der Aufruf der URL lautet:Code:http://loxberry/plugins/mirobot2lox-ng/sendcmd.cgi?command=sKOMMANDO&option=OPTION&robot=1&debug=0
Code:/usr/local/bin/miiocli -o json_pretty vacuum --ip IPROBOT --token TOKEN KOMMANFO OPTION 2>&1
-
Danke für den Tip. Das Kommando info funktioniert mit URL-Aufruf, andere Befehle nicht. Wenn ich in der Konsole vacuum durch fan ersetze, kann ich auch andere Kommandos übergeben (on, off, etc.). Die Befehlsreferenz findet sich hier: https://python-miio.readthedocs.io/e...odule-miio.fan oder ggf. auch hier https://github.com/syssi/xiaomi_fan.
Keine Ahnung, wie sich das nun in ein Plugin umwandeln lässt :-)Zuletzt geändert von Gast; 09.07.2020, 22:55. -
Das kann ich Dir einbauen. Mache ich am Wochenende.
-
-
Gast Sorry, ich hatte Dich vergessen... Installiere bitte mal den letzten Master: https://github.com/mschlenstedt/LoxB...ive/master.zip
Damit kannst Du in der URL eine zusätzliche Option "device" mit angeben. Wird diese Option gesetzt, wird anstelle von vacuum das angegebene Device verwendet. Aufruf so:
Code:http://loxberry/plugins/mirobot2lox-ng/sendcmd.cgi?command=KOMMANDO&option=OPTION&robot= 1&debug=0&device=fan
Code:/usr/local/bin/miiocli -o json_pretty fan --ip IPROBOT --token TOKEN KOMMANDO OPTION
🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine
LoxBerry - Beyond the Limits
Kommentar
-
Hallo, habe das problem "no space left on device" mittlerweile unter kontrolle. Dafür aber ein neues... :-(
Sporadisch reagiert der Roboter nicht mehr auf befehle. (Error: No responce from device)
Um den Fehler zu beheben, muss ich einfach nur die MiHome App öffnen und auf das Staubsauger-Template wechseln. Dann funktionieren die Befehle wieder für ca. 5 Tage.
Nach der Ram belegung habe ich geschaut, da ist genügend Platz frei.
Vielen Dank für die Hilfe.
Gruß OliKommentar
-
Hallo,
ich habe folgendes Problem:
bei mir reagiert der Xiaomi Mi Vacuum Cleaner Pro nicht auf Befehle über den Loxberry (und auch nicht über das Terminal).
Das einzige was funktioniert ist die Debug(Info) Abfrage!
Aber bei allen anderen Befehlen lädt er lang im Browser bis dann die Meldung kommt:
/usr/local/bin/miiocli -o json_pretty vacuum --ip 192.168.1.6 --token TOKEN start 2>&1 Output: ERROR:miio.miioprotocol:Got error when receiving: timed out Error: No response from the device
/usr/local/bin/mirobo discover --handshake 1
liefert auch ein Ergebnis:
/usr/local/bin/mirobo discover --handshake 1
INFO:miio.miioprotocol:Sending discovery to <broadcast> with timeout of 5s..
INFO:miio.miioprotocol: IP 192.168.1.6 (ID: 139df008) - token: b'ffffffffffffff ffffffffffffffffff'
INFO:miio.miioprotocoliscovery done
/usr/local/bin/miiocli -d -o json_pretty vacuum --ip 192.168.1.6 --token TOKEN raw_command miIO.info 2>&1
liefert:
INFO:miio.cliebug mode active
DEBUG:miio.vacuum:Read stored sequence ids: {'seq': 108, 'manual_seq': 0}
DEBUG:miio.protocol:Unable to decrypt, returning raw bytes: b''
DEBUG:miio.miioprotocol:Got a response: Container:
data = Container:
data = b'' (total 0)
value = b'' (total 0)
offset1 = 32
offset2 = 32
length = 0
header = Container:
data = b'!1\x00 \x00\x00\x00\x00\x13\x9d\xf0\x08_!v\x1a' (total 16)
value = Container:
length = 32
unknown = 0
device_id = unhexlify('139df008')
ts = 2020-07-29 13:14:02
offset1 = 0
offset2 = 16
length = 16
checksum = b'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff \xff\xff\xff\xff' (total 16)
DEBUG:miio.miioprotocoliscovered 139df008 with ts: 2020-07-29 13:14:02, token: b'ffffffffffffffffffffffffffffffff'
DEBUG:miio.miioprotocol:192.168.1.6:54321 >>: {'id': 109, 'method': 'miIO.info', 'params': []}
DEBUG:miio.miioprotocol:192.168.1.6:54321 (ts: 2020-07-29 13:14:02, id: 109) << {'partner_id': '', 'id': 109, 'code': 0, 'message': 'ok', 'result': {'hw_ver': 'Linux', 'fw_ver': '3.5.3_0017', 'ap': {'ssid': 'Smarttrins', 'bssid': 'e0:xx:xx:xx:xx:xx'}, 'netif': {'localIp': '192.168.1.6', 'mask': '255.255.255.0', 'gw': '192.168.1.1'}, 'model': 'viomi.vacuum.v8', 'mac': '64:xx:xx:xx:xx', 'token': 'TOKEN', 'life': 15286}}
{
"hw_ver": "Linux",
"fw_ver": "3.5.3_0017",
"ap": {
"ssid": "SSID",
"bssid": "e0:xx:xx:xx:xx:xx"
},
"netif": {
"localIp": "192.168.1.6",
"mask": "255.255.255.0",
"gw": "192.168.1.1"
},
"model": "viomi.vacuum.v8",
"mac": "64:xx:xx:xx:xx",
"token": "TOKEN",
"life": 15286
}
DEBUG:miio.vacuum:Writing {'seq': 109, 'manual_seq': 0} to /opt/loxberry/.cache/python-miio/python-mirobo.seq
hab bereits loxberry komplett neu installiert, hat aber nix gebracht..
weiters hab ich den Roboter auch noch einmal zurückgesetzt und den Token neu ausgelesen.
Prinzipiell müsste der Token aber korrekt sein, wenn die Debug(Info) funktioniert, ist das richtig?
Gibt es da eventuell generell ein Problem mit neueren Xiaomi Staubsaugerrobotern?
Kann mir bitte wer helfen dabei?
Danke und lg,
DominikZuletzt geändert von meteo88; 29.07.2020, 15:18.Kommentar
-
Ok, habe jetzt vom Entwickler vom python-miio Modul über Github erfahren, dass man den Xiaomi Mi Vacuum Cleaner Pro nur mit dem Befehl viomivacuum ansteuern kann (siehe https://github.com/rytilahti/python-miio/issues/750)
Leider gibt es beim viomivacuum Modul nur einige wenige (wohl aber die wichtigsten) Befehle zum ausführen (über python-miio):
carpet_mode Set the carpet mode.
clean_mode Set the cleaning mode.
dnd_status Returns do-not-disturb status.
fan_speed_presets Return dictionary containing supported fanspeeds.
home Return to home.
info Get miIO protocol information from the device.
led Switch the button leds on or off.
mop_mode partial(func, *args, **keywords) - new function with...
move Manual movement.
pause Pause cleaning.
raw_command Send a raw command to the device.
set_dnd Set do-not-disturb.
set_fan_speed Set fanspeed [silent, standard, medium, turbo].
set_language Set the device's audio language.
set_water_grade Set water grade [low, medium, high].
start Start cleaning.
status Retrieve properties.
stop Stop cleaning.
Allerdings haben die Befehle bei mir eine deutliche Verzögerung, teilweise >10s bis der Roboter reagiert, was nervig ist...
Aber zumindest ansteuern kann man ihn damit:
Beispiel für START:
miiocli viomivacuum --ip 192.168.1.6 --token TOKEN start
lg
Dominik
-
Hi in die Runde,
dieser Staubsauger verhält sich etwas anders bzw. kommuniziert etwas anders.
Ich habe folgendes Modell Mi Robot Vaccuum-Mop P (STYTJ02YM) und die Befehle lauten folgendermassen:
miiocli viomivacuum --ip 10.0.0.xxx --token xxxx status
miiocli viomivacuum --ip 10.0.0.xxx --token xxxx start
miiocli viomivacuum --ip 10.0.0.xxx --token xxxx stop
miiocli viomivacuum --ip 10.0.0.xxx --token xxxx home
Prof.Mobilux
Hab mal device=viomivacuum angehangen, das klappt leider nicht.
Hab vorher auch den Master installiert. Hmm.
Kannst du hier helfen?
VG
Frank
Zuletzt geändert von fs79; 30.07.2020, 14:30.Kommentar
-
Hi Frank,
haben die Befehle bei dir eine Verzögerung zwischen dem ausführen im Terminal bis zum Reagieren des Roboters? Bei mir eben teilweise mehr als 10 Sekunden...
wie @Prof.Mobilux in Beitrag #182 geschrieben hat, kann man ja im http Aufruf nun den device übergeben, d.h. man kann:
Code:http://loxberry/plugins/mirobot2lox-ng/sendcmd.cgi?command=KOMMANDO&option=OPTION&robot= 1&debug=0&device=viomivacuum
Was aber vermutlich komplett anders ist, ist die Statusabfrage des Roboters, die funktioniert bei mir überhaupt nicht.
lgKommentar
-
Das klappt bei mir leider nicht mit device=.
Aber bei mir scheint nach der Installation des o.a. ZIP Archivs einiges nicht zu klappen. Installiere jetzt die freigegebene Version und starte nochmal neu.
start, stop, status funktioniert bei mir.
Diese Kommandos aber auch nicht immer. Also leider mit viomivacuum als Device auch nicht stabil, ich teste alles auf der Commandline.
Mal sehen ob wir hier noch eine Lösung finden, da es aber im miiocli binary schon instabil ist, denke ich nicht das wir es mit dem Modul besser hinbekommen.
Da wird aber schon eine Weil dran "gefummel" und es ist noch nicht stabil, das macht mich etwas skeptisch.
Ganz guter Thread dazu, kommt von Homebridge dreht sich aber um dieses Gerät.
Home Assistant release with the issue: 0.99.3 Operating environment (Hass.io/Docker/Windows/etc.): Hass.io Integration: https://www.home-assistant.io/integrations/vacuum.xiaomi_miio/ Description of...
Zuletzt geändert von fs79; 30.07.2020, 15:11.Kommentar
-
meteo88
Probier mal folgendes.
Ändere bitte in der Datei den retry_count
/usr/local/lib/python3.7/dist-packages/miio/device.py
def send(
self,
command: str,
parameters: Any = None,
retry_count=3,
*,
extra_parameters=None
) -> Any:
def send(
self,
command: str,
parameters: Any = None,
#retry_count=3,
retry_count=20,
*,
extra_parameters=None
) -> Any:Kommentar
-
Prof.Mobilux
hier die Statusabfragen eines Roborock S50, der mit deinem Modul läuft.
#miiocli vacuum --ip x.x.x.x --token xx11223344 status
Running command status
<VacuumStatus state=Charger disconnected, error=No error bat=89%, fan=102% cleaned 0.0 m² in 0:00:07>
#miiocli viomivacuum --ip x.x.x.x --token xx11223344 status
State: ViomiVacuumState.Cleaning
Mode: ViomiMode.Vacuum
Error: Unknown error 0
Battery: 73
Fan speed: ViomiVacuumSpeed.Silent
Box type: ViomiBinType.Vacuum
Mop type: 0
Clean time: 0:00:24
Clean area: 24.32
Water grade: ViomiWaterGrade.Medium
Remember map: True
Has map: False
Has new map: False
Mop mode: ViomiMode.Vacuum
Häkchen für viomivacuum statt vacuum abfragen und/oder fürs parsen/mappen der unterschiedlichen Antwort von Xiamo Robot?
Ich benötige den Status vom Sauger um meine Alarmanlage abzuschalten wenn der läuft und die Steuerung um den zu starten wenn niemand daheim ist.
Das funktioniert mit meinem Roborock schon super. Dafür vielen Dank von mir für Dein Modul.Kommentar
-
Muss ich mir mal anschauen.🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine
LoxBerry - Beyond the Limits
Kommentar
-
Um den viomivacuum einzubinden brauche ich mal die Ausgabe von folgendem Kommando;
Code:/usr/local/bin/miiocli -o json_pretty viomivacuum --ip IP --token TOKEN status
🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine
LoxBerry - Beyond the Limits
Kommentar
-
Hi Prof.Mobilux
json_pretty darfst du nicht nutzen. Das muss also bei Nutzung von viomivacuum auch weggelassen werden.
Ansonsten ist der Auszug oben.Kommentar
-
Hi zusammen & Prof.Mobilux
Hap das repo gecloned und schon einiges verändert, passe jetzt noch den Grabber an so das der roborock status wenigstens wieder läuft,
Habe die Berechung bzw. den String für Dockrelease auch ins Wrapper Skript verschoben weil der Xiaomi da etwas anderes erwartet.
Das bedeutet das Roborock & Xiaomi schon mal gesteuert werden können.
Wobei zu beachten gilt das der Roborock da besser funktioniert, also weniger Delay hat, und mehr von seinen Stati, wie Verbrauchsmaterial, freigibt.
Ob es am Staubsauger selbst oder an der benutzen miiocli liegt kann ich nicht einschätzen.
vg
Kommentar
-
Sicher bin ich mir allem nicht. ;-)
json_pretty liefert nichts zurück wenn es mit dem viomivacuum benutzt wird.
Richtig, du hast sendcmd.cgi schon angepasst.
Ich habe nur die Bewegungsroutine (dockrelease) ins Wrapper Skript verschoben weil der viomivacuum die anders braucht. Schiebe nur die Zeit ins Wrapperskript und mache die Berechnung und Anpassung dann da.
OK, habs in meinem Repo drin.
Hab ein freies Textfeld für das Device ins Webinterface eingebaut, falls jemand etwas anderes als vacuum oder viomivacuum braucht.
grabber.pl ignoriert nun erstmal alles ausser das Device vacuum. D.b. wir können uns ums Parsen bzw. den Status des xiaomi später kümmern.
Was aus meiner Sicht noch fehlt:
Parsing des Status vom Xiaomi viomivacuum
Nice to have:
Steuerbuttons ausblenden für das was der Xiamo nicht kann
Ich denke so kann man das Plugin wieder komplett nutzen mit den Roborocks und mit den Xiaomis. Wobei bei den Xiaomis kein Status kommt, derzeit.
Wichtig ist wenn Ihr Xiaomi Bot shabt, das ihr im Python den Retry höher setzt.
/usr/local/lib/python3.7/dist-packages/miio/device.py
def send(
self,
command: str,
parameters: Any = None,
#retry_count=3,
retry_count=20,
*,
extra_parameters=None
) -> Any:Zuletzt geändert von fs79; 31.07.2020, 16:16.Kommentar
-
fs79 Super - vielen Dank! Mach bitte bei mir einen PullRequest in Git mit deinem Repo. Dann kann ich die Änderungen gleich übernehmen.
Das parsen des Status bauen wir dann halt über Regex ein. Scheint mir aber auch alles etwas hineingefrickelt zu sein im miiocli ;-)
Das Ausblenden machen wir nicht. Wir vermerken das im Wiki entsprechend. Das muss reichen.🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine
LoxBerry - Beyond the Limits
Kommentar
Kommentar