Open Ilovegym66 opened 5 years ago
Should be easy to implement. Could you please use the nRF Connect App to capture 2-3 of those advertisements for me? Best case with the corresponding value from the scale itself, so I can cross-check with the codes you linked. Like 0.0kg => abcdef01234... 1.5kg => def01234abc... 75.7 kg => ...
mi scale 19,8kg 0204e30707031216330000f81b 0,00kg 0284e307070312351700000c03
hmm der Wert ändert sich nicht oft.. aber der ble-adapter hat sie selbst erkannt und diese Einträge angelegt, siehe json (ist ein json, habs nur umbenannt nach zip! ) ble.0.e7_91_6e_10_48_db.json.zip
Screenshots from app - but the result everytime the same.. Photos(1).zip
Die Links scheinen zu einer anderen Version der Waage zu gehören. Mit nur zwei Werten kann ich mir leider keinen Reim darauf machen, was anders ist. Wenn möglich bitte noch ein paar mehr Werte sammeln, ein paar enger beisammen, ein paar weiter entfernt. Und wenn möglich auch noch 1-2 mit jeder unterstützten Einheit. Ich brauche keine Screenshots aus der App.
Das Problem war, dass der BLE Adapter ja nur alle paar Sekunden den Wert einfaengt, und die Waage ( ich habe die MiScale V2 ) den Wert dauernd aendert ( hab mich mit einem Fuss draufgestellt.. aber da das Gewicht konstant zu halten, ist ne Kunst..).. Muss mir mal ein paar Gewichte besorgen, damit ich in Ruhe die Werte auslesen kann..
Hahaha ok
so mal mit Eimer Wasser und n paar Bücher Werkzeugkoffer etc getestet.. :-) es kam heute ein paar Datenpunkte noch dazu, als ich mich draufstellte.. aber die änderten sich nicht...
0,0kg 021b 00a4e3070704113833fdff0050 0,0kg 041b 00e307070312343000007c06c9 0,0kg 071b 00070412082afdff0c03b8043e 0,0kg 0c1b 0003c0043e1d02010401db4810
hier der 181b ändert sich je nach Gewicht, anscheinend in hex das Gewicht..?? 0,0kg 181b 0284e307070411392200001009 3,9kg 181b 0224e307070412082afdff0c03 4,9kg 181b 02a4e307070313042efdff3007 7,1kg 181b 0224e3070704113717fdff8c05 8,9kg 181b 0224e3070704120318fdfff406 12kg 181b 0224e3070704113516fdff6009 16kg 181b 0284e307070411392200001009 51kg 181b 0204e3070704120e3000007427 106,3kg 181b 0284e3070704120b0c0000fc03
Hmm - so richtig kann ich mir noch keinen Reim drauf machen. Z.B. haben 0,0kg und 16,0kg den identischen Wert. Dann gibt es Messungen bei denen die letzten zwei Bytes wie bei V1 den Messwert in 200tel kg angeben. Und andere wo es wieder nicht passt. 🤔
Hmm ja, ich hab die Befürchtung, dass der ble Adapter nicht schnell genug aktualisiert hat, habe jetzt Mal die history eingeschaltet, und messe morgen Abend noch einmal 😉, irgendwie muss das hinbekommen sein... Die App openscale kann's auch..
Die App macht es mit einer aktiven Verbindung, da gibt's ne realtime Messung.
Schau Mal hier, da ist alles erklärt: https://github.com/oliexdev/openScale/wiki/Xiaomi-Bluetooth-Mi-Scale
Würde Ein Plugin für die Scale2 ebenfalls begrüßen. Leider hab ich noch keine Erfahrung in IObroker Adaptern & TS, daher kann ich das aktuell nicht umsetzen. Hier sind meine Ergebnisse für Scale2 (Scale1 & Scale2 unterscheiden sich):
[bluetooth]# info 2F:28:03:00:2E:29
Device 2F:28:03:00:2E:29 (random)
Name: MIBFS
Alias: MIBFS
Paired: no
Trusted: no
Blocked: no
Connected: no
LegacyPairing: no
UUID: Body Composition (0000181b-0000-1000-8000-00805f9b34fb)
ManufacturerData Key: 0x0157
ManufacturerData Value:
0c 95 41 bb 58 32 ..A.X2
ServiceData Key: 0000181b-0000-1000-8000-00805f9b34fb
ServiceData Value:
02 24 b2 07 01 06 03 37 2e fe ff f0 41 ......./.....
ServiceData Aufbau (02 24 b2 07 01 06 03 37 2e fe ff f0 41):
Count | Byte | Alias |
---|---|---|
0 | 02 | ctrl0 |
1 | 24 | ctrl1 |
2 | b2 | year0 |
3 | 07 | year1 |
4 | 01 | month |
5 | 06 | day |
6 | 03 | hours |
7 | 37 | min |
8 | 2e | sec |
9 | fe | impedance0 |
10 | ff | impedance1 |
11 | f0 | weight0 |
12 | 41 | weight1 |
ctrl0 & ctrl1 (Die relevanten sind beschrieben) 0x02 << 8 | 0x24 = 0 = isLBSUnit 0 0 0 0 0 1 0
0 0 = isImpedance 1 0 0 1 = isStabilized 0 0 = isCattyUnit
Datum & Uhrzeit
$year = ((year1 & 0xFF) << 8) | (year0 & 0xFF);
$month = month;
$day = day;
$hours = hours;
$min = min;
$sec = sec;
Gewicht
if (isLBSUnit || isCattyUnit) {
$weight = (((weight1 & 0xFF) << 8) | (weight0 & 0xFF)) / 100.0f;
} else {
$weight = (((weight1 & 0xFF) << 8) | (weight0 & 0xFF)) / 200.0f;
}
Impedanz
if (isImpedance) {
$impedance = ((impedance1 & 0xFF) << 8) | (impedance0 & 0xFF);
}
It was nice to have xiaomi miscale in the adapter, you found some codes here https://github.com/chaeplin/Xiaomi_scale_scan/blob/master/Xiaomi_scale_scan.py
and here https://github.com/chaeplin/nrf51822_and_arduino/blob/master/_12-xiaomi_scale_scan/_12-xiaomi_scale_scan.ino