fhempy: xiaomi_gateway3 (Xiaomi Gateway V3)

Begonnen von dominik, 11 Dezember 2020, 19:04:20

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

RockFan

Jetzt ist es im Log wieder wie am Anfang:


2022-02-06 22:35:22,366 - ERROR    - fhempy.lib.xiaomi_gateway3.core.gateway3: Processing MQTT: ble/a4c1388a5024 b'{"humidity":38,"temperature":22.2,"battery":100}'
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/gateway3.py", line 663, in on_message
    await self.process_ble_retain(topic[4:], msg.json)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/gateway3.py", line 449, in process_ble_retain
    await self.add_entity(domain, device, k)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/helpers.py", line 66, in add_entity
    await self.setups[domain](self, device, attr)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/xiaomi_gateway3.py", line 177, in setup
    await handler(gw, device, attr)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/xiaomi_gateway3.py", line 159, in create_device
    await self.fhempy_devices[did].initialize(device)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3_device/xiaomi_gateway3_device.py", line 107, in initialize
    await self._fhempy_device.initialize(device)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3_device/devices/base.py", line 98, in initialize
    for attr in attr_settings[device["model"]]:
KeyError: 1371
2022-02-06 22:35:22,375 - ERROR    - fhempy.lib.xiaomi_gateway3.core.gateway3: Processing MQTT: ble/a4c138aa0cc5 b'{"temperature":23.8,"battery":100,"humidity":32}'
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/gateway3.py", line 663, in on_message
    await self.process_ble_retain(topic[4:], msg.json)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/gateway3.py", line 449, in process_ble_retain
    await self.add_entity(domain, device, k)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/helpers.py", line 66, in add_entity
    await self.setups[domain](self, device, attr)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/xiaomi_gateway3.py", line 177, in setup
    await handler(gw, device, attr)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/xiaomi_gateway3.py", line 159, in create_device
    await self.fhempy_devices[did].initialize(device)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3_device/xiaomi_gateway3_device.py", line 107, in initialize
    await self._fhempy_device.initialize(device)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3_device/devices/base.py", line 98, in initialize
    for attr in attr_settings[device["model"]]:
KeyError: 1371


Es kommt dann später etwas abgewandelt immer folgendes:


2022-02-06 22:37:04,061 - ERROR    - fhempy.lib.xiaomi_gateway3.core.gateway3: Processing MQTT: log/ble b'{"did":"blt.3.199dtq7tclk00","eid":4102,"edata":"4101","pdid":1371,"seq":148}'
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/gateway3.py", line 650, in on_message
    await self.process_ble_event_fix(msg.json)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/gateway3.py", line 399, in process_ble_event_fix
    await self.process_ble_payload(device, payload)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/gateway3.py", line 414, in process_ble_payload
    await self.add_entity(domain, device, k)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/helpers.py", line 66, in add_entity
    await self.setups[domain](self, device, attr)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/xiaomi_gateway3.py", line 177, in setup
    await handler(gw, device, attr)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/xiaomi_gateway3.py", line 159, in create_device
    await self.fhempy_devices[did].initialize(device)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3_device/xiaomi_gateway3_device.py", line 107, in initialize
    await self._fhempy_device.initialize(device)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3_device/devices/base.py", line 98, in initialize
    for attr in attr_settings[device["model"]]:
KeyError: 1371
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

dominik

Alles klar, weiß wo der Fehler liegt. Behebe es morgen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

RockFan

Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

dominik

Fix ist ready, bitte mit 0.1.218 testen.

Ich glaube Bluetooth Devices hatte noch niemand (ich auch nicht), daher die Fehler... :)
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

RockFan

Yeah!

Sieht gut aus. Beide Sensoren werden jetzt mit Werten angezeigt. Vielen vielen Dank.

Sicherheitshalber noch ein Auszug aus dem Log, da ich Warnings und einen Error sehe. Zur Erklärung um Verwirrung zu vermeiden: LEDBuld1, LEDStrip un wz_Lampe verwende ich derzeit nicht mit fhempy (werden aber erkannt).


2022-02-07 18:55:08,363 - WARNING  - asyncio: Executing <Handle <TaskWakeupMethWrapper object at 0xb4845ad0>(<Future finis...events.py:396>) created at /opt/fhem/.local/lib/python3.7/site-packages/aiohttp/helpers.py:730> took 0.122 seconds
2022-02-07 18:55:09,658 - ERROR    - da_LEDBulb1: Annotation is not class: typing.Tuple[int, int, int]
2022-02-07 18:55:09,664 - ERROR    - da_LEDStrip: Annotation is not class: typing.Tuple[int, int, int]
2022-02-07 18:55:09,670 - ERROR    - wz_Lampe: Annotation is not class: typing.Tuple[int, int, int]
2022-02-07 18:55:10,833 - WARNING  - asyncio: Executing <Handle <TaskWakeupMethWrapper object at 0xb1743b30>(<Future finis...events.py:396>) created at /usr/lib/python3.7/asyncio/futures.py:288> took 0.162 seconds
2022-02-07 18:55:14,736 - ERROR    - wz_Lampe: Failed to send_command: status
2022-02-07 18:55:14,744 - ERROR    - wz_Lampe: Failed to send_command: info
2022-02-07 18:56:19,605 - ERROR    - fhempy.lib.fhem: Timeout - NO RESPONSE for command: readingsSingleUpdate($defs{'upnp'},'uuid.014c7500-4475-0074-094d-003844747c08_urn.schemas-upnp-org.device.MediaRenderer.1','TX-NR414',0)


Die Rauchmelder müssen erstmal in China abgeschickt werden. Kann also noch dauern ;)
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

dominik

Sieht soweit gut aus....


Zitat2022-02-07 18:56:19,605 - ERROR    - fhempy.lib.fhem: Timeout - NO RESPONSE for command: readingsSingleUpdate($defs{'upnp'},'uuid.014c7500-4475-0074-094d-003844747c08_urn.schemas-upnp-org.device.MediaRenderer.1','TX-NR414',0)
Die NO RESPONSE stören mich. Kann aber vorkommen, wenn FHEM ziemlich überlastet ist und daher zu langsam reagiert.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

RockFan

Dann ist es soweit ja prima. Ich habe mal alle Logs durchsucht und nur ein weiteres NO RESPONSE gefunden.

Was mir noch bei den beiden Devices auffällt ist, dass sie immer nur eine ganz kurze Zeit (teilweise nur Sekunden) state=online haben und dann wieder auf offline gehen. Das wechselt immer wieder mal.
Ich glaube, dass wenn state auf online geht, sieht die Device Overview ein wenig seltsam aus:

23.9 °C, 34 %

Da schleicht sich dann dieses merkwürdige A mit Dach ein. Ich glaube, dass sobald state auf offline es wieder weg geht. Ich kann mich nach einer Weile des Beobachtens aber nicht 100% auf den Zusammenhang mit state festlegen.
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

dominik

Hmm...den online/offline Wechsel kann ich noch nicht nachvollziehen. Geht das Device immer auf online wenn es Werte aktualisiert?

Wegen der Darstellung, das schau ich mir noch an. Das dürfte ein generisches fhempy Problem beim Encoding sein oder bei der Darstellung in FHEM.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

RockFan

Ja, es fühlt sich so an, als würde es beim Aktualisieren online gehen. Oft nur super kurz (vielleicht sogar weniger als eine Sekunde) manchmal aber auch etwas länger (ich hatte es mal mehr als eine Minute auf online stehen sehen).

Mir ist auch aufgefallen, das manchmal das xiaomi_gateway3_device für ein paar Momente (mehrere Sekunden) offline geht.

Das ist alles etwas schwer zu beobachten, da es unregelmäßig ist und verschiedene Devices - die beiden Sensoren und das Gateway - betroffen sind.

Ist aber alles nicht ganz so wichtig oder gar eilig. Für mich funktioniert das jetzt :)
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

dominik

Kannst du bitte mal einen Test machen wegen dem Celsius Zeichen. Änder bitte den Inhalt von
/opt/fhem/FHEM/10_BindingsIo.pm
Zeile 405 aktuell:   $response = Encode::encode("UTF-8", $response);
ändern in:   $response = Encode::encode("utf8", $response);

Danach bitte einen FHEM Restart machen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

RockFan

Änderung und Neustart haben erstaunlicherweise mehrere Auswirkungen:
- Das A mit Dach ist weg  :)
- In den beiden Devices steht state jetzt immer auf online  :)
- es steht eine Fehlermeldung im Log (siehe unten) und genau für diesen Sensor gibt es seit der Meldung keine Aktualisierung mehr (fhem Neustart war wenige Minuten zuvor)


2022-02-08 20:42:44,395 - ERROR    - fhempy.lib.xiaomi_gateway3.core.gateway3: Processing MQTT: log/ble b'{"did":"blt.3.199dtq7tclk00","eid":4106,"edata":"64","pdid":1371,"seq":127}'
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/gateway3.py", line 650, in on_message
    await self.process_ble_event_fix(msg.json)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/gateway3.py", line 399, in process_ble_event_fix
    await self.process_ble_payload(device, payload)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/gateway3.py", line 414, in process_ble_payload
    await self.add_entity(domain, device, k)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/core/helpers.py", line 66, in add_entity
    await self.setups[domain](self, device, attr)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/xiaomi_gateway3.py", line 177, in setup
    await handler(gw, device, attr)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3/xiaomi_gateway3.py", line 159, in create_device
    await self.fhempy_devices[did].initialize(device)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3_device/xiaomi_gateway3_device.py", line 107, in initialize
    await self._fhempy_device.initialize(device)
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3_device/devices/base.py", line 119, in initialize
    await self.async_update(device["init"])
  File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/xiaomi_gateway3_device/devices/base.py", line 141, in async_update
    for reading in data:
RuntimeError: dictionary changed size during iteration

Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

dominik

Super, danke für den Test!

Update steht bereit, inkl. Fix für den Error.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

RockFan

Die BindingsIo Devices habe ich heute Morgen aktualisiert. Ich denke fhem-Update selbst kann bis zum Wochenende warten, da ja die gleiche Änderung in 10_BindingsIo.pm enthalten sein wird, die ich gestern manuell gemacht habe. Richtig?

Bisher sieht es jedenfalls gut aus. Das mit der Aussage, dass die Sensoren jetzt immer online anzeigen nehme ich zurück, aber das ist nicht so wichtig, da sie jedenfalls immer wieder (unregelmäßig) aktualisiert werden.

Vielen besten Dank für die Umsetzung und den tollen Support!

Jetzt bin ich auf die Rauchmelder gespannt, die gestern losgeschickt worden sein sollten - das wird aber bestimmt noch ein Weilchen dauern  ;)
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

RockFan

Habe vor nun einer halben Stunde auch fhem aktualisiert und direkt zuvor auch die BindingsIo Devices auf den neuesten Stand (0.1.226) gebracht.
Bisher alles gut :)

Was allerdings sehr seltsam ist, ist die Tatsache, dass bis zu Aktualisierung vorhin seit gestern Abend das fhem-Log plötzlich mit folgenden Einträgen überschwemmt wurde (alle 1 bis 3 Sekunden):


2022.02.11 19:29:40 1: ERROR: empty name in readingsBeginUpdate
2022.02.11 19:29:40 1: stacktrace:
2022.02.11 19:29:40 1:     main::readingsBeginUpdate           called by (eval 1594220) (1)
2022.02.11 19:29:40 1:     (eval)                              called by ./FHEM/10_BindingsIo.pm (462)
2022.02.11 19:29:40 1:     main::BindingsIo_processMessage     called by ./FHEM/10_BindingsIo.pm (573)
2022.02.11 19:29:40 1:     main::BindingsIo_readWebsocketMessage called by ./FHEM/10_BindingsIo.pm (221)
2022.02.11 19:29:40 1:     main::BindingsIo_Read               called by fhem.pl (3898)
2022.02.11 19:29:40 1:     main::CallFn                        called by fhem.pl (776)
2022.02.11 19:29:40 1: readingsUpdate(,state,offline) missed to call readingsBeginUpdate first.
2022.02.11 19:29:40 1: stacktrace:
2022.02.11 19:29:40 1:     main::readingsBulkUpdate            called by fhem.pl (4930)
2022.02.11 19:29:40 1:     main::readingsBulkUpdateIfChanged   called by (eval 1594220) (1)
2022.02.11 19:29:40 1:     (eval)                              called by ./FHEM/10_BindingsIo.pm (462)
2022.02.11 19:29:40 1:     main::BindingsIo_processMessage     called by ./FHEM/10_BindingsIo.pm (573)
2022.02.11 19:29:40 1:     main::BindingsIo_readWebsocketMessage called by ./FHEM/10_BindingsIo.pm (221)
2022.02.11 19:29:40 1:     main::BindingsIo_Read               called by fhem.pl (3898)
2022.02.11 19:29:40 1:     main::CallFn                        called by fhem.pl (776)

Die Log-Datei ist damit mal eben auf 300MB angewachsen.

Das war natürlich noch mit meiner manuellen Änderung am Dienstag in 10_BindingsIo.pm. Seit dem Update vorhin ist hier wieder Ruhe.

Ich beobachte weiter.
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...