fhempy: miio (Xiaomi WiFi Devices)

Begonnen von dominik, 30 Oktober 2020, 21:26:31

Vorheriges Thema - Nächstes Thema

curt

Zitat von: Stelaku am 16 Dezember 2020, 07:20:31
Probier doch mal bitte Dich in der Mijo Home app auf Deinem Handy einmal abzumelden und dann wieder anzumelden. Nur um Deine Benutzerdaten mal zu überprüfen.

Danke für den Hinweis und die Wegerläuterung.

Ich kann mich mit Mailadresse und Password dort problemlos neu anmelden.
RPI 4 - Jeelink HomeMatic Z-Wave

dominik

Eventuell den Server vorher noch setzen. de/cn?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

curt

Zitat von: dominik am 16 Dezember 2020, 08:26:16
Eventuell den Server vorher noch setzen. de/cn?

Bitte konkreter und ausführlicher.
(Ich soll set xiaomi_tokens countrys vor allem anderen auf de setzen?)
RPI 4 - Jeelink HomeMatic Z-Wave

dominik

Zitat von: curt am 16 Dezember 2020, 08:36:00
Bitte konkreter und ausführlicher.
(Ich soll set xiaomi_tokens countrys vor allem anderen auf de setzen?)
Ja, set xiaomi_tokens country cn.

Sofern cn für dich richtig ist, das musst du in der Xiaomi App schauen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Stelaku

Hallo Dominik

Ich wollte mich nochmal melden. Es sind jetzt ja ein paar Tage vergangen und so manche update´s in Fhemweb gewesen.
Heute habe ich nochmal ein update in meiner Test Instanz durchlaufen lassen in der die fhemweb.js auch wieder mit im update war.
Die Fehlermeldung ist jetzt nicht mehr reproduzierbar.
Wenn ich den Sauger per move Forward aus der Ladestation herausfahre und dann die set status Abfrage anklicke, wird das drop down wie gehabt nicht neu geladen und ich kann gleich wieder auf set status klicken.
Aber diesmal kommt das pop up Fenster nicht mehr. Die status Anfrage wird zwar auch nicht vom Sauger beantwortet. Denn das Reading state bleibt unverändert auf ViomiVacuumState.Docked.
Erst nach ca. 3 Minuten ändert sich das Reading state auf ViomiVacuumState.Idle.

Im Pyhtonbinding log. ist kein Eintrag in dieser Zeit.

Viele Grüsse und ein schönes Weihnachtsfest.

Stephan

dominik

Hi,

danke für die Info. Das bedeutet aber, der Fehler ist noch immer vorhanden, nur kommt keine Fehlermeldung, richtig?

Frohe Weihnachten auch!
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Stelaku

Hallo Dominik

Das ist richtig. Der set status Befehl wird nicht verarbeitet wenn der Sauger zuvor manuell gefahren wurde.

Im normalen Betrieb wird der set status Befehl gesendet und ich erhalte kurz darauf neue aktuelle Readings über z.b. Battery, clean_area und so weiter.

Gruß

Stephan

curt

Freunde des gewischten Küchenbodens,

Zitat von: curt am 16 Dezember 2020, 07:57:37
Zitat
Probier doch mal bitte Dich in der Mijo Home app auf Deinem Handy einmal abzumelden und dann wieder anzumelden. Nur um Deine Benutzerdaten mal zu überprüfen.
Danke für den Hinweis und die Wegerläuterung.
Ich kann mich mit Mailadresse und Password dort problemlos neu anmelden.

Es ging nicht vor und nicht zurück. Ich war stinkesauer (nein, nicht auf Euch, Euch bin ich dankbar) und beschloss, mir Weihnachten nicht verderben zu lassen: Dann haben halt die Chinesen den Einmarschplan in mein Haus ...

Ich spiele Updates des Betriebssystems sowie von FHEM eigentlich immer zeitnah ein. Und nun überkam es mich: Mal wieder probieren. Ok, Token-Device neu anlegen, dann User/Pass und Token abholen:

define xiaomi_tokens PythonModule xiaomi_tokens
set xiaomi_tokens username USERNAME@MAIL.COM
set xiaomi_tokens password PASSWORD
set xiaomi_tokens get_tokens


Hmmm, tut nicht. Aber das kenne ich ja nun. Ok, nochmal auf dem ollen S4 bei der App abmelden und neu anmelden ... wird nichts bringen, das brachte noch nie was. User/Pass stimmen. Immerhin.

Eher aus unterdrückter Wut spielte ich dann das o.g. Procedere nochmals durch ... tut wieder nicht. Und nochmals durchspielen - offenbar ist es das in unserer Branche berühmte magische Zaubersalz: Huch, da steht ja jetzt doch ein Token?

Au fein, schnell in das noch vorhandene Device von Putzi eintragen!
Args, tut nicht. Ok, vielleicht schläft Putzi zu tief - mal Putzi wecken (händisch, Anfahren an Ladestation). Neh, tut auch nicht. Boah, wasnDreck.
Dann kam ich eher genervt auf die Idee, FHEM vermittels shutdown restart neu zu starten, kostet ja nix.

Na holla die Waldfee - auf einmal purzeln die Readings nur so.  :)
Ihr dürft Euch mit mir freuen.

Nun kommt die Frage aller Fragen:
Was kann ich denn jetzt damit so alles machen?

Ok, ich sehe dann wohl den Status, kann Putzi starten sowie zum Laden schicken. Aber geht da noch mehr? Vermutlich, denn @Stelaku hatte mir eher theoretisch mal gezeigt, dass so eine Art "1 Meter vorwärts, dann 45° drehen" geht. Aber geht noch mehr? Was geht alles?

Also eigentlich würde ich sehr schön finden, wenn es eine Liste der Möglichkeiten gäbe. Jaja, ich weiß. Sagen wir mal: Den Anfang einer solchen Liste.

Meine letzte Frage mag unbotmäßig klingen, ist aber nicht so gemeint - es geht nur um das Verständnis:
Es gibt da doch noch ein anderes Modul für diese Xiaomi-Sauger, das hantiert auch mit dem Token rum. Was passiert eigentlich, wenn man den Token da reinwirft?
RPI 4 - Jeelink HomeMatic Z-Wave

dominik

Zitat von: Stelaku am 23 Dezember 2020, 18:39:59
Hallo Dominik

Das ist richtig. Der set status Befehl wird nicht verarbeitet wenn der Sauger zuvor manuell gefahren wurde.

Im normalen Betrieb wird der set status Befehl gesendet und ich erhalte kurz darauf neue aktuelle Readings über z.b. Battery, clean_area und so weiter.

Gruß

Stephan

Das ist ärgerlich. Sollte es dich stark stören, suche ich noch weiter, ansonsten würde ich das Thema vorerst mal beiseite legen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

@curt, super, dass es nun klappt! :)

Alle Befehle die du als "set" Command setzen kannst, sollten auch funktionieren. Die "Liste" der Befehl kannst du also einfach im FHEM Web einsehen.

Ob das andere Modul auch funktioniert, kommt auf deinen Saugroboter drauf an. Wenn er damit geht, dann empfehle ich das andere Modul zu verwenden, da dort Saugroboter gleich mit allen Funktionen integriert sind. Im miio Modul müsstest du ein paar update_functions setzen um alle Readings immer aktuell zu halten.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Stelaku

ZitatDas ist ärgerlich. Sollte es dich stark stören, suche ich noch weiter, ansonsten würde ich das Thema vorerst mal beiseite legen.

Hallo Dominik

Das ist überhaupt kein Problem. Es funktioniert ja alles so weit. Dieses Phänomen ist ja nur in einem extremen Sonderfall zu beobachten.

Vielen dank für Deine wirklich tolle Arbeit an diesem Modul.

Hallo Curt

Ich freue mich auch sehr das es jetzt bei Dir funktioniert.
Was Du da mit jetzt alles anstellen kannst wird nur durch Deiner Phantasie Grenzen gesetzt.
Ich habe bei mir ja einen kleinen Fahrstuhl für den Sauger gebaut, damit er zwei Stufen in ein höheres Geschoss fahren kann. Da ist es schon sehr
schön den Sauger, wenn er denn nach oben oder nach unten mit dem Fahrstuhl fährt, auf pause zu stellen.
Sonst randaliert er die ganze Zeit immer gegen die Fahrstuh Rehling und ist dann wenn er unten oder oben angekommen ist kpl. verwirrt.
Was auch sehr nett ist, wenn ich nach Hause komme wird über die Anwesenheit meines Handy´s ein Befehl gesetzt, der den Sauger zum Mülleimer fahren lässt.
Ja und zu guter letzt sollte meine Alarmanlage durch den Sauger nicht ausgelöst werden. Das wird dank der Anbindung an Fhem auch super gewährleistet.

ZitatMeine letzte Frage mag unbotmäßig klingen, ist aber nicht so gemeint - es geht nur um das Verständnis:
Es gibt da doch noch ein anderes Modul für diese Xiaomi-Sauger, das hantiert auch mit dem Token rum. Was passiert eigentlich, wenn man den Token da reinwirft?

Da habe ich bis jetzt noch keinen Erfolg mit gehabt. Bis auf ein connect nach anlegen des Device ist bei mir nichts weiter geschehen. Es werden readings angezeigt mit der Firmware Version.
Nur ein steuern des Saugers ist bis heute nicht möglich. Brauch ja auch nicht. Funktioniert mit fempy ja sehr gut.

Ich wünsche euch einen guten rutsch ins neue Jahr.

Viele Grüße

Stephan



dominik

Noch zur Info, ihr könnt jede Funktion (set Befehl) regelmäßig mit update_functions ausführen lassen. Z.B. um die Filterwerte laufend zu aktualisieren oder die aktuelle Saugstärke, etc.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

curt

@Stelaku
In dem 72_Xiaomi ist "unser" Robot nun (ansatzweise) integriert: Das ist ein noch laufender Prozess.
RPI 4 - Jeelink HomeMatic Z-Wave

curt

@dominik
In den Thread zu 72_Xiaomi (noch besser: im zuständigen Wiki-Artikel) müsste Dein Weg zum Token eigentlich auch beschrieben werden. Denn Dein Weg funktioniert. - Die hantieren da mit wilden Konstruktionen von alten Apps usw.
RPI 4 - Jeelink HomeMatic Z-Wave

curt

@dominik
"list xiaomi_tokens" wirft aktuell einen Fehler:


STATE      Failed to execute function Define: Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py", line 336, in _onMessage
    fct_timeout,
  File "/usr/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_tokens/xiaomi_tokens.py", line 46, in Define
    self.create_async_task(functools.partial(self.obtain_tokens))
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/generic.py", line 97, in create_async_task
    task = asyncio.create_task(coro)
  File "/usr/lib/python3.7/asyncio/tasks.py", line 325, in create_task
    return loop.create_task(coro)
  File "/usr/lib/python3.7/asyncio/base_events.py", line 405, in create_task
    task = tasks.Task(coro, loop=self)
TypeError: a coroutine was expected, got functools.partial(<bound method xiaomi_tokens.obtain_tokens of <fhempy.lib.xiaomi_tokens.xiaomi_tokens.xiaomi_tokens object at 0xb5b66a10>>)

RPI 4 - Jeelink HomeMatic Z-Wave