fhempy: miio (Xiaomi WiFi Devices)

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

Vorheriges Thema - Nächstes Thema

JensS

@dominik
Seit einigen Tagen nenne ich einen Saug-Wischroboter Viomi S9 mein eigen.defmod Viomi PythonModule miio viomivacuum 192.168.100.148 <token>
attr Viomi IODev local_pybinding
attr Viomi room Labor

setstate Viomi active
setstate Viomi 2021-08-03 18:34:51 IODev Pythonbinding_15733
setstate Viomi 2021-08-03 18:11:47 accesspoint_bssid 18:a6:f7:9e:11:cd
setstate Viomi 2021-08-03 18:11:47 accesspoint_rssi -54
setstate Viomi 2021-08-03 18:11:47 accesspoint_ssid <wlan-ssid>
setstate Viomi 2021-08-03 18:11:47 firmware_version 1.6.2_2251
setstate Viomi 2021-08-03 18:11:47 mac_address 64:90:c1:6f:a5:34
setstate Viomi 2021-08-03 18:11:47 model viomi.vacuum.v18
setstate Viomi 2021-08-03 18:11:47 network_interface_gw 192.168.100.2
setstate Viomi 2021-08-03 18:11:47 network_interface_localIp 192.168.100.148
setstate Viomi 2021-08-03 18:11:47 network_interface_mask 255.255.255.0
setstate Viomi 2021-08-03 18:11:51 presence offline
setstate Viomi 2021-08-03 18:29:23 state active


Offensichtlich sind nur noch Anweisungen über die Cloud erlaubt. Ein paar Daten sind ihm trotzdem herauszulocken:'piid': 2, 'siid': 2, 'value': 0
'piid': 4, 'siid': 2, 'value': 0
'piid': 11, 'siid': 2, 'value': 1
'piid': 12, 'siid': 2, 'value': 3
'piid': 13, 'siid': 2, 'value': 0
'piid': 15, 'siid': 2, 'value': 11
'piid': 16, 'siid': 2, 'value': 8
'piid': 17, 'siid': 2, 'value': 0
'piid': 19, 'siid': 2, 'value': 1
'piid': 1, 'siid': 3, 'value': 100
'piid': 1, 'siid': 4, 'value': 0
'piid': 3, 'siid': 4, 'value': 1
'piid': 6, 'siid': 4, 'value': 1
'piid': 8, 'siid': 4, 'value': 98
'piid': 9, 'siid': 4, 'value': 177
'piid': 10, 'siid': 4, 'value': 99
'piid': 11, 'siid': 4, 'value': 357
'piid': 12, 'siid': 4, 'value': 98
'piid': 13, 'siid': 4, 'value': 177
'piid': 14, 'siid': 4, 'value': 100
'piid': 15, 'siid': 4, 'value': 180
'piid': 17, 'siid': 4, 'value': 1
'piid': 18, 'siid': 4, 'value': 2
'piid': 23, 'siid': 4, 'value': 0
'piid': 24, 'siid': 4, 'value': -7200
'piid': 25, 'siid': 4, 'value': 0
'piid': 26, 'siid': 4, 'value': 690
'piid': 27, 'siid': 4, 'value': 8
'piid': 28, 'siid': 4, 'value': '00000'
'piid': 29, 'siid': 4, 'value': 0
'piid': 30, 'siid': 4, 'value': 1
'piid': 31, 'siid': 4, 'value': 'de'
'piid': 32, 'siid': 4, 'value': 1627727920
'piid': 33, 'siid': 4, 'value': 'curMapUrl'
'piid': 34, 'siid': 4, 'value': 1627733086
'piid': 39, 'siid': 4, 'value': 1
'piid': 40, 'siid': 4, 'value': 0
'piid': 41, 'siid': 4, 'value': 1
'piid': 42, 'siid': 4, 'value': 'error'
'piid': 15, 'siid': 5, 'value': 0
'piid': 16, 'siid': 5, 'value': 22
'piid': 17, 'siid': 5, 'value': 0
'piid': 18, 'siid': 5, 'value': 6
'piid': 19, 'siid': 5, 'value': 0
'piid': 20, 'siid': 5, 'value': 0
'piid': 21, 'siid': 5, 'value': 0
'piid': 22, 'siid': 5, 'value': ''
'piid': 1, 'siid': 6, 'value': '0,0'
'piid': 1, 'siid': 7, 'value': 1
'piid': 2, 'siid': 7, 'value': 1627727920
'piid': 4, 'siid': 7, 'value': 'error'
'piid': 10, 'siid': 7, 'value': '0123'
'piid': 11, 'siid': 7, 'value': '[["2021/08/01/6480218025/329433889_225730220.bkmap","2021/08/01/6480218025/329433889_225729918.record",1627727920,"Karte1",1]]'
'piid': 13, 'siid': 7, 'value': '0123'
'piid': 14, 'siid': 7, 'value': 0
'piid': 15, 'siid': 7, 'value': '0123'
'piid': 16, 'siid': 7, 'value': 0
'piid': 3, 'siid': 8, 'value': 'error'
'piid': 4, 'siid': 8, 'value': 'girl_de'
'piid': 5, 'siid': 8, 'value': 0
'piid': 6, 'siid': 8, 'value': 100

Alle actions/Methoden werden mit timeouts beantwortet.
Versucht habe ich miio, miiocli und mirobo.

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

christian.71

Erstmal vielen Dank für das tolle Modul. Ich habe es soweit nun zum laufen gebracht. Meine beiden Xiaomi Kameras sind integriert. Nun wollte ich gerne die Hausüberwachung bei den Kameras aktivieren bzw. deaktivieren, allerdings finde ich den passenden Befehl dafür nicht. Kann mir jemand auf die Sprünge helfen?

andre07

Hallo

Ich bekomme leider meine token aus der Xiaomi Cloud nicht extrahiert
das steht im logroot: Error logging on to Xiaomi cloud (0): Cannot logon to Xiaomi cloud: 'userId'
Userid und passwort wurden richtig gesetzt mehrmals device gelöscht und neu angelegt.
Deshalb habe ich erstmal per windows app den token extrahiert
und das Device angelegt funktioniert so weit bin mir aber nicht sicher ob das so paßt
defmod licht_schreibtisch fhempy miio plug 192.168.178.34 xxxxxxxxxxxxxxxxxxxxxxxxxxx
Andre


dominik

Die Login Methode hatte sich geändert. Ich hatte dazu einen Fix eingespielt.

Falls du noch Probleme hast, bitte melden.

Wegen der Kamera: Prüfe bitte ob du die Kamera mit miio cli steuern kannst? Wenn du dort die passenden Befehle findest, dann bitte um Rückmeldung. Mein Code ist sehr generisch und somit wird alles unterstützt was python-miio (https://github.com/rytilahti/python-miio) kann.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

BigThunder

Hallo zusammen,

vielleicht kann mir jemand von euch weiterhelfen.
Ich hab einen Roborock Staubi (V5) und wollte diesen nun mittels dem miio Modul in FHEM einhängen.
Den Token habe ich mir über das fhempy xiaomi_tokens geholt. Das hat geklappt.
Allerdings wenn ich nun den Staubi mit dem define:

define miio_vacuum_1 fhempy miio vacuum 192.168.1.51 67xxxxxxxx
setuuid miio_vacuum_1 624ac43c-f33f-6abf-a4c1-923009ba96702590
attr miio_vacuum_1 IODev fhempy_local
attr miio_vacuum_1 room fhempy


einfüge in meine Config, dann bekomme ich nach einem shutdown restart folgende Fehlermeldung im Status des Moduls angezeigt:

Failed to execute function Define: Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/fhem_pythonbinding.py", line 379, in _onMessage
    ret = await asyncio.wait_for(
  File "/usr/lib/python3.9/asyncio/tasks.py", line 481, in wait_for
    return fut.result()
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/miio/miio.py", line 46, in Define
    if device_class.get_device_group().name == self._miio_devtype:
  File "/opt/fhem/.local/lib/python3.9/site-packages/miio/integrations/vacuum/roborock/vacuum.py", line 931, in get_device_group
    @dg.resultcallback()
AttributeError: 'DeviceGroup' object has no attribute 'resultcallback'


Beim define hab ich schon mehrere Varianten (verschiedene Types) ausprobiert. Bis auf eine Variante bekomme ich immer die gleiche Meldung.
Beim define:
define miio_vacuum_1 fhempy miio g1vacuum 192.168.1.51 67xxxxxxxx
gibt es keine Fehler. Allerdings lässt sich auch sonst nichts machen (keine Sets und keine Readings außer State)

Was mache ich denn da falsch?

Danke im Voraus!
BigThunder

dominik

Das ist leider ein Fehler in der Library.

Probier folgendes...
/opt/fhem/.local/lib/python3.9/site-packages/miio/integrations/vacuum/roborock/vacuum.py
@dg.resultcallback ändern in @dg.result_callback

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

Guenni1404

Hallo Dominik,

erstmal vielen Dank für das super Modul.
Nun mein Problem:

Ich habe eine Lampe als yeelight definiert. Ich kann sie ein und ausschalten, Helligkeit geht auch.
Wenn ich RGB setzen möchte erhalte ich immer die Meldung
Usage: set bedlamp set_rgb rgb

In welcher Form musss ich die RGB Werte eingeben?
Wenn ich miiocli direkt nutze funktioniert es mit
set_rgb 128 128 128


dominik

Hi,

ich habe mir es gerade angeschaut. Das wird noch nicht gehen, da der Datentyp Tuple verlangt wird, den ich aktuell noch nicht konvertiere.

Teste bitte die neue Version, ist in paar Minuten online, dort habe ich es testweise implementiert.

set bedlamp set_rgb (128,128,128)

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

Guenni1404

Zitat von: dominik am 25 April 2022, 23:37:02

Teste bitte die neue Version, ist in paar Minuten online, dort habe ich es testweise implementiert.

set bedlamp set_rgb (128,128,128)

sollte dann gehen.

HI,

habe ich getestet. Die Meldung kommt nicht mehr, aber leider wird die Farbe auch nicht geändert.
Falls du nochmals Zeit hättest und schauen könntest wäre es super.

Gruß

guenni

Guenni1404

Hi Dominik,

hattest du evtl nochmal Zeit zu schauen an was es liegen könnte?

Wäre super wenn RGB ginge.

Gruß

guenni


Zitat von: Guenni1404 am 26 April 2022, 21:10:19
HI,

habe ich getestet. Die Meldung kommt nicht mehr, aber leider wird die Farbe auch nicht geändert.
Falls du nochmals Zeit hättest und schauen könntest wäre es super.

Gruß

guenni

dominik

Danke für den Reminder!

Bitte ein Update auf 0.1.320 machen und folgendermaßen ausprobieren:
set bedlamp set_rgb 128,128,128
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Guenni1404

#176
Hi Dominik,

nach dem Update bekomme ich keine Verbindung mehr.
Im Log steht:
Traceback (most recent call last):
  File "FHEM/bindings/python/bin/fhempy", line 100, in <module>
    import fhempy.lib.fhem_pythonbinding as fpb
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py", line 16, in <module>
    from .core.zeroconf import zeroconf
ModuleNotFoundError: No module named 'fhempy.lib.core'
2022-05-08 20:19:38,369 - INFO     - __main__: Attempting install of fhempy>=0.1.12
2022-05-08 20:19:50,876 - INFO     - __main__: Successfully installed fhempy>=0.1.12
2022-05-08 20:19:50,880 - ERROR    - __main__: Failed to import fhempy, exit now...


Nachdem ich es gelöscht und nochmal neu gestartet habe kam diese Fehlermeldung:

Traceback (most recent call last):
  File "FHEM/bindings/python/bin/fhempy", line 100, in <module>
    import fhempy.lib.fhem_pythonbinding as fpb
ModuleNotFoundError: No module named 'fhempy'
2022-05-08 20:38:23,653 - INFO     - __main__: Attempting install of fhempy>=0.1.12
2022-05-08 20:38:38,565 - INFO     - __main__: Successfully installed fhempy>=0.1.12
2022-05-08 20:38:38,568 - ERROR    - __main__: Failed to import fhempy, exit now...
2022-05-08 20:39:38,921 - ERROR    - __main__: Failed to load fhempy

Hast du eine Idee?

dominik

Hmm...mach mal
sudo -u fhem bash
pip3 install --upgrade fhempy
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Guenni1404

Hi Dominik,

hat funktioniert. fhempy läuft wieder.


RGB funktioniert leider nicht.
Im Log steht folgendes wenn ich set_rgb 128,128,128 ausführe:
TypeError: Type Tuple cannot be instantiated; use tuple() instead
2022-05-08 21:36:33,434 - 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=TypeError('Type Tuple cannot be instantiated; use tuple() instead') 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 161, in send_command
    args.append(ann(params[par_name]))
  File "/usr/lib/python3.7/typing.py", line 668, in __call__
    raise TypeError(f"Type {self._name} cannot be instantiated; "
TypeError: Type Tuple cannot be instantiated; use tuple() instead


dominik

Bitte noch ein Test mit 0.1.329
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik