fhempy: ble_monitor (Bluetooth Low Energy)

Begonnen von dominik, 15 Februar 2022, 23:36:47

Vorheriges Thema - Nächstes Thema

dominik

Eine Frage, wie lange hast du gewartet beim Rauchmelder ob ein Signal kommt? Kann es sein, dass der nur alle 24h ein Signal schickt?

Ansonsten probier mal
aioblescan -m MAC
dann siehst du ob der Rauchmelder Daten schickt.
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 hab den "Fehler", das Device sendet die Signale verschlüsselt.

Hol dir bitte mal wie hier beschrieben den BLE KEY:
https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor

In der Zwischenzeit baue ich die Nutzung des BLE KEYs im Modul ein.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Attribut encryption_key kann nun benutzt werden. Probier es bitte aus und lass mich wissen was es tut :)
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Nighthawk

#18
Hallo Dominik,

habe ich eingetragen, leider ohne sichtbaren Erfolg:

2022-02-20 10:30:47,208 - INFO     - fhempy.lib.fhem_pythonbinding: Starting fhempy...
2022-02-20 10:30:47,214 - INFO     - fhempy.lib.fhem_pythonbinding: Waiting for FHEM connection
2022-02-20 10:30:47,235 - INFO     - websockets.server: server listening on 0.0.0.0:15733
^[[B^[[B2022-02-20 10:30:56,985 - INFO     - websockets.server: connection open
2022-02-20 10:30:56,985 - INFO     - fhempy.lib.fhem_pythonbinding: Incoming FHEM connection: 127.0.0.1
2022-02-20 10:30:57,034 - WARNING  - zeroconf: Error with socket 12 (('192.168.42.0', 5353))): [Errno 126] Required key not available
Traceback (most recent call last):
  File "/usr/lib/python3.9/asyncio/selector_events.py", line 1056, in sendto
    self._sock.sendto(data, addr)
OSError: [Errno 126] Required key not available
2022-02-20 10:30:57,414 - DEBUG    - Feuermelder_SZ: BLE monitor stopped
2022-02-20 10:30:57,414 - DEBUG    - Feuermelder_SZ: Spawning HCIdump thread
2022-02-20 10:30:57,415 - DEBUG    - Feuermelder_SZ: HCIdump thread: Init
2022-02-20 10:30:57,415 - INFO     - Feuermelder_SZ: Attention! Option report_unknown is enabled for Off sensors, be ready for a huge output
2022-02-20 10:30:57,415 - DEBUG    - Feuermelder_SZ: 1 encryptors mac:key pairs loaded
2022-02-20 10:30:57,415 - DEBUG    - Feuermelder_SZ: sensor whitelist: [54:EF:44:E4:6A:81]
2022-02-20 10:30:57,415 - DEBUG    - Feuermelder_SZ: 1 sensor whitelist item(s) loaded
2022-02-20 10:30:57,415 - DEBUG    - Feuermelder_SZ: 0 device tracker(s) being monitored
2022-02-20 10:30:57,416 - DEBUG    - Feuermelder_SZ: HCIdump thread: Run
2022-02-20 10:30:57,417 - DEBUG    - Feuermelder_SZ: HCIdump thread: BLEScanRequester._initialized is False for hci0,  waiting for connection...
2022-02-20 10:30:57,537 - DEBUG    - Feuermelder_SZ: HCIdump thread: connected to hci0
2022-02-20 10:30:57,537 - DEBUG    - Feuermelder_SZ: HCIdump thread: BLEScanRequester._initialized is True for hci0,  connection established, send_scan_request succeeded.
2022-02-20 10:30:57,537 - DEBUG    - Feuermelder_SZ: HCIdump thread: start main event_loop


Es scheint die Kommunikation zum fhempy gestört zu sein:
Internals:
   CFGFN     
   DEF        ble_monitor 54:EF:44:E4:6A:81
   FHEMPYTYPE ble_monitor
   FUUID      6212098b-f33f-357a-600a-be94cbfd20595a89
   IODev      local_pybinding
   NAME       Feuermelder_SZ
   NR         729
   PYTHONTYPE ble_monitor
   STATE      fhempy server offline
   TYPE       fhempy
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1645349453.40834
           VALUE      fhempy server offline
   READINGS:
     2022-02-20 10:30:53   state           fhempy server offline
   args:
     Feuermelder_SZ
     fhempy
     ble_monitor
     54:EF:44:E4:6A:81
   argsh:
   hmccu:
Attributes:
   encryption_key *************************************
   verbose    5

dominik

Das ist ok, weil du fhempy neu gestartet hast und state noch nicht neu gesetzt wurde. Hast du es länger laufen lassen? Der schickt sicher max. 1x pro Stunde oder?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Nighthawk

Leideir weiterhin unverändert:

Internals:
   CFGFN     
   DEF        ble_monitor 54:EF:44:E4:6A:81
   FHEMPYTYPE ble_monitor
   FUUID      6212098b-f33f-357a-600a-be94cbfd20595a89
   IODev      local_pybinding
   NAME       Feuermelder_SZ
   NR         729
   PYTHONTYPE ble_monitor
   STATE      fhempy server offline
   TYPE       fhempy
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1645349453.40834
           VALUE      fhempy server offline
   READINGS:
     2022-02-20 10:30:53   state           fhempy server offline
   args:
     Feuermelder_SZ
     fhempy
     ble_monitor
     54:EF:44:E4:6A:81
   argsh:
   hmccu:
Attributes:
   encryption_key 1d7890ac4bb35b1dcb1f7055d17ec174
   verbose    5


Der Rauchmelder kann dazu gezwungen werden Infos zu senden, wenn man die Tatse betätigt, sieht man auch beim bluetoothctl scan.

dominik

Zitat von: dominik am 19 Februar 2022, 19:50:15
Eine Frage, wie lange hast du gewartet beim Rauchmelder ob ein Signal kommt? Kann es sein, dass der nur alle 24h ein Signal schickt?

Ansonsten probier mal
aioblescan -m MAC
dann siehst du ob der Rauchmelder Daten schickt.

Dann probier bitte noch das hier um zu sehen ob das Signal ankommt.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Nighthawk

Sieht so aus als hätte aioblescan ein Problm mein hci0 anzusprechen, oder kann ich ihm das irgendwie beibiegen?

Traceback (most recent call last):
  File "/usr/local/bin/aioblescan", line 8, in <module>
    sys.exit(main())
  File "/opt/fhem/.local/lib/python3.9/site-packages/aioblescan/__main__.py", line 176, in main
    mysocket = aiobs.create_bt_socket(opts.device)
  File "/opt/fhem/.local/lib/python3.9/site-packages/aioblescan/aioblescan.py", line 1760, in create_bt_socket
    raise exceptions[0]
OSError: [Errno 19] error while attempting to bind on interface 0: No such device

dominik

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

Nighthawk

Habe ich jetzt gestartet, aktuell kommt da nichts an (auch bei Tastendruck), ich lass es mal weiter laufen und beobachte es.

P.S.
bei der Definition der Mi Bodyscale kommt jetzt eine Fehlermeldung:

Failed to load module miscale: Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/fhem_pythonbinding.py", line 291, in _onMessage
    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/miscale/miscale.py", line 48, in Define
    self.blemonitor.register_device(self)
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/ble_monitor/blemonitor.py", line 117, in register_device
    CONF_DEVICE_ENCRYPTION_KEY: fhemdevice.encryption_key(),
AttributeError: 'miscale' object has no attribute 'encryption_key'

dominik

Ist schon behoben, einfach ein Update machen.

Sehr eigenartig mit dem Feuermelder, kann man da in der Xiaomi App irgendwas einstellen?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Nighthawk

Also wenn ich mit bluetoothctl --> scan on sniffe, bekomme ich folgende Info beim Betätigen der Taste:

[CHG] Device 54:EF:44:E2:AA:1D ServiceData Key: 0000fe95-0000-1000-8000-00805f9b34fb
[CHG] Device 54:EF:44:E2:AA:1D ServiceData Value:
  10 59 97 09 f4 1d aa e2 44 ef 54                 .Y......D.T     


In der App ist nur der Batteriestatus und Alarmstatus zu sehen, wenn ich es richtig interpritiere.


Nach dem update eben habe ich eine neue Fehlermeldung sowohl bei MiScale als auch beim Rauchmelder:

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/miscale/miscale.py", line 48, in Define self.blemonitor.register_device(self) File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/ble_monitor/blemonitor.py", line 121, in register_device self.update_hci_interface(fhemdevice.hci()) File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/ble_monitor/blemonitor.py", line 131, in update_hci_interface self.config[CONF_BT_INTERFACE].append(BT_INTERFACES[fhem_dev.hci()]) KeyError: 0

dominik

Lass mal bei aioblescan die Mac weg und schau ob du dann auch ein Signal bekommst.

Der Fehler dürfte daran liegen, dass kein Bluetooth Adapter mehr erkannt wird - womöglich der Scan parallel dazu gelaufen?

Probier aber bitte aioblescan ohne Mac, wenn das geht, weiß ich wahrscheinlich wo der Fehler liegt.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Nighthawk

#28
Auch ohne MAC ist leider nur Leere da..

Und der Fehler bleibt auch nach Neustart bestehen:

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/miscale/miscale.py", line 48, in Define
    self.blemonitor.register_device(self)
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/ble_monitor/blemonitor.py", line 121, in register_device
    self.update_hci_interface(fhemdevice.hci())
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/ble_monitor/blemonitor.py", line 131, in update_hci_interface
    self.config[CONF_BT_INTERFACE].append(BT_INTERFACES[fhem_dev.hci()])
KeyError: 0

dominik

Funktionieren deine BT Interfaces noch?
Mach mal hciconfig -a und poste den Output.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik