gatttool -b <MAC> --char-read --handle=0x0018
Characteristic value/descriptor: 64 => 100 (Prozent)
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)
Zitat von: CoolTux am 06 Januar 2018, 22:25:47
Ich baue alles erstmal ins FlowerSens Modul mit ein.
Zitat von: CoolTux am 09 Januar 2018, 08:20:28
Erster Prototype ist fertig. Bitte einmal testen
reload 74_XiaomiBTLESens
neu geladen.define xSense XiaomiBTLESens <MAC>
angelegt.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
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
Zitat von: CoolTux am 09 Januar 2018, 20:20:38
Neue Version. Kannst Du bitte noch mal testen?
2018.01.09 20:27:20 1: PERL WARNING: Subroutine XiaomiBTLESens_Initialize redefined at ./FHEM/74_XiaomiBTLESens.pm line 102.
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
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
gatttool -b <MAC> --char-write-req --handle=0x0010 --value=0100 --listen
gatttool -b <MAC> --char-write-req -a 0x10 -n 100 --listen
gatttool -b <MAC> --char-write-req -a 0x0010 --value=0100 --listen
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
gatttool -b <MAC> --char-write-req -a 0x10 -n 0100 --listen
Zitat von: CoolTux am 09 Januar 2018, 21:24:20
Ich änder das Mal morgen. Kannst du bitte noch mit -n 0100 probieren.
my %XiaomiModels = (
flowerSens => {'read' => '0x35' ,'write' => '0x33' ,'writeValue' => 'A01F' ,'battery' => '0x38'},
thermoHygroSens => {'read' => 'none' ,'write' => '0x10' ,'writeValue' => '0100' ,'battery' => '0x18'},
);
54 3d 31 38 2e 37 20 48 3d 34 31 2e 36 00
Notification handle = 0x000e value
T=18.7 H=41.6
handle: 0x000f, uuid: 00002901-0000-1000-8000-00805f9b34fb
-a 0x000f
HEX: 54 65 6d 70 26 48 75 6d 69
ASCII: Temp&Humi
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
handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
-a 0x0003
HEX: 4d 4a 5f 48 54 5f 56 31
ASCII: MJ_HT_V1
Zitat von: CoolTux am 10 Januar 2018, 07:18:28
Er springt also nicht in die Umrechnungsfunktion.
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
Zitat von: CoolTux am 10 Januar 2018, 08:05:01Hallo,
Habe eben eine neue Version hochgeladen. Alter Link. Nun sollten die korrekten Werte für temperature und humidity kommen.
my %XiaomiModels = (
flowerSens => {'read' => '0x35' ,'write' => '0x33' ,'writeValue' => 'A01F' ,'battery' => '0x38'},
thermoHygroSens => {'read' => 'none' ,'write' => '0x10' ,'writeValue' => '100' ,'battery' => '0x18'},
);
Readings | ||
battery | ok | 2018-01-09 21:41:58 |
batteryLevel | 100 | 2018-01-09 21:41:58 |
lastGattError | 54 3d 31 38 2e 36 20 48 3d 34 34 2e 32 00 Notification handle = 0x000e value | 2018-01-10 19:51:50 |
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
$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;
Zitat von: CoolTux am 10 Januar 2018, 21:04:29Yay! 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
So neue Version. Kannst Du bitte mal schauen.
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
Zitat von: CoolTux am 10 Januar 2018, 22:33:02Ich 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.
Setzten des Namens sollte sofern wir das richtige handle finden kein Problem sein.
Zitat von: CoolTux am 11 Januar 2018, 14:13:49Hallo Leon,
Habe eben mal eine neue Version hochgeladen. Bitte verbose 5 aktivieren. Es sollte nun bei nicht vorhanden sein der Firmwareversion diese ausgelesen werden.
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
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
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
# 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