Xiaomi Bluetooth Themometer/Hygrometer mit Display

Begonnen von distel, 05 Januar 2018, 22:07:59

Vorheriges Thema - Nächstes Thema

distel

Hallo zusammen,

vor Kurzem habe ich eins der (neuen?) Xiaomi Bluetooth Themometer/Hygrometer für etwas über 15€ mit Display beim China-Mann erstanden. Wollte natürlich schauen, ob die Dinger sich irgendwie auch ohne Xiaomi-App anzapfen lassen. Inspiriert von der Arbeit von CoolTux (74_XiaomiFlowerSens.pm - Xiaomi Flower Monitor) hab ich mich ans Probieren gemacht. Für ein Modul hat es noch nicht gereicht, aber immerhin habe ich die Messwerte auslesen können und will das nicht für mich behalten:

Diverse Eigenschaften lassen sich "einfach" und Standardkonform auslesen:
gatttool -b <MAC> --char-read --handle=0x0018
Characteristic value/descriptor: 64 => 100 (Prozent)


Sämtliche Characteristics findet ihr in der folgenden Tabelle:
https://docs.google.com/spreadsheets/d/1Otu4BgNkEcUJEP6lkLFhPKsjk6Sjl0pS6F2sal6ofZw/edit?usp=sharing

Messwerte rückt das Thermometer allerdings erst raus, nachdem man bestimmte Notifications aktiviert hat:
gatttool -b <MAC> --char-write-req --handle=0x0010 --value=0100 --listen
Characteristic value was written successfully
Notification handle = 0x000e value: 54 3d 31 37 2e 33 20 48 3d 35 32 2e 35 00 => T=17.3 H=52.5
... (insges. 12 Notifications)


Da der Sensor scheint recht nervös (auch laut Display). Vermutlich schreibt er deshalb gleich 12 Messwerte raus. Danach gibt es aber keine neuen Meßwerte mehr. Erst, wenn wieder angefordert wird.

In ein eigenes Modul werde ich das ganze wohl nicht gießen (können/zeitlich hinbekommen). Ergo hoffe ich, Euch zumindest die Entscheidung zum Kauf zu erleichtern bzw. mit meinen Bemühungen ggf. andere zum Coding zu animieren. Für mich muss ich eh noch aufgrund von Reichweite etc. prüfen, ob nicht eh ein weitere RasPi (o.ä.) gebraucht wird, auf dem dann auch ein einfacher cron-Job die Arbeit verrichten könnte.


Gruß Dirk
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Weisst Du wie man von 54 3d 31 37 2e 33 20 48 3d 35 32 2e 35 00
nach
T=17.3 H=52.5
kommt?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Das ist ja ne Billige Nummer.

Daraus lässt sich ja super einfach ein Modul machen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

nanocosmos

Habe auch so ein Ding hier rumliegen. Sieht ganz schick aus. [emoji4]
Wäre klasse, wenn man das in FHEM einbinden könnte.
Vielen Dank schon mal für eure Mühen!

CoolTux

Ich schaue es mir die nächsten 10 Tage mal an.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

nanocosmos


CoolTux

Ich baue alles erstmal ins FlowerSens Modul mit ein. Ich werde das Modul in späteren Versionen umbenennen und ein allgemeines Xiaomi BLE Modul daraus machen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Zitat von: CoolTux am 06 Januar 2018, 22:25:47
Ich baue alles erstmal ins FlowerSens Modul mit ein.

Sehr cool! Stehe gern für Fragen/Tests zur Verfügung. Gebe dir gern auch Schreibrechte auf die Tabelle.


Gruß Dirk

PS: werde Mal etwas bzgl Reichweite testen. Denke, ich komme nicht um nen dezentralen SensorHub drumherum.
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Du kannst einen kleinen Pi Zero nehmen und das ganze dann per ssh machen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

#10
Erster Prototype ist fertig. Bitte einmal testen

https://github.com/LeonGaultier/fhem-XiaomiBTLESens/archive/devel.zip



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Zitat von: CoolTux am 09 Januar 2018, 08:20:28
Erster Prototype ist fertig. Bitte einmal testen

Hallo,

hab Dein Modul ins FHEM Verzeichnis entpackt und per reload 74_XiaomiBTLESens neu geladen.
Anschließend ein neues Device mit define xSense XiaomiBTLESens <MAC> angelegt.
Jetzt noch Attribut model auf thermoHygroSense und verbose auf 5 gesetzt.

defmod xSens XiaomiBTLESens <MAC>
attr xSens model thermoHygroSens
attr xSens room XiaomiBTLESens
attr xSens verbose 5

setstate xSens fetch sensor data
setstate xSens 2018-01-09 19:43:12 battery ok
setstate xSens 2018-01-09 19:43:12 batteryLevel 100
setstate xSens 2018-01-09 19:43:05 lastGattError Internal application error
setstate xSens 2018-01-09 19:43:12 state fetch sensor data


Das Auslesen des Batterie-Status ist also schon mal kein Thema. Aber Messwerte kommen noch nicht an. Im Log schaut das dann im Sekundentakt so aus:
2018.01.09 19:50:12 4: XiaomiBTLESens (xSens) - CallBatteryFirmware: call function ExecGatttool_Run
2018.01.09 19:50:12 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: call gatttool with command gatttool -i hci0 -b <MAC> --char-read -a 0x18 2>&1 /dev/null and loop 0
2018.01.09 19:50:12 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool loop result Characteristic value/descriptor,64
2018.01.09 19:50:12 4: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool result Characteristic value/descriptor,64
2018.01.09 19:50:12 4: XiaomiBTLESens (xSens) - ExecGatttool_Done: gatttool return string: xSens|<MAC>|ok|read|0x18|{"gtResult":"64 "}
2018.01.09 19:50:12 5: XiaomiBTLESens (xSens) - ProcessingNotification
2018.01.09 19:50:12 4: XiaomiBTLESens (xSens) - ProcessingNotification: handle 0x18
2018.01.09 19:50:12 5: XiaomiBTLESens (xSens) - Thermo/Hygro Sens Handle0x18
2018.01.09 19:50:12 4: XiaomiBTLESens (xSens) - WriteReadings: Readings were written

Dann geht es mit den selben Einträgen wieder von vorne los.

Da hab ich erstmal Attribut disable auf 1 gesetzt.

Es scheint mir so, als werde die Routine zum Auslesen der Messwerte also gar nicht erst erreicht.


Gruß Dirk
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Danke Dir Dirk,

Schaue ich mir an. Eventuell ist hier noch was drin vom Pflanzensensor.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Neue Version. Kannst Du bitte noch mal testen?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Zitat von: CoolTux am 09 Januar 2018, 20:20:38
Neue Version. Kannst Du bitte noch mal testen?

Man, man, man - so fix!. Also hier gehts weiter:

Installation analog oben.
Einige Meldungen wie die folgende - weiß nicht, ob das vorher auch so war, aber der Vollständigkeit halber sei es erwähnt.
2018.01.09 20:27:20 1: PERL WARNING: Subroutine XiaomiBTLESens_Initialize redefined at ./FHEM/74_XiaomiBTLESens.pm line 102.


Dann wird es interessanter:
2018.01.09 20:27:30 3: XiaomiBTLESens (xSens) - enabled
2018.01.09 20:27:30 4: XiaomiBTLESens (xSens) - WriteSensData: call function ExecGatttool_Run
2018.01.09 20:27:30 4: XiaomiBTLESens (xSens) - stateRequestTimer: Call Request Timer
2018.01.09 20:27:30 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: call gatttool with command timeout 15 gatttool -i hci0 -b <MAC> --char-write-req -a 0x10 -n 100 --listen 2>&1 /dev/null and loop 0
2018.01.09 20:27:45 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool loop result Characteristic value was written successfully
2018.01.09 20:27:45 4: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool result Characteristic value was written successfully
2018.01.09 20:27:45 4: XiaomiBTLESens (xSens) - ExecGatttool_Done: gatttool return string: xSens|<MAC>|ok|write|0x10|{"gtResult":"no data response"}
2018.01.09 20:27:45 5: XiaomiBTLESens (xSens) - ProcessingErrors
2018.01.09 20:27:45 4: XiaomiBTLESens (xSens) - WriteReadings: Readings were written


In einem anderen Durchlauf gibt es sogar einen Fehler gemeldet (vermutlich hat gatttool einfach zu viel zu tun ;-)):
2018.01.09 20:28:01 4: XiaomiBTLESens (xSens) - WriteSensData: call function ExecGatttool_Run
2018.01.09 20:28:01 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: call gatttool with command timeout 15 gatttool -i hci0 -b <MAC> --char-write-req -a 0x10 -n 100 --listen 2>&1 /dev/null and loop 0
2018.01.09 20:28:06 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool loop result connect error,Function not implemented (38)
2018.01.09 20:28:06 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: call gatttool with command timeout 15 gatttool -i hci0 -b <MAC> --char-write-req -a 0x10 -n 100 --listen 2>&1 /dev/null and loop 1


Ich hab dann etwas auf der Kommando-Zeile rumprobiert:

Mein ursprünglicher Aufruf (funktioniert):
gatttool -b <MAC> --char-write-req --handle=0x0010 --value=0100 --listen

Dein Aufruf (funktioniert nicht):
gatttool -b <MAC> --char-write-req -a 0x10 -n 100 --listen

"Kreuzung" aus beidem (funktioniert):
gatttool -b <MAC> --char-write-req -a 0x0010 --value=0100 --listen

=> Ergo -n 100 ist nicht das selbe wie --value=0100


Nach einem Neustart habe ich folgendes noch im Log gefunden:
2018.01.09 20:43:10 3: XiaomiBTLESens (xSens) - defined with BTMAC <MAC>
2018.01.09 20:43:11 4: XiaomiBTLESens (xSens) - CallBatteryFirmware: call function ExecGatttool_Run
2018.01.09 20:43:11 4: XiaomiBTLESens (xSens) - stateRequestTimer: Call Request Timer
2018.01.09 20:43:12 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: call gatttool with command gatttool -i hci0 -b <MAC> --char-read -a 0x18 2>&1 /dev/null and loop 0
2018.01.09 20:43:18 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool loop result Characteristic value/descriptor,64
2018.01.09 20:43:18 4: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool result Characteristic value/descriptor,64
2018.01.09 20:43:18 4: XiaomiBTLESens (xSens) - ExecGatttool_Done: gatttool return string: xSens|<MAC>|ok|read|0x18|{"gtResult":"64 "}
2018.01.09 20:43:18 5: XiaomiBTLESens (xSens) - ProcessingNotification
2018.01.09 20:43:18 4: XiaomiBTLESens (xSens) - ProcessingNotification: handle 0x18
2018.01.09 20:43:18 5: XiaomiBTLESens (xSens) - Thermo/Hygro Sens Handle0x18
2018.01.09 20:43:18 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at ./FHEM/74_XiaomiBTLESens.pm line 653.
2018.01.09 20:43:18 3: eval: {XiaomiBTLESens_ExecGatttool_Done('xSens|<MAC>|ok|read|0x18|{"gtResult":"64 "}')}
2018.01.09 20:43:18 4: XiaomiBTLESens (xSens) - WriteReadings: Readings were written

Die Interpretation der 64 erfolgt inkl. nachfolgendem Leerzeichen und gibt zumindest eine Warning

PS: Ich frage mich, wie lange ich das noch durchhalte, sämtliche MACs zu ersetzen. Und das wo die Funkeichweite eher kurz ist...
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Ich änder das Mal morgen. Kannst du bitte noch mit -n 0100 probieren.


gatttool -b <MAC> --char-write-req -a 0x10 -n 0100 --listen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

#16
Zitat von: CoolTux am 09 Januar 2018, 21:24:20
Ich änder das Mal morgen. Kannst du bitte noch mit -n 0100 probieren.

Richtig, 0100 funktioniert auch. Hab das am Anfang des Moduls geändert:
my %XiaomiModels = (
        flowerSens      => {'read' => '0x35'  ,'write' => '0x33'  ,'writeValue' => 'A01F' ,'battery' => '0x38'},
        thermoHygroSens => {'read' => 'none'  ,'write' => '0x10'  ,'writeValue' => '0100' ,'battery' => '0x18'},
    );


Dann kommt allerdings das folgende Reading raus:
54 3d 31 38 2e 37 20 48 3d 34 31 2e 36 00
Notification handle = 0x000e value


Die Antwort vom Thermometer ist aber gut und ergibt:
T=18.7 H=41.6

54 = T
3d = =
31 = 1
38 = 8
2e = .
37 = 7
20 = <Space>
48 = H
3d = =
34 = 4
31 = 1
2e = .
36 = 6
00 = <Terminator>

Da scheint die Umwandlung/Interpretation noch im argen. Wenn Du keine generelle HEX => ASCII Funktion schreiben willst, kannst Du auch einfach fixe Stellen der Antwort nehmen.

Da der Sensor aber noch andere Werte als umwandelbare Zeichenfolge zurückgibt (die bspw. für ein AutoDetect des angesprochenen Gerätes dienen könnten *zwinker*) wäre es schon sinnvoll HEX => ASCII zu implementieren.

Dieser Eintrag sollte sich bspw. eignen, da Konstant:
handle: 0x000f, uuid: 00002901-0000-1000-8000-00805f9b34fb
-a 0x000f
HEX: 54 65 6d 70 26 48 75 6d 69
ASCII: Temp&Humi


Auch noch informativ:
0x002c
=>43 6c 65 61 72 67 72 61 73 73 20 49 6e 63 Cleargrass Inc Manufacturer

0x001e
=>44 75 63 6b 5f 52 65 6c 65 61 73 65 Duck_Release Model Number

0x0022
=>32 2e 30 30 2.00 Hardware Revision

0x0024
=>30 30 2e 30 30 2e 36 36 00.00.66 Firmware Revision


Andere sind auch noch interessant, zum Beispiel der Device-Name (sollte auch schreibbar sein, hab ich noch nicht getestet, aber in der Xiaomi App gehts):
handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
-a 0x0003
HEX: 4d 4a 5f 48 54 5f 56 31
ASCII: MJ_HT_V1


NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Das bringt mir alles nichts. Ich brauche die Logausgaben. Ich muss sehen wie der Programmfluss funktioniert.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

OK habe noch Mal Deine Antwort gelesen.
Entscheidend war, "da kommt das Reading raus".

Er springt also nicht in die Umrechnungsfunktion.

Das änder ich gleich mal.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Zitat von: CoolTux am 10 Januar 2018, 07:18:28
Er springt also nicht in die Umrechnungsfunktion.

Das Log gibt auch nicht viel mehr preis:
2018.01.09 21:42:43 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool loop result Characteristic value was written successfully
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 36 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 35 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 36 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 35 00
Notification handle = 0x000e value,54 3d 31 38 2e 36 20 48 3d 34 31 2e 36 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 35 00
Notification handle = 0x000e value,54 3d 31 38 2e 36 20 48 3d 34 31 2e 36 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 37 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 35 00

2018.01.09 21:42:43 4: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool result Characteristic value was written successfully
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 36 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 35 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 36 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 35 00
Notification handle = 0x000e value,54 3d 31 38 2e 36 20 48 3d 34 31 2e 36 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 35 00
Notification handle = 0x000e value,54 3d 31 38 2e 36 20 48 3d 34 31 2e 36 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 37 00
Notification handle = 0x000e value,54 3d 31 38 2e 37 20 48 3d 34 31 2e 35 00

2018.01.09 21:42:43 4: XiaomiBTLESens (xSens) - ExecGatttool_Done: gatttool return string: xSens|<MAC>|ok|write|0x10|{"gtResult":"54 3d 31 38 2e 37 20 48 3d 34 31 2e 36 00 \nNotification handle = 0x000e value"}
2018.01.09 21:42:43 5: XiaomiBTLESens (xSens) - ProcessingErrors
2018.01.09 21:42:43 4: XiaomiBTLESens (xSens) - WriteReadings: Readings were written


Zum Testen komme ich dann aber erst wieder heute Abend - hoffe ich :)
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Habe eben eine neue Version hochgeladen. Alter Link. Nun sollten die korrekten Werte für temperature und humidity kommen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Zitat von: CoolTux am 10 Januar 2018, 08:05:01
Habe eben eine neue Version hochgeladen. Alter Link. Nun sollten die korrekten Werte für temperature und humidity kommen.
Hallo,

hab die Version mit wget --no-cache runtergeladen. Im zip ist der Zeitstempel 10.01.2018 -- 07:38 aber...
die 100 ist (noch) nicht in eine 0100 korrigiert:
my %XiaomiModels = (
        flowerSens      => {'read' => '0x35'  ,'write' => '0x33'  ,'writeValue' => 'A01F' ,'battery' => '0x38'},
        thermoHygroSens => {'read' => 'none'  ,'write' => '0x10'  ,'writeValue' => '100' ,'battery' => '0x18'},
    );


Die Version ist "1.99.26".

Wenn ich das manuell korrigiere (sonst kommen ja keine Werte vom Thermometer), das Modul reloade und mein device "enable", bekomme ich die Readings wie gehabt:






Readings
batteryok2018-01-09 21:41:58
batteryLevel1002018-01-09 21:41:58
lastGattError54 3d 31 38 2e 36 20 48 3d 34 34 2e 32 00
Notification handle = 0x000e value
2018-01-10 19:51:50

Im Log sieht das dann so aus:
2018.01.10 19:51:35 4: XiaomiBTLESens (xSens) - WriteSensData: call function ExecGatttool_Run
2018.01.10 19:51:35 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: call gatttool with command timeout 15 gatttool -i hci0 -b <MAC> --char-write-req -a 0x10 -n 0100 --listen 2>&1 /dev/null and loop 0
2018.01.10 19:51:44 3: XiaomiBTLESens (xSens) - disabled
2018.01.10 19:51:50 5: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool loop result Characteristic value was written successfully
Notification handle = 0x000e value,54 3d 31 38 2e 36 20 48 3d 34 34 2e 32 00
...
Notification handle = 0x000e value,54 3d 31 38 2e 35 20 48 3d 34 34 2e 30 00

2018.01.10 19:51:50 4: XiaomiBTLESens (xSens) - ExecGatttool_Run: gatttool result Characteristic value was written successfully
Notification handle = 0x000e value,54 3d 31 38 2e 36 20 48 3d 34 34 2e 32 00
...
Notification handle = 0x000e value,54 3d 31 38 2e 35 20 48 3d 34 34 2e 30 00

2018.01.10 19:51:50 4: XiaomiBTLESens (xSens) - ExecGatttool_Done: gatttool return string: xSens|<MAC>|ok|write|0x10|{"gtResult":"54 3d 31 38 2e 36 20 48 3d 34 34 2e 32 00 \nNotification handle = 0x000e value"}
2018.01.10 19:51:50 5: XiaomiBTLESens (xSens) - ProcessingErrors
2018.01.10 19:51:50 4: XiaomiBTLESens (xSens) - WriteReadings: Readings were written


Hab leider die alte Version direkt "übergebügelt", kann daher kein diff machen. Ist da ggf. beim Upload ne falsche Version im Zip gelandet?!


Gruß Dirk
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Ok schaue ich mir an. Er schreibt es als gatttool error. Die Info hatte mir gefehlt. Muss schauen wo es hängt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

#23
    if( $respstate eq 'ok' and $gattCmd eq 'read' ) {
        XiaomiBTLESens_ProcessingNotification($hash,$handle,$decode_json->{gtResult});
       
    } elsif( $respstate eq 'ok' and $gattCmd eq 'write' and AttrVal($name,'model','none') ne 'thermoHygroSens' ) {
        XiaomiBTLESens_ReadSensData($hash);
       
    } else {
        XiaomiBTLESens_ProcessingErrors($hash,$decode_json->{gtResult});
    }

Geht es hier nicht für thermoHygroSens immer in den Fehlerzweig?! (Zeile 524)

---

und bei der Auswertung:
$notification =~ s/\s+//g;
                                                                            # 54 3d 31 37 2e 33 20 48 3d 35 32 2e 35 00
my $temp        = pack('H*',join(' ',substr($notification,4,8)));       # 31 37 2e 33
my $hum         = pack('H*',join(' ',substr($notification,18,8)));      # 35 32 2e 35

$readings{'temperature'}    = $temp/10;
$readings{'humidity'}       = $hum;


Die regex entfernt die Leerzeichen, nehme ich an. dann bekommst Du als substr jeweils eine Zahl im Format ##.# in HEX-Darstellung zurück. Das wird wohl durch das pack() konvertiert. Was mich irritiert: temperature teilst Du durch 10 und humidity nicht. Dabei sind doch beide gleich formatiert...
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Gerade Mal geschaut. Er kann nur in den Error gehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

So neue Version. Kannst Du bitte mal schauen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Zitat von: CoolTux am 10 Januar 2018, 21:04:29
So neue Version. Kannst Du bitte mal schauen.
Yay! Messwerte! Nur, die Temperatur ist (fälschlicherweise) durch 10 geteilt - aber das ist ja nun wirklich noch Feintuning (s.o. Zeile 685, falls du keine eingefügt/gelöscht hast)! :D

Dickes Danke!
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

neue version ist oben.
Wenn es jetzt dann geht, dann brauche ich bitte mal ein list vom device und hier in Codetags bitte eintragen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

#28
Alles im Lot. Hier das list:
Internals:
   BTMAC      <MAC>
   DEF        <MAC>
   INTERVAL   300
   NAME       xbtle.temp.eg.fenster
   NOTIFYDEV  global
   NR         314
   NTFY_ORDER 50-xSens
   STATE      T: 16.4 °C / H: 54.4 %
   TYPE       XiaomiBTLESens
   VERSION    1.99.31
   loglevel   4
   READINGS:
     2018-01-10 21:44:12   battery         ok
     2018-01-10 21:44:12   batteryLevel    100
     2018-01-10 21:44:27   humidity        54.4
     2018-01-10 21:32:47   lastGattError   Transport endpoint is not connected (107)
     2018-01-10 21:44:27   state           active
     2018-01-10 21:44:27   temperature     16.4
   helper:
     CallBatteryFirmware 0
     CallSensDataCounter 0
     updateTimeCallBatteryFirmware 1515617052.66093
     updateTimestampCallBatteryFirmware 2018-01-10 21:44:12
Attributes:
   alias      Temperatur EG.Fensterbank Flur
   group      Temperatur
   icon       temp_temperature
   model      thermoHygroSens
   room       Sensoren
   stateFormat {"T: " . ReadingsVal($name,"temperature",0) . " °C / H: " . ReadingsVal($name,"humidity",0) . " %"}
   verbose    5


Wo ich es hier grad lese, werde ich wohl verbose noch zurückdrehen :)

Zu schön wäre ja noch ne Anzeige der Empfangsstärke... Aber das scheint nicht so Einfach zu sein, da laut Tante Google zwei Tools in Kombination (Eins für die Verbindeungsparameter, eins für die Connection) notwendig sind. Egal: Erstmal Temperatur. Da muss ich wohl in China noch ein paar ordern...
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Bisschen kalt bei Dir  ;D
Ich will noch Firmware und Name auslesen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Das Device heisst ja auch Fensterbank und nicht Sauna! :-)

Wenn's ums testen geht, bin ich dabei! Den Namen, den man selbst vergeben kann fänd ich auch interessant. Werde Mal beobachten, ob in naher Zukunft Firmware-Updates kommen. Wie schon Eingangs geschrieben: Recht nervös die Anzeige.
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Jetzt schau erstmal wie das Teil so mit dem Modul läuft. Wenn Dir was auf fällt bitte gleich melden.
Setzten des Namens sollte sofern wir das richtige handle finden kein Problem sein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Zitat von: CoolTux am 10 Januar 2018, 22:33:02
Setzten des Namens sollte sofern wir das richtige handle finden kein Problem sein.
Ich werde jetzt erstmal in den Testbetrieb gehen. Leider werde ich aufgrund der Reichweite nicht dort messen, wo ich eigentlich wollte, aber ich will das Setup nicht unnötig komplexer machen.

Bzgl. der o.g. Erweiterungen setze ich mich die Tage (eilt ja nicht) mal hin und knobel die Handles und die entsprechenden gatttool-Aufrufe aus. Dann ists für Dich leichter, die ins Modul zu übernehmen.


Gruß Dirk
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Du kannst ja spaßendhalber mal ssh versuchen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Habe eben mal eine neue Version hochgeladen. Bitte verbose 5 aktivieren. Es sollte nun bei nicht vorhanden sein der Firmwareversion diese ausgelesen werden.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Zitat von: CoolTux am 11 Januar 2018, 14:13:49
Habe eben mal eine neue Version hochgeladen. Bitte verbose 5 aktivieren. Es sollte nun bei nicht vorhanden sein der Firmwareversion diese ausgelesen werden.
Hallo Leon,

Funktioniert! Die "00.00.66" stimmt, die App interpretiert das allerdings als "1.0.1_0066". Wo diese Info herkommt... Aus den Antworten des Thermometers wohl nicht (direkt). Aber wäre für mich verschmerzbar. Werde nen Auge drauf haben - bislang gab es noch kein update.

Hier die Messwerte:

Event Monitor
2018-01-11 20:28:32 Global global DELETEATTR xbtle.temp.eg.fenster disable
2018-01-11 20:28:32 XiaomiBTLESens xbtle.temp.eg.fenster fetch sensor data
2018-01-11 20:28:38 XiaomiBTLESens xbtle.temp.eg.fenster firmware: 00.00.66
2018-01-11 20:28:38 XiaomiBTLESens xbtle.temp.eg.fenster active


list
Internals:
   BTMAC      <MAC>
   DEF        <MAC>
   INTERVAL   300
   NAME       xbtle.temp.eg.fenster
   NOTIFYDEV  global
   NR         314
   NTFY_ORDER 50-xbtle.temp.eg.fenster
   STATE      T: 16.2 °C / H: 57.7 %
   TYPE       XiaomiBTLESens
   VERSION    1.99.31
   loglevel   4
   READINGS:
     2018-01-11 19:28:41   battery         ok
     2018-01-11 19:28:41   batteryLevel    100
     2018-01-11 20:28:38   firmware        00.00.66
     2018-01-11 20:24:34   humidity        57.7
     2018-01-11 06:43:45   lastGattError   Transport endpoint is not connected (107)
     2018-01-11 20:28:38   state           active
     2018-01-11 20:24:34   temperature     16.2
   helper:
     CallBattery 0
     CallBatteryFirmware 0
     CallSensDataCounter 0
     updateTimeCallBatteryFirmware 1515695321.4483
     updateTimestampCallBatteryFirmware 2018-01-11 19:28:41
