Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Testers needed for Glucomen meter NFC syncing #2095

Open
jamorham opened this issue May 2, 2022 · 10 comments
Open

Testers needed for Glucomen meter NFC syncing #2095

jamorham opened this issue May 2, 2022 · 10 comments

Comments

@jamorham
Copy link
Collaborator

jamorham commented May 2, 2022

Do you have a Glucomen Aero or Glucomen Aero 2K meter or another glucose meter made by Glucomen which supports NFC syncing?

If so I would be very interested for your assistance testing xDrip's capability for downloading from these meters via NFC.

Internally I have tested the Glucomen Aero 2K mmol version successfully, but I am expecting other meters to have slightly different data formats which will need detailed testing to verify correctness.

If you have one of these meters and are willing to test, please post below the type of meter model you have (also whether mmol or mgdl units) and I will respond with the next steps for testing.

Thanks.

@jamorham
Copy link
Collaborator Author

jamorham commented May 4, 2022

Support has been added in the May 4th Nightly.

@FriedelPas
Copy link

When you want make this available also for the mg/dl Glucomen Aero, I'm interested in testing it.

@Navid200
Copy link
Collaborator

Navid200 commented Mar 8, 2023

@FriedelPas Have you tested the latest Nightly and has it failed to work for you?

@FriedelPas
Copy link

FriedelPas commented Mar 8, 2023 via email

@jrsmile
Copy link

jrsmile commented Apr 21, 2023

Hi i am using the glucomen areo 2k and i Would like to help. I am using the nightly branch from today and the device is not recogniced.

@jrsmile
Copy link

jrsmile commented Apr 27, 2023

hi, got a chance to dump the nfc part of my aero 2k mg/dL :
`
▪▪ FORMAT ▪▪
NFC Well Known (0x01)
Defined by RFC 2141, RFC 3986

▪▪ TYPE ▪▪
T

▪▪ PAYLOAD (1009 bytes) ▪▪
0x02 0x65 0x6E 0xFF 0xFF 0x34 0x38 0x34 0x38 0x36 0x31 0x42 0x53 0x00 0x18 0x00 0x55 0xFE 0x00 0x00 0xD5 0x00 0x08 0x1C 0x3D 0xFE 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xA1 0x40 0x4E 0x0A 0x00 0x02 0x59 0x94 0xA1 0x40 0xCE 0xAE 0x00 0x40 0x5C 0xF9 0xA1 0x42 0x0F 0x95 0x00 0x81 0x60 0x68 0xA1 0x40 0x8F 0x49 0x00 0xC1 0x60 0xDA 0xA1 0x40 0x2F 0xEA 0x01 0x01 0x67 0x6C 0xA1 0x40 0x10 0x11 0x01 0x41 0x36 0x83 0xA1 0x40 0x70 0xCD 0x01 0x81 0x30 0xD9 0xA1 0x40 0x30 0xBE 0x01 0xC1 0xE4 0x7E 0xA1 0x40 0x11 0x25 0x02 0x01 0x46 0x72 0xA1 0x40 0x91 0x21 0x02 0x41 0x1B 0x03 0xA1 0x40 0x51 0x4A 0x02 0x81 0x53 0x64 0xA1 0x40 0xF2 0xB4 0x02 0xC1 0x83 0xDF 0xA1 0x40 0x92 0x91 0x03 0x01 0x29 0x4C 0xA1 0x40 0x32 0xB6 0x03 0x41 0xAF 0xD7 0xA1 0x40 0x13 0x39 0x03 0x81 0x44 0x10 0xA1 0x40 0x93 0x0D 0x03 0xC1 0x27 0x87 0xA1 0x40 0x33 0xE2 0x04 0x01 0x8F 0xAE 0xA1 0x40 0x14 0x09 0x04 0x41 0x28 0x8F 0xA1 0x40 0x15 0x21 0x04 0x81 0x20 0xE0 0xA1 0x40 0x17 0x7D 0x04 0xC0 0xEC 0x49 0xA1 0x40 0x38 0x89 0x05 0x01 0x16 0xEB 0xA1 0x40 0x19 0x85 0x05 0x41 0x3F 0x31 0xA1 0x40 0xFA 0xA0 0x05 0x81 0x2A 0x58 0xA1 0x40 0x1B 0x01 0x05 0xC0 0xEA 0xD9
`
new values will be appended: 0xA1 0x40 0x1B 0x01 0x05 0xC0 0xEA 0xD9

they always begin with 0xA1

here the cleaned up version:

[pr] [eat [countr] [lvl ]
A1 40 4E0A 000 259 94 HI
A1 40 CEAE 004 05C F9 92
A1 42 0F95 008 160 68 352 fish
A1 40 8F49 00C 160 DA 352
A1 40 2FEA 010 167 6C 359
A1 40 1011 014 136 83 310
A1 40 70CD 018 130 D9 304
A1 40 30BE 01C 1E4 7E 484
A1 40 1125 020 146 72 326
A1 40 9121 024 11B 03 283
A1 40 514A 028 153 64 339
A1 40 F2B4 02C 183 DF 387
A1 40 9291 030 129 4C 297
A1 40 32B6 034 1AF D7 431
A1 40 1339 038 144 10 324
A1 40 930D 03C 127 87 295
A1 40 33E2 040 18F AE 399
A1 40 1409 044 128 8F 296
A1 40 1521 048 120 E0 288
A1 40 177D 04C 0EC 49 236
A1 40 3889 050 116 EB 278
A1 40 1985 054 13F 31 319 08:33 25.4
A1 40 FAA0 058 12A 58 298 07:40 26.4
A1 40 1B01 05C 0EA D9 234 08:00 27.4

i attached the mg/dL time and date, from the device output for reference.

for me it looks like the data is formatted the following way:
A1 Preamble
40-42 Type of measurement, before after meal etc.
4E0A ?????
000-fff Internal counter/storage slot?
259 mg/dL in hex
94 checksum?

i was not able to get the date and time out of this.
tried adding year to reach epoch but the values don't count up the later they are taken.
A Key to another Table maybe?

Let me know if you need more :-)

@jrsmile
Copy link

jrsmile commented Apr 28, 2023

had a look at

val g = new RecordBlock();
g.zeroStatus = getUnsignedByte(b);
val bs1 = getBits(b, 1);
g.mgdl = bs1.get(7);
g.control = bs1.get(6);
g.year = 2000 + bs1.getInt(5, 0);
val bs2 = getBits(b, 1);
g.month = bs2.getInt(4, 7);
// TODO flag bits in lower nibble
val bs3 = getBits(b, 2);
g.day = bs3.getInt(0, 4);
g.hour = bs3.getInt(5, 9);
g.min = bs3.getInt(10, 15);
val bs4 = getBits(b, 2);
// TODO unknown so far
g.mmolValue = getUnsignedByte(b) / 10d; // TODO WARNING MMOL ONLY
g.checkDigit = getUnsignedByte(b);
b.rewind();
b.get();
g.computedCheckDigit = 0;
for (int i = 1; i < (bytes.length - 1); i++) {
int mult;
if (i == 5) {
mult = 10;
} else {
mult = 1;
}
g.computedCheckDigit = (g.computedCheckDigit + (getUnsignedByte(b) * mult));
}
g.computedCheckDigit &= 0xFF;
return g;

i cant believe they started at year 2000... im trying to validate the data now.

@jrsmile
Copy link

jrsmile commented Jul 16, 2023

Any news about mg/dl Support? Still getting error message it is not supported.

@kjedamzik
Copy link

Hey there👋🏾

GlucoMen® areo GK (mg/dL)
PZN 18352366
Order-Nr. 52081

I'm happy to test, I only got the same unsupported message, that was reported earlier.

@kjedamzik
Copy link

Hey there 👋🏾
thank you for this awesome software!

Today I was able to verify xDrip's NFC readings by compairing ProcessingThread:d log messages with actual readings from the display of a GlukoMen aero GK (mg/dL):
image

image

Glucose Vlaues
imageimageimageimage
Ketone Vlaues
imageimageimage

Type Year Month Day Hour Minute mmolValue CheckDigit ComputedCheckDigit mgdl Control
Glucose 2024 8 4 16 31 ❌ 21.2 (212) 110 110 true false
Glucose 2024 8 5 20 6 ❌ 12.5 (125) 116 116 true false
Glucose 2024 9 5 12 19 ❌ 12.9 (129) 251 251 true false
Glucose 2024 9 5 20 25 ❌ 13.1 (131) 86 86 true false
Ketone 2024 7 24 19 59 ✔️ 0.2 (correct) 247 247 false false
Ketone 2024 8 4 18 55 ✔️ 0.1 (correct) 137 137 false false
Ketone 2024 8 4 16 33 ✔️ 2.2 (correct) 128 128 false false

The Ketone measurements look all correct, however the glucose readings stored in the mmolValue field and are off by factor 10 (the field name is misleading even the different unit is indicaded by mgdl boolean).
For example it reads 21.2 mg/dL instead of 212 mg/dL.

It might have something to do with this line:

        g.mmolValue = getUnsignedByte(b) / 10d;     // TODO WARNING MMOL ONLY

It would be wonderful if this issue could be considered for an upcoming release. Addressing this would allow us to implement auto-calibration when the values are usable ❤️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants