RoadTest: Omron Environmental Sensors
Author: vlasov01
Creation date:
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: SensorTag
What were the biggest problems encountered?: Can't retrieve recorded data over BLE. Battery can't be secured using provided components.
Detailed Review:
I’m road testing Omron Environment Sensor (PCB Type) 2JCIE-BL01-P1.
It has the following sensors:
The sensor comes with extra parts to hold a battery. They need to be soldered. There are no any instructions or a web link to documentation.
Omron web site has documentation in different languages. I’ve used the following documents:
2JCIE-BL01-P1 Environment Sensor (PCB Type) User's Manual https://omronfs.omron.com/en_US/ecb/products/pdf/A280-E1.pdf
Environment Sensor Data Sheet https://omronfs.omron.com/en_US/ecb/products/pdf/A259-E1-03.pdf
Environment Sensor White Paper https://omronqafs.omron.com/en_US/ecb/products/pdf/A285-E1-01.pdf
I was looking to test the sensor on the go. But I was not able to find any information on soldering battery connectors for Environment Sensor. So I’ve soldered battery connectors as best as I can. And I’m definitely not an expert in soldering.
After I’ve soldered connectors I’ve inserted CR1232 3V battery.
But my battery was not able to power the sensor as the battery connectors are not locking it in place. There is a gap between the battery and the sensor. As result I was not able to perform testing the sensor on the go.
I've compared it with a similar SensorTag sensor and SensorTag has a much more robust battery connector.
So I’ve used a stationary power supply as an alternative. The sensor requires 3 volts.
I found two Omron’s repositories for Environment Sensor on Github.
OMRON Developers Hub (omron-devhub) https://github.com/omron-devhub/2jciebl-bu-ble-raspberrypi
The code is released under GPL 2.0 license. Environment Sensor project has 4 stars. It was last time updated in March 2019. There are no open issues. It provides installation steps for Raspberry Pi. I was able to follow them without any issues as well. It is very basic sample in Python, which reads data continuously from the sensor.
The first step was to install BLE Scanner and change Environment Sensor Beacon mode from default mode 00 (Event Beacon (SCAN RSP)) to 04 (General Broadcaster 2). After this change the device BLE name gets changed from Env to EP. User’s Manual p.29 has description of these parameters. But the main difference is that the device in General Broadcaster 2 mode streams real-time sensor data from the device using BLE interface.
Change the beacon mode of the environment sensor by the following procedure.
Default:0x0808(1285ms) Advertise interval Unit:0.625msRange:0x0320(500ms)~0x4000(10.24s)
- Find and connect a BLE device named Env (EnvSensor - BL01)
- Open "0C4C3040-7700-46F4-AA96D5E974E32A54" of CUSTOM SERVICE
- Open "0C4C3042-7700-46F4-AA96D5E974E32A54" of CUSTOM CHERACTERISTIC
- Tap Write Value "0808 A000 000A 0032 04 00", which is changing the sensor mode General Broadcaster
Default:0x00A0 (100ms) Advertise interval Unit:0.625msRange:0x00A0(100ms)~0x4000(10.24s) *Not used
Default:0x000A (10s) Set transmission period per cycle when 0x03 Beacon Mode or 0x05 Limited Broadcaster Unit:1 sec Range:0x0001(1s)~0x3FFF(16383s)
Default:0x0032(50s) Set silent period per cycle when 0x03 Beacon Mode or 0x05 Limited Broadcaster Unit:1 secRange:0x0001(1s)~0x3FFF(16383s)
Default:0x08 (8) Beacon Mode Range:0x00(0)~0x0A(10)
Default:0x00 (0 dBm) Tx Power Unit:dBm Range:-20, -16, -12, -8, -4, 0, 4 dBm
- Tap Read Value to see if the set value is reflected
- Turn off the connection and confirm that the name of the device has changed to EP- BL01.
There is some additional information about Omron mobile app for the sensor in another roadtest review.
OMRON Corp. Micro Devices Div (OmronMicroDevices)
https://github.com/OmronMicroDevices/envsensor-observer-py
It has 25 stars and no open issues. It was last time updated in November 2018. It is not clear for me what the license type for the code is. It provides installation steps for Raspberry Pi. I was able to follow them without any issues.It is a more advanced Python program. It has option to store sensor data stream in a file or in a time series database InfluxDB.
I’ve tested both options. Both of them worked very well. But I prefer InfluxDB combination with Grafana, as this combination provides nice user experience and simplifies data exploration.
I’ll share my experience of using the sensor with InfluxDB/Grafana.
There is some additional work involved to install a more recent version of InfluxDB on RPi as the version that can be installed by default with Debian is quite outdated..
pi@raspberrypi:~ $ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add - source /etc/os-release test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | sudo tee /etc/apt/sources.list.d/influxdb.list test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list test $VERSION_ID = "9" && echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.listOK pi@raspberrypi:~ $ source /etc/os-release pi@raspberrypi:~ $ test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | sudo tee /etc/apt/sources.list.d/influxdb.list pi@raspberrypi:~ $ test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list pi@raspberrypi:~ $ test $VERSION_ID = "9" && echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list deb https://repos.influxdata.com/debian stretch stable pi@raspberrypi:~ $ sudo apt-get update Get:1 http://archive.raspberrypi.org/debian stretch InRelease [25.4 kB] Get:2 http://raspbian.raspberrypi.org/raspbian stretch InRelease [15.0 kB] Get:3 https://repos.influxdata.com/debian stretch InRelease [4732 B] Hit:4 https://download.docker.com/linux/raspbian stretch InRelease Hit:5 https://dl.yarnpkg.com/debian stable InRelease Get:6 http://raspbian.raspberrypi.org/raspbian stretch/main armhf Packages [11.7 MB] Get:7 https://repos.influxdata.com/debian stretch/stable armhf Packages [929 B] Fetched 11.7 MB in 17s (688 kB/s) Reading package lists... Done pi@raspberrypi:~ $ sudo apt-get upgrade influxdb Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages will be upgraded: influxdb libgs9 libgs9-common libvpx4 yarn 5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 67.7 MB of archives. After this operation, 149 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:2 https://repos.influxdata.com/debian stretch/stable armhf influxdb armhf 1.7.9-1 [59.4 MB] Get:3 https://dl.yarnpkg.com/debian stable/main armhf yarn all 1.19.2-1 [890 kB] Get:1 http://mirror.us.leaseweb.net/raspbian/raspbian stretch/main armhf libgs9 armhf 9.26a~dfsg-0+deb9u6 [1860 kB] Get:4 http://raspbian.freemirror.org/raspbian stretch/main armhf libgs9-common all 9.26a~dfsg-0+deb9u6 [5143 kB] Get:5 http://raspbian.freemirror.org/raspbian stretch/main armhf libvpx4 armhf 1.6.1-3+deb9u2 [432 kB] Fetched 67.7 MB in 44s (1534 kB/s) Reading changelogs... Done (Reading database ... 108252 files and directories currently installed.) Preparing to unpack .../libgs9_9.26a~dfsg-0+deb9u6_armhf.deb ... Unpacking libgs9:armhf (9.26a~dfsg-0+deb9u6) over (9.26a~dfsg-0+deb9u5) ... Preparing to unpack .../libgs9-common_9.26a~dfsg-0+deb9u6_all.deb ... Unpacking libgs9-common (9.26a~dfsg-0+deb9u6) over (9.26a~dfsg-0+deb9u5) ... Preparing to unpack .../libvpx4_1.6.1-3+deb9u2_armhf.deb ... Unpacking libvpx4:armhf (1.6.1-3+deb9u2) over (1.6.1-3+deb9u1) ... Preparing to unpack .../archives/yarn_1.19.2-1_all.deb ... Unpacking yarn (1.19.2-1) over (1.19.1-1) ... Preparing to unpack .../influxdb_1.7.9-1_armhf.deb ... Unpacking influxdb (1.7.9-1) over (1.0.2+dfsg1-1) ... Setting up libgs9-common (9.26a~dfsg-0+deb9u6) ... Setting up yarn (1.19.2-1) ... Setting up influxdb (1.7.9-1) ... Installing new version of config file /etc/influxdb/influxdb.conf ... Synchronizing state of influxdb.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable influxdb Setting up libvpx4:armhf (1.6.1-3+deb9u2) ... Processing triggers for libc-bin (2.24-11+deb9u4) ... Processing triggers for man-db (2.7.6.1-2) ... Setting up libgs9:armhf (9.26a~dfsg-0+deb9u6) ... Processing triggers for libc-bin (2.24-11+deb9u4) ...
I've changed envsensor-observer-py configuration file to log data into InfluxDB and than validated that it is working as expected.
pi@raspberrypi:~ $ influx Connected to http://localhost:8086 version 1.7.9 InfluxDB shell version: 1.7.9 > USE weather Using database weather > SELECT * FROM "census" name: census time accel_x accel_y accel_z battery bt_address di distance eco2 etvoc gateway heat humidity light noise pga pressure rssi seismic sensor_type si temperature uv vibinfo ---- ------- ------- ------- ------- ---------- -- -------- ---- ----- ------- ---- -------- ----- ----- --- -------- ---- ------- ----------- -- ----------- -- ------- 1575987836305355036 0 0 0 3000 F2821D9C2708 60.35 1.015827711157303 0 0 raspberrypi 14.66 53.02 0 47.88 0 996.2 -61 0 EP 0 16.21 0.02 -
Grafana installation is quite simple and can be easly configured to use InfluxDB.
pi@raspberrypi:/tmp $ wget https://dl.grafana.com/oss/release/grafana_6.5.2_armh f.deb --2019-12-25 09:43:35-- https://dl.grafana.com/oss/release/grafana_6.5.2_armhf.deb Resolving dl.grafana.com (dl.grafana.com)... 151.101.186.217, 2a04:4e42:2c::729 Connecting to dl.grafana.com (dl.grafana.com)|151.101.186.217|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 33363030 (32M) [application/x-debian-package] Saving to: 'grafana_6.5.2_armhf.deb' grafana_6.5.2_armhf 100%[===================>] 31.82M 1.77MB/s in 21s 2019-12-25 09:43:57 (1.51 MB/s) - 'grafana_6.5.2_armhf.deb' saved [33363030/33363030] pi@raspberrypi:/tmp $ sudo dpkg -i grafana_6.5.2_armhf.deb Selecting previously unselected package grafana. (Reading database ... 110574 files and directories currently installed.) Preparing to unpack grafana_6.5.2_armhf.deb ... Unpacking grafana (6.5.2) ... Replaced by files in installed package grafana-rpi (6.5.2) ... Setting up grafana (6.5.2) ... ### NOT starting on installation, please execute the following statements to configure grafana to start automatically using systemd sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable grafana-server ### You can start grafana-server by executing sudo /bin/systemctl start grafana-server Processing triggers for systemd (232-25+deb9u12) ... pi@raspberrypi:/tmp $ sudo /bin/systemctl daemon-reload pi@raspberrypi:/tmp $ sudo /bin/systemctl enable grafana-server Synchronizing state of grafana-server.service with SysV service script with /lib /systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable grafana-server Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service. pi@raspberrypi:/tmp $ sudo /bin/systemctl start grafana-server
After Grafana started I was able to access my local instance from browser at http://192.168.1.63:3000/login
Than I've specified InfluxDB location.
I've created a simple dashboard in Grafana. It demonstrates data captured by the sensor.
After successful testing of real-time data streaming mode, I was looking to test device in the data recording mode. This mode can have a lot of practical applications.
But there I didn't find any code samples. So I've followed User's Manual. And it requires multiple steps to enable it.
The device supports several modes with data recording to flash memory. Activation of data recording requires several steps to activate it and it has some conditions, where it is switching off.
Time Information must be set from the Central device first. Time information is cleared
to zero (0) again when the Measurement Interval is changed, Beacon Mode is changed or power is reset. In these cases, it is necessary to set Time Information again to restart data recording.
Only some Beacon Modes support Data Recording. I've decided to use the default 0.x08 Event Beacon (ADV) for event recording.
Beacon Mode Name Shortened Device Name Device Name
0x00 Event Beacon (SCAN RSP) Env EnvSensor-BL01
0x01 Standard Beacon Env EnvSensor-BL01
0x07 Alternate Beacon Env EnvSensor-BL01
0x08 Event Beacon (ADV) Env EnvSensor-BL01
I’ve installed gattlib and used gattol to make these configuration changes to enable data recording. There is a good description how to use these tools at https://github.com/pcborenstein/bluezDoc/wiki/hcitool-and-gatttool-example
Control Service (Service UUID: 0x3030)
Time information (Characteristics UUID: 0x3031)
Set UNIX TIME from the Central device for time adjustment of the recording data in the flash memory.
Time information based on this setting is recorded for each page of the flash memory.
* Note: Memory recording of measured data is not started unless time set to this Characteristic.
Request page (Characteristics UUID: 0x3003)
Specify the page number to retrieve the measured data from the flash memory.
The result of retrieving from the memory for the page specified in this Characteristic will be set in
- 2.1.4 Response flag and the past measured data will be set in 2.1.5 Response data.
* Note: Memory recording of measured data is not started unless 2.3.1 Time information is set.
Here is my attempt to use recording mode.
Line 04 - in some cases connection attempt fails
Line 06 - sometimes BLE device reset is required before connection can be created
Line 11 - lists available characteristics of the device
Line 46 - reading the current mode of the device
Line 48 - reading current time
Line 49 - time is not set
Line 51 - set time in Unix format.
Line 57 - set recording mode.
Line 71-77 reading last recorded page from data logger
Line 86 - reading error code
Line 87 - no error flags
Line 109 - reading latest data
pi@raspberrypi:~ $ gatttool -I -b F2:82:1D:9C:27:08 [F2:82:1D:9C:27:08][LE]> connect Attempting to connect to F2:82:1D:9C:27:08 Error: connect error: Connection refused (111) pi@raspberrypi:~ $ sudo hciconfig hci0 reset pi@raspberrypi:~ $ sudo gatttool -t random -b F2:82:1D:9C:27:08 -I [F2:82:1D:9C:27:08][LE]> connect Attempting to connect to F2:82:1D:9C:27:08 Connection successful [F2:82:1D:9C:27:08][LE]> characteristics handle: 0x0002, char properties: 0x0a, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb handle: 0x0004, char properties: 0x02, char value handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb handle: 0x0006, char properties: 0x02, char value handle: 0x0007, uuid: 00002a04-0000-1000-8000-00805f9b34fb handle: 0x0009, char properties: 0x20, char value handle: 0x000a, uuid: 00002a05-0000-1000-8000-00805f9b34fb handle: 0x000d, char properties: 0x02, char value handle: 0x000e, uuid: 00002a29-0000-1000-8000-00805f9b34fb handle: 0x000f, char properties: 0x02, char value handle: 0x0010, uuid: 00002a24-0000-1000-8000-00805f9b34fb handle: 0x0011, char properties: 0x02, char value handle: 0x0012, uuid: 00002a25-0000-1000-8000-00805f9b34fb handle: 0x0013, char properties: 0x02, char value handle: 0x0014, uuid: 00002a27-0000-1000-8000-00805f9b34fb handle: 0x0015, char properties: 0x02, char value handle: 0x0016, uuid: 00002a26-0000-1000-8000-00805f9b34fb handle: 0x0018, char properties: 0x12, char value handle: 0x0019, uuid: 0c4c3001-7700-46f4-aa96-d5e974e32a54 handle: 0x001b, char properties: 0x02, char value handle: 0x001c, uuid: 0c4c3002-7700-46f4-aa96-d5e974e32a54 handle: 0x001d, char properties: 0x0a, char value handle: 0x001e, uuid: 0c4c3003-7700-46f4-aa96-d5e974e32a54 handle: 0x001f, char properties: 0x02, char value handle: 0x0020, uuid: 0c4c3004-7700-46f4-aa96-d5e974e32a54 handle: 0x0021, char properties: 0x02, char value handle: 0x0022, uuid: 0c4c3005-7700-46f4-aa96-d5e974e32a54 handle: 0x0023, char properties: 0x12, char value handle: 0x0024, uuid: 0c4c3006-7700-46f4-aa96-d5e974e32a54 handle: 0x0027, char properties: 0x0a, char value handle: 0x0028, uuid: 0c4c3011-7700-46f4-aa96-d5e974e32a54 handle: 0x0029, char properties: 0x0a, char value handle: 0x002a, uuid: 0c4c3012-7700-46f4-aa96-d5e974e32a54 handle: 0x002b, char properties: 0x0a, char value handle: 0x002c, uuid: 0c4c3013-7700-46f4-aa96-d5e974e32a54 handle: 0x002d, char properties: 0x0a, char value handle: 0x002e, uuid: 0c4c3014-7700-46f4-aa96-d5e974e32a54 handle: 0x002f, char properties: 0x0a, char value handle: 0x0030, uuid: 0c4c3015-7700-46f4-aa96-d5e974e32a54 handle: 0x0031, char properties: 0x0a, char value handle: 0x0032, uuid: 0c4c3016-7700-46f4-aa96-d5e974e32a54 handle: 0x0033, char properties: 0x0a, char value handle: 0x0034, uuid: 0c4c3017-7700-46f4-aa96-d5e974e32a54 handle: 0x0035, char properties: 0x0a, char value handle: 0x0036, uuid: 0c4c3018-7700-46f4-aa96-d5e974e32a54 handle: 0x0037, char properties: 0x0a, char value handle: 0x0038, uuid: 0c4c3019-7700-46f4-aa96-d5e974e32a54 handle: 0x0039, char properties: 0x0a, char value handle: 0x003a, uuid: 0c4c301a-7700-46f4-aa96-d5e974e32a54 handle: 0x003c, char properties: 0x0a, char value handle: 0x003d, uuid: 0c4c3031-7700-46f4-aa96-d5e974e32a54 handle: 0x003e, char properties: 0x08, char value handle: 0x003f, uuid: 0c4c3032-7700-46f4-aa96-d5e974e32a54 handle: 0x0040, char properties: 0x0a, char value handle: 0x0041, uuid: 0c4c3033-7700-46f4-aa96-d5e974e32a54 handle: 0x0042, char properties: 0x08, char value handle: 0x0043, uuid: 0c4c3034-7700-46f4-aa96-d5e974e32a54 handle: 0x0045, char properties: 0x0a, char value handle: 0x0046, uuid: 0c4c3041-7700-46f4-aa96-d5e974e32a54 handle: 0x0047, char properties: 0x0a, char value handle: 0x0048, uuid: 0c4c3042-7700-46f4-aa96-d5e974e32a54 handle: 0x004a, char properties: 0x04, char value handle: 0x004b, uuid: 0c4c3052-7700-46f4-aa96-d5e974e32a54 handle: 0x004c, char properties: 0x18, char value handle: 0x004d, uuid: 0c4c3051-7700-46f4-aa96-d5e974e32a54 handle: 0x004f, char properties: 0x02, char value handle: 0x0050, uuid: 0c4c3053-7700-46f4-aa96-d5e974e32a54 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3042-7700-46f4-aa96-d5e974e32a54 handle: 0x0048 value: 08 08 a0 00 0a 00 32 00 04 00 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3031-7700-46f4-aa96-d5e974e32a54 handle: 0x003d value: 00 00 00 00 [F2:82:1D:9C:27:08][LE]> char-write-cmd 0x003d 5df6fdae [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3031-7700-46f4-aa96-d5e974e32a54 handle: 0x003d value: 5d f6 fd ae [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3042-7700-46f4-aa96-d5e974e32a54 handle: 0x0048 value: 08 08 a0 00 0a 00 32 00 04 00 [F2:82:1D:9C:27:08][LE]> char-write-cmd 0x0048 0808a0000a0032000800 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3042-7700-46f4-aa96-d5e974e32a54 handle: 0x0048 value: 08 08 a0 00 0a 00 32 00 08 00 handle: 0x003d value: 9f ff f6 5d Latest page (Characteristics UUID: 0x3002) The Latest page shows the latest page and row information of the memory as the progress status of data recording. The Central device can acquire the past memory data by referring to the difference between the page information at the previous data retrieving and this latest page information. [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3002-7700-46f4-aa96-d5e974e32a54 handle: 0x001c value: 5d f6 ff 9f 2c 01 00 00 03 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3002-7700-46f4-aa96-d5e974e32a54 handle: 0x001c value: 5d f6 ff 9f 2c 01 00 00 09 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3002-7700-46f4-aa96-d5e974e32a54 handle: 0x001c value: 5d f6 ff 9f 2c 01 00 00 0c [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3002-7700-46f4-aa96-d5e974e32a54 handle: 0x001c value: 98 d5 f8 5d 2c 01 1f 00 06 Error status (Characteristics UUID: 0x3033) Various error conditions of the sensor are indicated by a bit field. The error state can be reset by writing 0 from the Central device. *Just reading this characteristic does not reset the state. [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3033-7700-46f4-aa96-d5e974e32a54 handle: 0x0041 value: 00 00 00 00 (C) Connection Advertise 2 This format contains Flag, Local Name, Latest page information, and event flag. There is no SCAN_RSP and sensor data is not included. 2.1.1 Latest data (Characteristics UUID: 0x3001) Measured sensor data is updated every measurement interval and reflected in Latest data. The measurement interval can be changed in 2.2.1 Measurement interval. In addition to regular update in set measurement interval, when sensor is disconnected from Central devices, the measurement is immediately carried out then the contents of this characteristics is updated. However, in case of immediate data measurement, this measured data is not saved to the memory and row number is not updated. [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3001-7700-46f4-aa96-d5e974e32a54 handle: 0x0019 value: 04 33 06 01 12 00 00 02 00 c8 27 77 12 5c 17 4d 05 ba 0b 2.1.2 Latest page (Characteristics UUID: 0x3002) The Latest page shows the latest page and row information of the memory as the progress status of data recording. The Central device can acquire the past memory data by referring to the difference between the page information at the previous data retrieving and this latest page information. [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3002-7700-46f4-aa96-d5e974e32a54 handle: 0x001c value: 8c 0f f8 5d 2c 01 12 00 05 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3002-7700-46f4-aa96-d5e974e32a54 handle: 0x001c value: 8c 0f f8 5d 2c 01 12 00 06
Request page (Characteristics UUID: 0x3003)
Specify the page number to retrieve the measured data from the flash memory.
Now I'm attempting read the latest page.
[F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3003-7700-46f4-aa96-d5e974e32a54 0x120006
handle: 0x001e value: 00 00 00
Response flag (Characteristics UUID: 0x3004)
When requesting page and row number is set in 2.1.3 Request page, 2.1.5 Response Data will be
updated with retrieved measured data. Whether the update is successfully completed or not can be
known by the Update flag of this Characteristic.
I'm checking this flag. And it works this time.
[F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3004-7700-46f4-aa96-d5e974e32a54
handle: 0x0020 value: 01 5d f6 ff 9f
Response data (Characteristics UUID: 0x3005)
Retrieved memory data in the page and row specified in 2.1.3 Request page will be updated in this
is automatically set to this Characteristic (descending order Row 12 to Row 0).
Therefore, it is unnecessary to specify 2.1.3 Request page for each row, and all row in the same
page can be read by continuous Read of this Characteristic. However, since automatic retrieving
across pages is not performed, when moving to the next page, it is necessary to specify the page
number again to 2.1.3 Request page and confirm the 2.1.4 Response flag each time.
* Note: Memory recording of measured data is not started unless 2.3.1 Time information is set.
Line 02-08 I'm getting response data back.
Line 14 Trying to get new data
Line 15 No data
Line 16 Trying to get new data
Line 17 No data
I was not able to get valid response data back.
[F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3005-7700-46f4-aa96-d5e974e32a54 handle: 0x0022 value: 00 83 06 33 12 00 00 02 00 94 27 8e 12 c2 17 8b 05 b3 0b 043e2b0201000108279c1d82f21f02010603020a1812ffd502910002009d240000000000000000000408456e76ce 043e2b0201000108279c1d82f21f02010603020a1812ffd502910002009d240000000000000000000408456e76d5 043e2b0201000108279c1d82f21f02010603020a1812ffd502910002009d240000000000000000000408456e76d8 043e2b0201000108279c1d82f21f02010603020a1812ffd502a20002009d240000000000000000000408456e76c5 043e2b0201000108279c1d82f21f02010603020a1812ffd502a40002009d240000000000000000000408456e76d8 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3003-7700-46f4-aa96-d5e974e32a54 0x150007 handle: 0x001e value: 00 00 00 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3004-7700-46f4-aa96-d5e974e32a54 handle: 0x0020 value: 01 5d f6 ff 9f [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3005-7700-46f4-aa96-d5e974e32a54 handle: 0x0022 value: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [F2:82:1D:9C:27:08][LE]> char-read-hnd 0x0022 Characteristic value/descriptor: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [F2:82:1D:9C:27:08][LE]> char-read-hnd 150007 Characteristic value/descriptor: 14 00 28 00 04 00 90 01 [F2:82:1D:9C:27:08][LE]> char-read-hnd 150008 Characteristic value/descriptor: 01 18 [F2:82:1D:9C:27:08][LE]> char-read-hnd 150006 Characteristic value/descriptor: 02 07 00 04 2a
pi@raspberrypi:~/omron/2jciebl-bu-ble-raspberrypi $ sudo gatttool -t random -b F2:82:1D:9C:27:08 -I [F2:82:1D:9C:27:08][LE]> connect Attempting to connect to F2:82:1D:9C:27:08 Connection successful [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3003-7700-46f4-aa96-d5e974e32a54 0x120006 handle: 0x001e value: 00 00 00 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3004-7700-46f4-aa96-d5e974e32a54 handle: 0x0020 value: 01 5d f6 ff 9f [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3005-7700-46f4-aa96-d5e974e32a54 handle: 0x0022 value: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [F2:82:1D:9C:27:08][LE]> exit [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3002-7700-46f4-aa96-d5e974e32a54 handle: 0x001c value: d4 e4 f8 5d 2c 01 20 00 06 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3003-7700-46f4-aa96-d5e974e32a54 200001 handle: 0x001e value: 00 00 00 [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3004-7700-46f4-aa96-d5e974e32a54 handle: 0x0020 value: 01 5d f6 ff 9f [F2:82:1D:9C:27:08][LE]> char-read-uuid 0c4c3005-7700-46f4-aa96-d5e974e32a54 handle: 0x0022 value: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
After multiple unsuccessful attempts to retrieve data from Data Logger mode I’ve tried to contact Omron support at https://www.components.omron.com/contact-us-form?inquiryType=sensor&support=technical
on December 17th . I’m still waiting for the response as of January 8th.
The Environmental Sensor has ability to perform some edge processing and only trigger notification when a certain condition has been reached. It is a powerful capability for a constraint device, which can significantly extend battery life and reduce maintenance costs for the sensor in some scenarios.
In the past BLE stack had some critical security vulnerabilities. The Environmental Sensor can be programmed over the air with a new firmware. So it may be interesting to explore how it can be done, especially when security is important.
Top Comments
As someone who has already published their RoadTest of both units - I would suggest perhaps trying the following regarding your data logging attempt -
- It seems you are setting the time and then setting…
Thank you for your reply!
I'll try it again using your suggestion about the order of setting it up and will report back.
Sergey