NEWS
Problem beim Einbinden des Xiaomi Bluetooth Thermo- und Hygrometer
-
Hallo Community,
ich habe seit einiger Zeit von Xiaomi ein kleines rundes Thermometer/Hygrometer mit Display und Bluetooth LE Schnittstelle.
Nun wollte ich natürlich die Werte von dem Teil auch an ioBroker. Mit dem BLE Adapter funktioniert es leider nicht, weil das Gerät die Mwsswerte nicht in seinen "advertised" services hat, sondern nur als notification die angefragt (request) werden muss. Durch einen Hinweis beim FHEM Forum bin ich dann auf das Kommandozeilentool GATTTOOL gestoßen mit dem Genau das möglich ist. Über die Kommandozeile konnte ich so die Werte entsprechend auslesen. Die Hex werte können direkt in ASCII gewandelt werden. Im folgenden Bespielt heißt das Ergebnis umgewandelt also "T=22.7 H=33.7"
Auf einen Request folgen 10(!) Notifications des Sensors und anschließend ist ruhe.
pi@ioBroker-Pi:~ $ gatttool -b 4C:65:A8:D0:13:83 --char-write-req -a 0x10 -n 0100 --listen Characteristic value was written successfully Notification handle = 0x000e value: 54 3d 32 32 2e 37 20 48 3d 33 33 2e 37 00 Notification handle = 0x000e value: 54 3d 32 32 2e 35 20 48 3d 33 33 2e 39 00 Notification handle = 0x000e value: 54 3d 32 32 2e 36 20 48 3d 33 33 2e 37 00 Notification handle = 0x000e value: 54 3d 32 32 2e 35 20 48 3d 33 34 2e 30 00 Notification handle = 0x000e value: 54 3d 32 32 2e 36 20 48 3d 33 33 2e 37 00 Notification handle = 0x000e value: 54 3d 32 32 2e 34 20 48 3d 33 34 2e 30 00 Notification handle = 0x000e value: 54 3d 32 32 2e 36 20 48 3d 33 33 2e 39 00 Notification handle = 0x000e value: 54 3d 32 32 2e 36 20 48 3d 33 34 2e 30 00 Notification handle = 0x000e value: 54 3d 32 32 2e 36 20 48 3d 33 33 2e 38 00 Notification handle = 0x000e value: 54 3d 32 32 2e 35 20 48 3d 33 34 2e 30 00
Nun kommt mein Problem, von dem ich hoffe, dass einer von euch bei dessen Lösung behilflich sein kann:
Führt man das gatttool wie oben beschrieben aus wird es so lange ausgeführt bis man mit Strg+C abbricht. D.h. die 10 Werte kommen rein und anschließend passiert einfach nichts mehr.
Wenn ich also in Java Script per "exec()" gatttool aufrufe bekomme ich leider nie ein gültige antwort. Hat von euch jemand eine Idee wie ich die Werte aus der Kommandozeile nach ioBroker bekomme? Das Ziel ist in greifbarer Nähe, aber doch so fern…