Attributes:
   alias      Temperatur EG.Fensterbank Flur
   group      Temperatur
   icon       temp_temperature
   model      thermoHygroSens
   room       Sensoren
   stateFormat {"T: " . ReadingsVal($name,"temperature",0) . " °C / H: " . ReadingsVal($name,"humidity",0) . " %"}
   verbose    5


log
2018.01.11 20:28:32 3: XiaomiBTLESens (xbtle.temp.eg.fenster) - enabled
2018.01.11 20:28:32 4: XiaomiBTLESens (xbtle.temp.eg.fenster) - CallFirmware: call function ExecGatttool_Run
2018.01.11 20:28:32 4: XiaomiBTLESens (xbtle.temp.eg.fenster) - stateRequestTimer: Call Request Timer
2018.01.11 20:28:32 5: XiaomiBTLESens (xbtle.temp.eg.fenster) - ExecGatttool_Run: call gatttool with command gatttool -i hci0 -b <MAC> --char-read -a 0x24 2>&1 /dev/null and loop 0
2018.01.11 20:28:38 5: XiaomiBTLESens (xbtle.temp.eg.fenster) - ExecGatttool_Run: gatttool loop result Characteristic value/descriptor,30 30 2e 30 30 2e 36 36

2018.01.11 20:28:38 4: XiaomiBTLESens (xbtle.temp.eg.fenster) - ExecGatttool_Run: gatttool result Characteristic value/descriptor,30 30 2e 30 30 2e 36 36

2018.01.11 20:28:38 4: XiaomiBTLESens (xbtle.temp.eg.fenster) - ExecGatttool_Done: gatttool return string: xbtle.temp.eg.fenster|<MAC>|ok|read|0x24|{"gtResult":"30 30 2e 30 30 2e 36 36 "}
2018.01.11 20:28:38 5: XiaomiBTLESens (xbtle.temp.eg.fenster) - ProcessingNotification
2018.01.11 20:28:38 4: XiaomiBTLESens (xbtle.temp.eg.fenster) - ProcessingNotification: handle 0x24
2018.01.11 20:28:38 5: XiaomiBTLESens (xbtle.temp.eg.fenster) - Thermo/Hygro Sens Handle0x24
2018.01.11 20:28:38 4: XiaomiBTLESens (xbtle.temp.eg.fenster) - WriteReadings: Readings were written
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Ich habe zu danken :)

Zum Thema "Device Name" - der schreibende Zugriff auf das handle funktioniert. Es scheint aber Einschränkungen zu geben... Da probiere ich noch rum:
# gatttool -i hci0 -b <MAC> --char-read -a 0x0003
Characteristic value/descriptor: 4d 4a 5f 48 54 5f 56 31
# gatttool -b <MAC> --char-write-req -a 0x0003 --value=4d4a5f48545f5632 --listen
Characteristic value was written successfully
^C
# gatttool -i hci0 -b <MAC> --char-read -a 0x0003
Characteristic value/descriptor: 4d 4a 5f 48 54 5f 56 32
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean

CoolTux

Ich habe wieder was zum testen für Dich.
Aber bitte lass uns mal diesen Thread schließen (das kannst Du mit dem Button ganz unten machen) und hier weiter machen.
https://forum.fhem.de/index.php/topic,82572.0.html
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

distel

Werde (hoffentlich heute Abend) testen. Damit mach ich hier dicht :-)
Mehr im Modul-Thread: https://forum.fhem.de/index.php/topic,82572.0.html
NUC-I37100
Docker: eBus, fhem, ha-bridge, unifi
Hardware: Homematic, FS20, Somfy RTS, 1wire, FBAHA, enOcean