1

Goal:

To build a gateway using a RaspPi 4 which will receive the BLE data from the sensor and be able to see this on my mobile remotely anywhere.

Sensor:

Temperature & Humidity BLE (T201), you use an APP called "SensorsPro" to receive the data from the sensor when within range and you can sync the data to produce a up to date graph which logs the data. The sensor itself has a 20 day memory approx in which you can open the app and sync the data. When you open the app the data takes a few seconds to start flowing again with a live Temp & Humidity readings. The app can also connect and read multiple sensors, each had a unique MAC address starting with [A4:C1:38:::**].

Why: I use these to monitor my vivariums with creatures inside, each needs to be within a temp & humidity range and i'd like to be able to monitor remotely and receive alerts if the temp range spikes or the humidity drops so I can activate the appropriate cooling fans, misting system, turn off the lights in spikes of hot weather etc.

What i need help with:

  1. I have been able to put an old galaxy s6 into dev mode and use the app from the manufacturer and receive data and logged it via the btsnoop_hci.log file and exported to Wireshark but i can't seem to translate this data after searching for hours i'm struggling to read the data for one to be able to convert it into a temperature and humidity reading plus device battery level.

  2. The T201 sensor is always advertising but connecting via a mobile ble scanner or gatttool disconnects frequently without being able to do much more, i need to find a way to mimic the app via the RPi and send the data to my pi which i could then use / convert with once i know what data i'm receiving and use python (optimisically) and then forward to Mosquitto / Node Red / MQTT Dashboard to read the data and then work out a IFTTT or Telegram notification to alert me if the temperature / humidity is out of

Any help would be appreciated, i'm a beginner in linux and python so certainly have a challenge ahead.

I looked into OpenHab too but without the data from the sensor i feel thats a no go too at present.

Thank you in advance for any contributions towards my project.

18/05/21:

https://easyupload.io/kdc6gp - 30 second of BLE Data

https://streamable.com/bgqo5v - Video of the 30 seconds to see the temperature, humidity, battery level live against the 30 seconds to see how it changes.

[A4:C1:38:3A:07:3A] - Top reading, [A4:C1:38:C0:01:E1] - Bottom reading

7
  • Your best bet is to ask the manufacturer for the protocol specs. Otherwise, there isn't much anyone here can help you with given the provided data. If you provide logs of the advertisement data and/or the exchanges between the phone and sensor maybe someone will be able to help. We don't even know if the sensor data is in the advertisement packets or if the device needs to connect to retrieve it, and if so, how (read, notify...).
    – jcaron
    May 17 at 16:23
  • The manufacturer is Sigmawit and they have worked with Tuya on some of their products, so it's possible it's just a rebrand of another device (or vice-versa). Have you checked Home Assistant integrations? There may be some other integrations that actually support those devices.
    – jcaron
    May 17 at 17:26
  • Thanks for your reply, i shall upload the log of the first minute or so of the communication later on this evening to see if anyone can help. I have tried tuya app and others to try connecting to the sensor but nothing picks it up other than their own app. I've spoken to the manufacturer via alibaba about their products so i may ask if they would send me the protocol specs.
    – James
    May 18 at 6:24
  • easyupload.io/qdmwbt - this will expire in 30 days so if i need to upload again let me know. I used wireshark to view and export this file.
    – James
    May 18 at 9:08
  • You should probably edit your question and include several examples of the advertising data of the T201, along with the matching temp/humidity/battery level as displayed in the app; ideally a few examples in similar conditions, and a few others in different conditions (different temp/humidity), so one can try to decode those. At the moment it's clear that bytes 3-8 are the MAC address (useful for iOS apps as iOS does not give them the MAC address directly) but without reference, it's difficult to guess what is what in the rest...
    – jcaron
    May 18 at 9:34
1

The manufacturer advertising data looks like this:

01 01 a4 c1 38 3a 07 3a 01 07 08 ce 25 89 62 00 01
?? ?? ---MAC address--- ?? ?? Temp- -Hum- Ba ?? ??
  • Bytes 3-8 are the MAC address (it's present elsewhere in the frame, but iOS does not give that info to apps, while it gives the full advertising data, that's why this is repeated here)

  • Bytes 11-12 are the temperature (0x08ce = 2254 -> 22.54°)

  • Bytes 13-14 are the humidity (0x2589 = 9609 -> 96.09%)

  • Byte 15 is the battery level (0x62 = 98 -> 98%)

That leaves us 6 unknown bytes, but all the rest (which I believe includes all the info you need) is pretty clear.

You would have to capture more traffic to see if those remaining values change.

3
  • Appreciate that. Would you be able to point me in the direction of how you got those readings / what actually is the equation that works it out? I also need to figure out how to actually connect to the sensor to receive the packets using the RPI
    – James
    May 20 at 20:35
  • Just looked at the parts of the advertisement data which changed over time, and it’s purely a hex to decimal conversion. 08ce in hex is 2254 in decimal, and so on.
    – jcaron
    May 20 at 20:38
  • Okay that's great as i can write a python conversion for that going forward. Just to connect to the sensor now.
    – James
    May 20 at 20:46

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.