5

This is a very specific question.

I'm currently working on a project to create an android application capable of reading the values of an hydrometer via Bluetooth. By reading the datasheet, I suspect the hydrometer uses a serial communication.

First I connected my laptop with the help of a Bluetooth manager and tried to communicate with it with a serial terminal. Through trial and error I've managed to receive some information when sending the character "0x44" in hexadecimal. Alas what I receive isn't human readable, here is an example:

\0x11\0x1a\0x19D0L\0xda\0xae\0x9b \0xcc\0x01\0xa2q\0x13\0x00\0x13p:\0xcb(\0x8a\0x0c\0xf6\0xeb`#\0xbdv

I've then used BluetoothSerial a phonegap plugin for serial communication over Bluetooth, and built a small test application for android, and by sending the same character (0x44), I received a string of strange characters:

D0Lڮ� ���A��p���wn��
��� )

With this 2 experiments I'm lead to believe the information could be encoded or encrypted.

Reading the PDF of a different hydrometer of the same company I've sent the following (in hex):

10 7B FD 78 16

And what I got was the following, in hexadecimal:

11 1a 19 44 30 4c da ae 9b 20 cc 01 a2 31 13 00 13 70 66 76 0e 26 8b b9 8c 0c 47 b7 3c 09 0b 00 74 0f 00 00 ca 09
11 1a 19 44 30 4c da ae 9b 20 cc 01 a2 41 13 00 13 70 03 ba f2 77 6e 82 81 0d 08 ba c8 09 0b 00 7a 1f 00 00 6c 0a
11 1a 19 44 30 4c da ae 9b 20 cc 01 a2 51 13 00 13 70 14 95 bb dc 4f 51 58 d6 11 b8 49 0a 03 00 6a 2f 00 00 e5 0a
11 1a 19 44 30 4c da ae 9b 20 cc 01 a2 01 13 00 13 70 5f 07 d4 db e9 cd e6 61 6c b0 50 0b 0b 00 57 60 00 00 12 0c
11 1a 19 44 30 4c da ae 9b 20 cc 01 a2 11 13 00 13 70 48 28 9d 70 c8 1e 3f ba 75 b2 b5 09 0a 00 de 71 00 00 0e 0b

Just by reading the appendix 2 of the PDF and the M-BUS PDF I can't make any meaning out of this response. I know that when using an already existing android app for this device I get the following information for the device it finds, example:

  • C10SA202842
  • current: 500 m3
  • stored: 500 m3
  • date: 23/11/15/15 20:14

I've also got the following response:

11 1a 19 44 30 4c 07 f3 d7 20 98 01 a2 31 1c 00 13 9f 8d ba 81 19 d6 e2 a3 ad f0 53 30 0b 0e 00 a2 0c 00 00 ec 0b
11 1a 19 44 30 4c 07 f3 d7 20 98 01 a2 41 1c 00 13 9f e8 76 7d 48 33 d9 ae ac bf 5e ba 0a 0d 00 55 1d 00 00 39 0b
11 1a 19 44 30 4c 07 f3 d7 20 98 01 a2 51 1c 00 13 9f ff 59 34 e3 12 0a 77 77 a6 5c 9f 09 0d 00 e2 2c 00 00 ba 0a
11 1a 19 44 30 4c 07 f3 d7 20 98 01 a2 61 1c 00 13 9f c6 28 ee 1e 70 7e 1d 1a 8d 5b 3b 09 10 00 df 3d 00 00 67 0a

For a different water measuring unit it detected. The android app got the following result in readable format at the same date and (more or less) time:

  • C14FA152455
  • current: 0.027 m3
  • stored: 0.027 m3
  • date: 23/11/15/15 18:32

How could I find a proper way of decoding that information in readable format, if what I received is indeed what I expected?

  • 1
    I think there is a reverse engineering SE, people there are probably more familiar with decoding protocols, which really doesnt have mucht to do with EE – PlasmaHH Nov 17 '15 at 23:04
  • Don't expect to get ASCII characters. – Samuel Nov 17 '15 at 23:05
  • Wildly cast group of 4 bytes in different byte orders to floats and see if one is a possible measurement value. – Arsenal Nov 17 '15 at 23:07
  • 3
    Your datasheet leads to www.hydrometer.com, which leads to the german company Diehl, which has a product download link that leads to this pdf which describes, in detail, the communication of a (different) Hydrometer. The introduction says "The M-Bus (Meter Bus) is an European standard for remote reading of meters. It can be used for all types of consumption meters and for various sensors and actuators. ", so there's a good chance your meter uses the same. – Guntram Blohm supports Monica Nov 18 '15 at 9:14
  • 1
    @GuntramBlohm Reading the PDF (page 4) I've sent the following (in hex): 68 04 04 68 73 FF 50 00 20 16. What I got was the following: \0x16\0x18\0x07\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x07\0x00. Reading the appendix 1 and 2 I can't make any meaning out of this response. I know that when using the android app I get the following information: current: 500 m3, stored 500 m3, date: 19/11/15/15 12:09, name: C10SA202842. – Rui Lima Nov 19 '15 at 12:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.