fhempy: miio (Xiaomi WiFi Devices)

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

Vorheriges Thema - Nächstes Thema

Guenni1404

Hallo Dominik,

Zitat von: dominik am 08 Mai 2022, 23:02:51
Bitte noch ein Test mit 0.1.329

RGB funktioniert. Dafür geht jetzt die Helligkeit (set_brightness) nicht mehr, die vorher funktioniert hat.
Fehler im Log:
2022-05-09 19:47:57,648 - ERROR    - bedlamp_Jenny: Exception raised by task: <Task finished coro=<miio.send_command() done, defined at /opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/miio/miio.py:137> exception=AttributeError("type object '_empty' has no attribute '_name'") created at /usr/lib/python3.7/asyncio/tasks.py:325>
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/generic.py", line 183, in _handle_task_result
    task.result()
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/miio/miio.py", line 153, in send_command
    elif ann._name == "Tuple":
AttributeError: type object '_empty' has no attribute '_name'


Wäre super wenn du es korrigieren könntest, so das beides funktioniert.

Trotzdem danke für die ganze Arbeit.

Gruß

guenni

dominik

Das bekommen wir hin ;)

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

Guenni1404


dominik

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

Guenni1404

Jetzt funktioniert alles. Besten Dank !

Guenni1404

Hallo Dominik,

mir sind noch zwei Sachen aufgefallen. Im Log bekomme ich immer folgende Meldung

2022-05-13 00:25:39,509 - ERROR    - bedlamp_1: Failed to send_command: info
2022-05-13 00:25:39,712 - ERROR    - bedlamp_2: Failed to send_command: info
2022-05-13 00:25:39,803 - ERROR    - bedlamp_3: Failed to send_command: info
2022-05-13 00:25:44,209 - ERROR    - airpuritest: Failed to send_command: info


Das wiederholt sich alle 10 Minuten.

Das zweite ist, wenn ein Gerät über WLAN nicht erreichbar ist, kommt folgende Logeintrag:


2022-05-13 00:35:14,273 - ERROR    - ricecooker: Failed to call status
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/miio/miio.py", line 164, in send_command
    reply = await utils.run_blocking(functools.partial(call_fct, *args))
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/utils.py", line 34, in run_blocking
    return await asyncio.get_event_loop().run_in_executor(pool, function)
  File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/opt/fhem/.local/lib/python3.7/site-packages/miio/click_common.py", line 183, in _wrap
    self._fetch_info()
  File "/opt/fhem/.local/lib/python3.7/site-packages/miio/device.py", line 153, in _fetch_info
    devinfo = DeviceInfo(self.send("miIO.info"))
  File "/opt/fhem/.local/lib/python3.7/site-packages/miio/device.py", line 108, in send
    command, parameters, retry_count, extra_parameters=extra_parameters
  File "/opt/fhem/.local/lib/python3.7/site-packages/miio/miioprotocol.py", line 161, in send
    self.send_handshake()
  File "/opt/fhem/.local/lib/python3.7/site-packages/miio/miioprotocol.py", line 74, in send_handshake
    raise DeviceException("Unable to discover the device %s" % self.ip)
miio.exceptions.DeviceException: Unable to discover the device 192.168.178.60


Ist es möglich diesen Logeintrag zu unterbinden? Dadurch "müllt" das Logfile zu.

Gruß

guenni

dominik

Hi,

die info Commands kannst du unterdrücken in dem du das Attribut
update_functions = status:60
setzt. Dann macht es keine info Abfragen mehr.

Das Fehlerlog werde ich auch beheben. Ich mache nun für "status" Abfragen keinen Fehler mehr, sondern setze das Device dann auf offline. Update ist morgen online.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Guenni1404

Hallo dominik,

ich möchte gerade mein System umziehen. Bisher hatte ich meinen Reiskocher eingebunden indem ich im miio Verzeichnis die Anpassung manuell eingepflegt habe.
https://github.com/sschirr/python-miioDas hatte auch wunderbar funktioniert und ich konnte es anlegen und wurde erkannt
defmod ricecooker fhempy miio multicooker ip token
Bei meinem Umzug habe ich die neuste Version von fhempy installiert. Das miio Verzeichnis angepasst und dann über xiaomi_tokens angelegt.

List:
Internals:
   CFGFN     
   DEF        miio device 192.168.178.xxx XXX
   FHEMPYTYPE miio
   FUUID      648739bf-f33f-952a-51d6-bf1cc32ea47b2307
   IODev      fhempy_local
   NAME       miio_device_333526512
   NR         11243
   PYTHONTYPE miio
   STATE      active
   TYPE       fhempy
   eventCount 2
   READINGS:
     2023-06-12 17:29:05   presence        offline
     2023-06-12 17:29:04   state           active
   args:
     miio_device_333526512
     fhempy
     miio
     device
     192.168.178.xx
     xxx
   argsh:
Attributes:
   group      miio
   room       fhempy

Dabei wird es als device angelegt. Wenn ich Info absetze kommt folgendes im Log:
2023-06-12 17:31:15,224 - ERROR    - miio_device_333526512: Exception raised by task: <Task finished name='Task-3273' coro=<FhemModule._run_coro() done, defined at /opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/generic.py:216> exception=KeyError('status')>
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/generic.py", line 224, in _handle_task_result
    task.result()
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/generic.py", line 218, in _run_coro
    await coro
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/miio/miio.py", line 208, in send_command
    await self.send_command("status", None)
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/miio/miio.py", line 139, in send_command
    fct = self._device._device_group_commands[fct_name].func
KeyError: 'status'


Wenn ich es in multicooker umbenenne passiert leider nichts.

Was muss ich machen, damit es wieder funktioniert? Oder was muss ich vom alten System ins neue übernehmen, damit er die richtigen Daten hat?

Gruß

guenni

Guenni1404

Hi Dominik,

ich habe jetzt festgestell, wenn ich die Dateien vom Altsystem )Stand Mitte Dezember 2022) nehme funktioniert es sofort wieder nach einem neustart. Vielleicht hilft es ja
10_BindingsIo.pm
10_fhempy.pm
10_fhempyServer.pm
10_PythonBinding.pm
10_PythonModule.pm

coolheizer

#189
Ich bekomme den Xiaomi Mop2 Pro, sowie einen älteren xiaomi Roborock V1 nicht zum laufen.

Beide sind mit dem 72_XiaomiDevice.pm bereits eingebunden, wobei der Mop2 Pro nur als connected angezeigt wird und nicht gesteuert werden kann, dieses nur am Rande um zu zeigen das die tokens beider passen.

Fhempy läuft und google_weather sowie das Geizhalz modul laufen einwandfrei.

Im DeviceOverview :
Module failed to load: miio Maybe you need to update fhempy on this or remote peer. Stacktrace: Traceback (most recent call last): File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py", line 336, in handle_function module_object = await self.import_module(hash) File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py", line 574, in import_module functools.partial(importlib.import_module, pymodule) File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/utils.py", line 72, in run_blocking return await asyncio.get_event_loop().run_in_executor(pool, function) File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1006, in _gcd_import File "", line 983, in _find_and_load File "", line 967, in _find_and_load_unlocked File "", line 677, in _load_unlocked File "", line 728, in exec_module File "", line 219, in _call_with_frames_removed File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/miio/miio.py", line 8, in from miio.click_common import DeviceGroupMeta ModuleNotFoundError: No module named 'miio'

Internals:
   CFGFN     
   DEF        miio vacuum 191.168.178.44 xxxxx
   FHEMPYTYPE miio
   FUUID      64b83d9c-f33f-bfeb-3ba0-34b5e2c4429bcc10
   IODev      fhempy_local
   NAME       Robo
   NR         1770
   PYTHONTYPE miio
   STATE      Module failed to load: miio
Maybe you need to update fhempy on this or remote peer.

Stacktrace:
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py", line 336, in handle_function
    module_object = await self.import_module(hash)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py", line 574, in import_module
    functools.partial(importlib.import_module, pymodule)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/utils.py", line 72, in run_blocking
    return await asyncio.get_event_loop().run_in_executor(pool, function)
  File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/miio/miio.py", line 8, in <module>
    from miio.click_common import DeviceGroupMeta
ModuleNotFoundError: No module named 'miio'

   TYPE       fhempy
   eventCount 3
   READINGS:
     2023-07-19 21:47:50   state           Module failed to load: miio
Maybe you need to update fhempy on this or remote peer.

Stacktrace:
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py", line 336, in handle_function
    module_object = await self.import_module(hash)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py", line 574, in import_module
    functools.partial(importlib.import_module, pymodule)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/utils.py", line 72, in run_blocking
    return await asyncio.get_event_loop().run_in_executor(pool, function)
  File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/miio/miio.py", line 8, in <module>
    from miio.click_common import DeviceGroupMeta
ModuleNotFoundError: No module named 'miio'

   args:
     Robo
     fhempy
     miio
     vacuum
     191.168.178.44
     xxxx
   argsh:
Attributes:
   alias      Robo
   room       fhempy

Kann damit leider nix anfangen, hoffe mir kann geholfen werden, Installation ist auf Fhem.

Gruß
Karsten


Update:
hatte vakuum statt vacuum bei der erstellung geschrieben, oben nochmal neu geschrieben/ aktualisiert mit:
define Robo fhempy miio vacuum 191.168.178.44 xxxxxx
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Stelaku

Hallo coolheizer
Ich habe den Xiaomi Mop2 pro auch und wir haben den mit einer abgeänderten Version des 72_XiaomiDevice.pm Modul zum laufen bekommen.
Vieleicht hilft Dir das ja weiter. Alle Infos dazu findenst Du hier
https://forum.fhem.de/index.php?topic=118170.msg1115923#msg1115923
und hier der letzte bei mir funktionierende Stand des Moduls
72_XiaomiDevice.pm

coolheizer

Hallo Stephan,
sicher das du den Mop2 Pro hast und nicht den Mop Pro?

Der Mop Pro hat ein etwas ovales Türmchen, der Mop2 Pro hat ein rundes Türmchen.

Im angelegten Device wird als Model "ijai.vacuum.v3" bei mir angezeigt.

Die datei 72_XiaomiDevice.pm hatte ich schon vor über 1 Jahr erfolglos getestet.

Die 72_XiaomiDevice.pm ist aus 02.2021, den Mop2 Pro gibt es erst seit letztem Jahr.





Was bedeutet der Fehler(fhempy):
ModuleNotFoundError: No module named 'miio'
es scheint das dieses Modul nicht gefunden wird, muss ich Händisch noch Dateien kopieren?

FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Stelaku

du hast leider recht der turm von meinem Sauger ist Oval.
Schade. dann haben wir doch nicht den selben. Meinen habe ich schon 2020 gekauft.

coolheizer

Bekomme es leider nicht zum laufen, habe jetzt auf Bullseye aktualisiert somit auch aktuelles Python:
Module failed to load: miio Maybe you need to update fhempy on this or remote peer. Stacktrace: Traceback (most recent call last): File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/fhem_pythonbinding.py", line 336, in handle_function module_object = await self.import_module(hash) File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/fhem_pythonbinding.py", line 573, in import_module module_object = await utils.run_blocking( File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/utils.py", line 72, in run_blocking return await asyncio.get_event_loop().run_in_executor(pool, function) File "/usr/lib/python3.9/concurrent/futures/thread.py", line 52, in run result = self.fn(*self.args, **self.kwargs) File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1030, in _gcd_import File "", line 1007, in _find_and_load File "", line 986, in _find_and_load_unlocked File "", line 680, in _load_unlocked File "", line 790, in exec_module File "", line 228, in _call_with_frames_removed File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/miio/miio.py", line 8, in from miio.click_common import DeviceGroupMeta ModuleNotFoundError: No module named 'miio'
Er findet scheinbar kein miio Modul.
FHEM 5.8 auf Raspberry Pi 3, HM-MOD-UART und  MapleCUN.
HM-MOD-Re-8 für Velux Rolladensteuerung.
HM-CC-RT-DN.
HM-SEC-SCo.
HM-LC-Bl1PBU-FM.

Guenni1404

Hallo Dominik,

danke für das super Modul. Allerdings habe ich ein Problem mit meinem Reiskocher.
Bei miio selber wird er mit den Parametern
--ip 192.168.178.60 --token XXXTOKENXXX start langer_String_des_Kochprogrmms
Bei dir verlangt er
Start cooking a profile.
Arguments: profile: str duration: int schedule: int akw: bool

Besteht die Möglichkeit das anzupassen?

Gruß

guenni