- VSON technology WP6003 are air quality sensors
- Has sensors to relay temperature, TVOC, HCHO and eCO2
- Uses Bluetooth Low Energy (BLE) and has a limited range
- 5V USB is used as power source
- Read real-time sensor values
- Read historical sensor values
- Temperature
- TVOC and HCHO mesurements
- CO2 estimation
The device uses BLE GATT for communication.
Sensor values are immediately available for reading.
The basic technologies behind the sensors communication are Bluetooth Low Energy (BLE) and GATT. They allow the devices and the app to share data in a defined manner and define the way you can discover the devices and their services. In general you have to know about services and characteristics to talk to a BLE device.
The data is encoded in big-endian byte order.
This means that the data is represented with the most significant byte first.
To understand multi-byte integer representation, you can read the endianness Wikipedia page.
The name advertised by the devices is WP6003#XXXXXXXXXXXX, WP6003# followed by the MAC address of the device.
| Characteristic UUID | Access | Description |
|---|---|---|
| 00002a00-0000-1000-8000-00805f9b34fb | read,write | device name |
| 00002a01-0000-1000-8000-00805f9b34fb | read,write | appearance |
| 00002a02-0000-1000-8000-00805f9b34fb | read | privacy flag |
| 00002a04-0000-1000-8000-00805f9b34fb | read | connection parameters |
| Characteristic UUID | Access | Description |
|---|---|---|
| 0000fff1-0000-1000-8000-00805f9b34fb | write no resp | TX |
| 0000fff4-0000-1000-8000-00805f9b34fb | read,notify | RX |
First of all you need to register to get notification on the RX characteristic.
Writing 7 bytes (0xaaYYMMDDhhmmss) to the TX handle will set the device time.
| Bytes | Type | Value | Description |
|---|---|---|---|
| 00 | bytes | 0xaa | command |
| 01 | bytes | 20 | year % 100 |
| 02 | bytes | 01 | month |
| 03 | bytes | 01 | day |
| 04 | bytes | 12 | hour |
| 05 | bytes | 30 | minute |
| 06 | bytes | 00 | second |
Writing 1 byte (0xab) to the TX handle will make the device send back a data packet on RX.
The response is as follow:
| Bytes | Type | Value | Description |
|---|---|---|---|
| 00 | bytes | 0x0a | command |
| 01 | bytes | 20 | year % 100 |
| 02 | bytes | 01 | month |
| 03 | bytes | 01 | day |
| 04 | bytes | 12 | hour |
| 05 | bytes | 30 | minute |
| 06-07 | int16_be | 221 (221/10=22.1°) | temperature (°C) |
| 06-07 | uint16_be | VOC (µg/m3) | |
| 06-07 | uint16_be | HCHO (µg/m3) | |
| 06-07 | uint16_be | 560 | eCO2 (PPM) |
The sensor needs a couple of minutes to warm up and send valid data (VOC and HCHO will read 16383 in the mean time) and about an hour to provide accurate and stable readings.
There seems to be no advertisement data broadcasted.
[1] -
MIT
