fhempy: miio (Xiaomi WiFi Devices)

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

Vorheriges Thema - Nächstes Thema

dominik

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

curt

Hallo in die Runde,

wegen dieses Threads habe ich mir einen "Xiaomi Mi Robot Vacuum Mop Pro Saugroboter mit Wischfunktion" gekauft, seit gestern ist er hier. Dank der PN-Hilfe von @Stelaku ist der Saugroboter (der noch keinen Millimeter saugte) schon fein in FHEM eingebunden und liefert artig readings. - Ich möchte mich zunächst herzlich und artig bedanken!

@dominik
Von Python habe ich so gar keine Ahnung. Folgendes ist passiert: Beim letzten Update gab es auch ein Update Deines Moduls - inklusive folgender Meldung:

2020.12.06 01:33:57.198 1 : 2020-12-03: !!!UPDATE YOUR fhem_pythonbinding.service WITH fhempy.service FILE!!!


Ähmm, ja, nix verstehn. Was muss ich denn da konkret machen?
RPI 4 - Jeelink HomeMatic Z-Wave

dominik

Nichts, das betrifft nur diejenigen die fhempy auf Remote Peers verwenden.
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 habe heute ein update in Fhem gefahren. Danach scheint der set status Befehl keine events mehr zu erzeugen. Ich habe ein DOIF was auf Docked reagieren soll. Vor dem update hat sich nach jedem set status der state des Xiaomi WiFi Devices aktualisiert. Auch die neue Funktion mit dem attr update_function zeigt keine reaktion bei der Eingabe status:30.
Im Pyhton log steht dann dieses
2020-12-07 15:17:46,912 - ERROR    - asyncio: Task exception was never retrieved
future: <Task finished coro=<miio.send_command() done, defined at /opt/fhem/FHEM/bindings/python/lib/miio/miio.py:119> exception=AttributeError("'NoneType' object has no attribute 'lower'")>
Traceback (most recent call last):
  File "/opt/fhem/FHEM/bindings/python/lib/miio/miio.py", line 164, in send_command
    if reply.lower() != "['ok']":
AttributeError: 'NoneType' object has no attribute 'lower'
2020-12-07 15:17:55,453 - ERROR    - lib.fhem_pythonbinding: Failed to execute function Set: Traceback (most recent call last):
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 314, in _onMessage
    fct_timeout,
  File "/usr/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/opt/fhem/FHEM/bindings/python/lib/generic.py", line 77, in Set
    return await utils.handle_set(self._conf_set, self, hash, args, argsh)
  File "/opt/fhem/FHEM/bindings/python/lib/utils.py", line 168, in handle_set
    all_args[cmd_def["args"][i]] = arg
KeyError: 'args'
(id: 1857760)
2020-12-07 15:18:05,399 - ERROR    - miio.miioprotocol: Got error when receiving: timed out
2020-12-07 15:18:05,400 - ERROR    - lib.utils: Error in asyncio thread
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/miio/miioprotocol.py", line 192, in send
    data, addr = s.recvfrom(1024)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/miio/miioprotocol.py", line 192, in send
    data, addr = s.recvfrom(1024)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/miio/miioprotocol.py", line 192, in send
    data, addr = s.recvfrom(1024)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/miio/miioprotocol.py", line 192, in send
    data, addr = s.recvfrom(1024)
socket.timeout: timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/fhem/FHEM/bindings/python/lib/utils.py", line 29, in run_blocking

Und wenn ich den Sauger aus der Ladestation per move Forward 2 herausfahren lasse und danach den set status Befehl gebe bekomme ich in der Fhem Ansicht ein pop up mit folgenden inhalt


Failed to execute function Set: Traceback (most recent call last):
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 314, in _onMessage
    fct_timeout,
  File "/usr/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/opt/fhem/FHEM/bindings/python/lib/generic.py", line 77, in Set
    return await utils.handle_set(self._conf_set, self, hash, args, argsh)
  File "/opt/fhem/FHEM/bindings/python/lib/utils.py", line 168, in handle_set
    all_args[cmd_def["args"][i]] = arg
KeyError: 'args'


Ich hoffe das hilft etwas weiter.

Viele Grüße

Stephan

dominik

Danke für die Logos, ich schau mir das heute Abend an.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Ich glaub ich habe die beiden Fehler lokalisiert. Update folgt...

Bzgl. der Readings, diese werden nun erst bei Änderungen aktualisiert.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

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

Stelaku

Hallo Dominik

Update durchgeführt leider ist das Problem immer noch da. Nach einen Move Forward Befehl mit anschliessenden set status Befehl bleibt der Status auf Docked stehen und es wird die
Pop up Meldung direkt über FHEM angezeigt. Auf der älteren Version wird nach Eingabe des move Befehl der Status des Saugers auf online gesetzt. Danach einen set status ohne Probleme.

Failed to execute function Set: Traceback (most recent call last):
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 320, in _onMessage
    fct_timeout,
  File "/usr/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/opt/fhem/FHEM/bindings/python/lib/generic.py", line 77, in Set
    return await utils.handle_set(self._conf_set, self, hash, args, argsh)
  File "/opt/fhem/FHEM/bindings/python/lib/utils.py", line 168, in handle_set
    all_args[cmd_def["args"][i]] = arg
KeyError: 'args'

Und im Pyhton Log
2020-12-07 21:04:20,853 - ERROR    - lib.fhem_pythonbinding: Failed to execute function Set: Traceback (most recent call last):
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 320, in _onMessage
    fct_timeout,
  File "/usr/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/opt/fhem/FHEM/bindings/python/lib/generic.py", line 77, in Set
    return await utils.handle_set(self._conf_set, self, hash, args, argsh)
  File "/opt/fhem/FHEM/bindings/python/lib/utils.py", line 168, in handle_set
    all_args[cmd_def["args"][i]] = arg
KeyError: 'args'
(id: 81736420)
2020-12-07 21:04:29,091 - ERROR    - lib.fhem_pythonbinding: Failed to execute function Set: Traceback (most recent call last):
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 320, in _onMessage
    fct_timeout,
  File "/usr/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/opt/fhem/FHEM/bindings/python/lib/generic.py", line 77, in Set
    return await utils.handle_set(self._conf_set, self, hash, args, argsh)
  File "/opt/fhem/FHEM/bindings/python/lib/utils.py", line 168, in handle_set
    all_args[cmd_def["args"][i]] = arg
KeyError: 'args'
(id: 39400711)
2020-12-07 21:05:01,061 - INFO     - lib.pkg_installer: Attempting install of fhempy
2020-12-07 21:05:08,733 - ERROR    - asyncio: Task exception was never retrieved
future: <Task finished coro=<PyBinding.onMessage() done, defined at /opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py:108> exception=SystemExit(1)>
Traceback (most recent call last):
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 110, in onMessage
    await self._onMessage(payload)
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 361, in _onMessage
    raise se
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 143, in _onMessage
    sys.exit(1)
SystemExit: 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.7/asyncio/base_events.py", line 539, in run_forever
    self._run_once()
  File "/usr/lib/python3.7/asyncio/base_events.py", line 1775, in _run_once
    handle._run()
  File "/usr/lib/python3.7/asyncio/events.py", line 88, in _run
    self._context.run(self._callback, *self._args)
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 112, in onMessage
    sys.exit(1)
SystemExit: 1
2020-12-07 21:05:09,997 - INFO     - lib.fhem_pythonbinding: Starting pythonbinding...
2020-12-07 21:05:19,026 - INFO     - lib.fhem_pythonbinding: FHEM connection started: 127.0.0.1
##############################################################################
Das wird ins Log geschrieben wenn die pop up Fehlermeldung von Fhem beim set status 

2020-12-07 21:13:32,409 - ERROR    - lib.fhem_pythonbinding: Failed to execute function Set: Traceback (most recent call last):
  File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 320, in _onMessage
    fct_timeout,
  File "/usr/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/opt/fhem/FHEM/bindings/python/lib/generic.py", line 77, in Set
    return await utils.handle_set(self._conf_set, self, hash, args, argsh)


Gruß

Stephan

dominik

Passiert das nur wenn du vorher ein andere Command mit Parametern ausgeführt hast? Oder jedes mal wenn du ein "set dev status" machst?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Stelaku

#39
Der Sauger steht in der Ladestation. Ist auch vom Device auf Docked. Wenn ich jetzt über Fhem move Forward mache fährt der Sauger los wie er soll. Die Statusanzeige bleibt auf Docked.
Wenn ich jetzt einen set status mache wird dieser nicht mehr umgesetzt und es kommen die Fehlermeldungen.
Also ja immer nur wenn ich ein Command mit Parameter ausgeführt habe und danach set dev status mache.

dominik

Nutzt du fhempy lokal oder auf einem remote peer?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

curt

Hallo @dominik,
ich habe den gleichen Saugroboter wie @Stelaku und dank seiner Hilfe die weitgehend gleiche FHEM-Konfiguration. Roboter kam, ich baute alles, Roboter lieferte Werte. (Ich habe noch keine Steuerung.)

Letztmalig kamen Roboterdaten am 2020-12-06 frühmorgens. Nach dem Update (und dem zweiten Update) kommen keine Daten mehr.

local_pybinding ist "opened". Pythonbinding_0 ist active - aber "stopped". Ein start bzw. restart führt wieder zu "stopped".

Sage bitte, wenn ich konkrete Daten (lists, logs) zu liefern habe.
RPI 4 - Jeelink HomeMatic Z-Wave

Stelaku

ZitatNutzt du fhempy lokal oder auf einem remote peer?

Hallo Dominik

Wenn ich das mit den remote peer richtig verstanden habe ist der dann auf einer zweiten Fhem instanz um eventuelle bluetooth Reichweiten zu erhöhen. Das habe ich bei mir nicht bewusst so aufgebaut.
Was ich allerdings habe sind zwei Raspberry´s  die parallel laufen, auf einem ist meine live Instanz und auf dem anderen meine test Instanz.Um sicher zu gehen habe ich das nochmal durchgespielt, aber diesmal mit ausgeschalteter live Instanz ( Raspberry kpl. heruntergefahren )wo ich noch die voll funktionierende fempy drauf habe.

Der Fehler ist aber auch dann noch erzeugbar. Nach einen set <dev> move Forward 4 und dann set <dev> status kommt das pop up und der log Eintrag.

Viele Grüsse und vielen dank für Deine hilfe

Stephan

dominik

@curt, das Pythonbinding_0 kannst du löschen. Da ist mir leider ein Fehler passiert, das hatte ich gestern Nacht bei mir auch gesehen.
Poste bitte das Log aus dem Pythonbinding_15733.

@Stelaku, ich hatte bei dir diesen Eintrag im Log gesehen:
2020-12-07 21:05:01,061 - INFO     - lib.pkg_installer: Attempting install of fhempy
Das sollte eigentlich auf einer FHEM Instanz nie passieren, daher dachte ich du bist auf einem Remote Peer. Remote Peers sind Installationen auf einem anderen Device (ohne FHEM!) um z.B. die Bluetooth Reichweite abdecken zu können. Hast du im BindingsIo Device ein "update" Command?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Ich schaffe es leider nicht den Fehler auf einem Xiaomi Vacuum V1 nachzustellen. Bitte auch um Pruefung im "BindingsIo" Device welche Version von fhempy verwendet wird, gibt ein Reading dazu. Es sollte 0.1.5 sein.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik