RadonEye BLE Interface

Thanks @jaaem for publishing this! It seems to be working great on my FR:RU unit.

For others that might have been confused like I was at first, the FR: portion of the serial number is not printed on my labels nor is it in the Radon Eye app. It is just what Home Assistant sees, I guess.

2 Likes

I attempted to add V1 support. But since I do not have one, not sure if it will work. You need to remove the rd200 MAC from the ESPHome ble_client: entry or this integration will not work.

Thanks - I will try it soon!

Thanks jaaem your great integration. It’s working for me :slight_smile:

I had a few problems with my internal NUC11 Bluetooth but as I fixed everything the setup was done within one minute and it’s working perfectly fine.

1 Like

OK, the integration seems to be working pretty well so far with my V1 unit - thanks for the support!

I’m using it via a bluetooth proxy on ESPHome 2023.1.0-dev20230123 (because apparently neither 2022.12.4 nor 2022.12.5 is available as a tagged container release). As expected, only the current radon value shows up. Long term values (1-day, 1-month) are set up by the integration but show as “Unknown.”

One other small thing I noted: the values (in pCi/L) are coming into Home Assistant with like 14 digits after the decimal point, only two of which are significant. Is that something on the integration’s end? I can fix this with a template sensor if necessary.

Is there anything I can do to help expose the long-term values? The ESPHome sensor platform supports it: Radon Eye BLE Sensors — ESPHome

Thanks again.

Try release 2.1, I think I added the 1_day and 1_month sensors based of the ESPHome implementation. I also attempted to round the V1 output to 2 digits. If you are in US it has to convert units, so introduces a lot of decimals. The V2 version works opposite: it returns it in US units directly and conversion needed to metric. If it works right, I will add to the V2 as well

The latest ESPHome (which finally was posted) is only needed for V2 devices, V1 should not need it.

2 Likes

Yes, 2.1 is working very well. I have a functional 1_day sensor, but the device hasn’t been powered continuously for a month, so I have 0.0 showing in the 1_month sensor.

I can also confirm that the unit conversion now provides two digits after the decimal. (Yes, I am in the US, so we do get the weird non-SI units, but still per liter for some reason. Why not per hogshead as Abe Simpson would have preferred?) Looks great.

Thanks!

1 Like

I really want to use your custom ESPHome RD200 support but I can’t for the life of me get this thing to work. I trimmed down the config file to this:

esphome:
  name: radon

esp32:
  board: nodemcu-32s

logger:
  level: DEBUG

esp32_ble_tracker:

ble_client:
  - mac_address: F4:0C:75:57:64:22
    id: radon1
    
sensor:
  - platform: radon_eye_rd200
    ble_client_id: radon1
    radon:
      name: Radon1

No WiFi, no OTA, no API – just the ESP32 definition and the required RD200 support. Here’s the boot looping result:

[D][esp32_ble_client:048]: [0] [F4:0C:75:57:64:22] Found device
[D][esp32_ble_tracker:216]: Pausing scan to make connection...
[I][esp32_ble_client:064]: [0] [F4:0C:75:57:64:22] 0x01 Attempting BLE connection
[I][radon_eye_rd200:015]: Connected successfully!
[D][esp32_ble_tracker:327]: Starting scan...
[D][sensor:127]: 'Radon1': Sending state 49.58000 Bq/m³ with 0 decimals of accuracy
Guru Meditation Error: Core  1 panic'ed (StoreProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x400d546e  PS      : 0x00060a30  A0      : 0x800d4f29  A1      : 0x3ffc84b0  
A2      : 0x00000000  A3      : 0x428e147b  A4      : 0x0000008f  A5      : 0x3ffbc780  
A6      : 0x007bee88  A7      : 0x003fffff  A8      : 0x800d54a0  A9      : 0x3ffc8450  
A10     : 0x807f40fe  A11     : 0x3ffc29d8  A12     : 0x00000000  A13     : 0x3ffc847c  
A14     : 0x3ffbc840  A15     : 0x00000000  SAR     : 0x0000001f  EXCCAUSE: 0x0000001d  
EXCVADDR: 0x00000058  LBEG    : 0x400906b1  LEND    : 0x400906c1  LCOUNT  : 0xffffffe7  


Backtrace:0x400d546b:0x3ffc84b00x400d4f26:0x3ffc84e0 0x400d50ed:0x3ffc8500 0x400d5105:0x3ffc8580 0x400d1fae:0x3ffc85a0 0x4018d7d1:0x3ffc85d0 0x400d4410:0x3ffc85f0 0x4018d8b5:0x3ffc8700 0x4018d949:0x3ffc8720 0x400d55e4:0x3ffc8740 0x400d7462:0x3ffc8770 0x400d8aa5:0x3ffc8790 




ELF file SHA256: 0000000000000000

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13132
load:0x40080400,len:3036
entry 0x400805e4
[I][logger:258]: Log initialized
[I][app:029]: Running through setup()...
[D][esp32_ble_tracker:327]: Starting scan...
[I][app:062]: setup() finished successfully!
[W][radon_eye_rd200:141]: Connection in progress
[I][app:102]: ESPHome version 2022.12.8 compiled on Feb  4 2023, 00:08:23
[C][logger:293]: Logger:
[C][logger:294]:   Level: DEBUG
[C][logger:295]:   Log Baud Rate: 115200
[C][logger:296]:   Hardware UART: UART0
[C][radon_eye_rd200:166]:   Radon 'Radon1'
[C][radon_eye_rd200:166]:     State Class: 'measurement'
[C][radon_eye_rd200:166]:     Unit of Measurement: 'Bq/m³'
[C][radon_eye_rd200:166]:     Accuracy Decimals: 0
[C][radon_eye_rd200:166]:     Icon: 'mdi:radioactive'
[C][esp32_ble_tracker:870]: BLE Tracker:
[C][esp32_ble_tracker:871]:   Scan Duration: 300 s
[C][esp32_ble_tracker:872]:   Scan Interval: 320.0 ms
[C][esp32_ble_tracker:873]:   Scan Window: 30.0 ms
[C][esp32_ble_tracker:874]:   Scan Type: ACTIVE
[C][esp32_ble_tracker:875]:   Continuous Scanning: True
[C][ble_client:027]: BLE Client:
[C][ble_client:028]:   Address: F4:0C:75:57:64:22
[D][esp32_ble_client:048]: [0] [F4:0C:75:57:64:22] Found device
[D][esp32_ble_tracker:216]: Pausing scan to make connection...
[I][esp32_ble_client:064]: [0] [F4:0C:75:57:64:22] 0x01 Attempting BLE connection
[I][radon_eye_rd200:015]: Connected successfully!
[D][esp32_ble_tracker:327]: Starting scan...
[D][sensor:127]: 'Radon1': Sending state 49.58000 Bq/m³ with 0 decimals of accuracy
Guru Meditation Error: Core  1 panic'ed (StoreProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x400d546e  PS      : 0x00060a30  A0      : 0x800d4f29  A1      : 0x3ffc84b0  
A2      : 0x00000000  A3      : 0x428e147b  A4      : 0x0000008f  A5      : 0x3ffbc780  
A6      : 0x007bee88  A7      : 0x003fffff  A8      : 0x800d54a0  A9      : 0x3ffc8450  
A10     : 0x71f28344  A11     : 0x3ffc29d8  A12     : 0x00000000  A13     : 0x3ffc847c  
A14     : 0x3ffbc840  A15     : 0x00000000  SAR     : 0x0000001f  EXCCAUSE: 0x0000001d  
EXCVADDR: 0x00000058  LBEG    : 0x400906b1  LEND    : 0x400906c1  LCOUNT  : 0xffffffe7  


Backtrace:0x400d546b:0x3ffc84b00x400d4f26:0x3ffc84e0 0x400d50ed:0x3ffc8500 0x400d5105:0x3ffc8580 0x400d1fae:0x3ffc85a0 0x4018d7d1:0x3ffc85d0 0x400d4410:0x3ffc85f0 0x4018d8b5:0x3ffc8700 0x4018d949:0x3ffc8720 0x400d55e4:0x3ffc8740 0x400d7462:0x3ffc8770 0x400d8aa5:0x3ffc8790 




ELF file SHA256: 0000000000000000

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13132
load:0x40080400,len:3036
entry 0x400805e4
[I][logger:258]: Log initialized
[I][app:029]: Running through setup()...
[D][esp32_ble_tracker:327]: Starting scan...
[I][app:062]: setup() finished successfully!
[W][radon_eye_rd200:141]: Connection in progress
[I][app:102]: ESPHome version 2022.12.8 compiled on Feb  4 2023, 00:08:23
[C][logger:293]: Logger:
[C][logger:294]:   Level: DEBUG
[C][logger:295]:   Log Baud Rate: 115200
[C][logger:296]:   Hardware UART: UART0
[C][radon_eye_rd200:166]:   Radon 'Radon1'
[C][radon_eye_rd200:166]:     State Class: 'measurement'
[C][radon_eye_rd200:166]:     Unit of Measurement: 'Bq/m³'
[C][radon_eye_rd200:166]:     Accuracy Decimals: 0
[C][radon_eye_rd200:166]:     Icon: 'mdi:radioactive'
[C][esp32_ble_tracker:870]: BLE Tracker:
[C][esp32_ble_tracker:871]:   Scan Duration: 300 s
[C][esp32_ble_tracker:872]:   Scan Interval: 320.0 ms
[C][esp32_ble_tracker:873]:   Scan Window: 30.0 ms
[C][esp32_ble_tracker:874]:   Scan Type: ACTIVE
[C][esp32_ble_tracker:875]:   Continuous Scanning: True
[C][ble_client:027]: BLE Client:
[C][ble_client:028]:   Address: F4:0C:75:57:64:22
[D][esp32_ble_client:048]: [0] [F4:0C:75:57:64:22] Found device
[D][esp32_ble_tracker:216]: Pausing scan to make connection...
[I][esp32_ble_client:064]: [0] [F4:0C:75:57:64:22] 0x01 Attempting BLE connection
[I][radon_eye_rd200:015]: Connected successfully!
[D][esp32_ble_tracker:327]: Starting scan...
[D][sensor:127]: 'Radon1': Sending state 49.58000 Bq/m³ with 0 decimals of accuracy
Guru Meditation Error: Core  1 panic'ed (StoreProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x400d546e  PS      : 0x00060c30  A0      : 0x800d4f29  A1      : 0x3ffc84b0  
A2      : 0x00000000  A3      : 0x428e147b  A4      : 0x0000008f  A5      : 0x3ffbc780  
A6      : 0x007bee88  A7      : 0x003fffff  A8      : 0x800d54a0  A9      : 0x3ffc8450  
A10     : 0xa202bf02  A11     : 0x3ffc29d8  A12     : 0x00000000  A13     : 0x3ffc847c  
A14     : 0x3ffbc840  A15     : 0x00000000  SAR     : 0x0000001f  EXCCAUSE: 0x0000001d  
EXCVADDR: 0x00000058  LBEG    : 0x400906b1  LEND    : 0x400906c1  LCOUNT  : 0xffffffe7  


Backtrace:0x400d546b:0x3ffc84b00x400d4f26:0x3ffc84e0 0x400d50ed:0x3ffc8500 0x400d5105:0x3ffc8580 0x400d1fae:0x3ffc85a0 0x4018d7d1:0x3ffc85d0 0x400d4410:0x3ffc85f0 0x4018d8b5:0x3ffc8700 0x4018d949:0x3ffc8720 0x400d55e4:0x3ffc8740 0x400d7462:0x3ffc8770 0x400d8aa5:0x3ffc8790 




ELF file SHA256: 0000000000000000

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13132
load:0x40080400,len:3036
entry 0x400805e4
[I][logger:258]: Log initialized
[I][app:029]: Running through setup()...
[D][esp32_ble_tracker:327]: Starting scan...
[I][app:062]: setup() finished successfully!
[W][radon_eye_rd200:141]: Connection in progress
[I][app:102]: ESPHome version 2022.12.8 compiled on Feb  4 2023, 00:08:23
[C][logger:293]: Logger:
[C][logger:294]:   Level: DEBUG
[C][logger:295]:   Log Baud Rate: 115200
[C][logger:296]:   Hardware UART: UART0
[C][radon_eye_rd200:166]:   Radon 'Radon1'
[C][radon_eye_rd200:166]:     State Class: 'measurement'
[C][radon_eye_rd200:166]:     Unit of Measurement: 'Bq/m³'
[C][radon_eye_rd200:166]:     Accuracy Decimals: 0
[C][radon_eye_rd200:166]:     Icon: 'mdi:radioactive'
[C][esp32_ble_tracker:870]: BLE Tracker:
[C][esp32_ble_tracker:871]:   Scan Duration: 300 s
[C][esp32_ble_tracker:872]:   Scan Interval: 320.0 ms
[C][esp32_ble_tracker:873]:   Scan Window: 30.0 ms
[C][esp32_ble_tracker:874]:   Scan Type: ACTIVE
[C][esp32_ble_tracker:875]:   Continuous Scanning: True
[C][ble_client:027]: BLE Client:
[C][ble_client:028]:   Address: F4:0C:75:57:64:22

I’m using this type of ESP32 device (Chinese), yellow plastic on the bottom side, and 38-pins:

I’m wondering if I have the wrong board or platform or framework selected… I just can’t understand how you determine which one of those to use for these no-name Chinese ESP32s. I have absolutely nothing plugged into it, I’m just trying to use it’s blutooth to connect to the RD200.

Now I’m really up against a wall because the old method of including the rd200.h file doesn’t work with new ESPHome so I’m trying to get this resolved before I lose my data gathering abilities. :frowning:

Recommend installing my homeassistant custom component linked above. Now works for V1 and V2. You configure the ESP32 as an active BT proxy https://esphome.io/components/bluetooth_proxy.html and/or use your internal bluetooth. Then homeassistant handles the rest.

I haven’t used it, but there is a web installer that is supposed to set the proxy up with all the correct settings: https://esphome.github.io/bluetooth-proxies/ . Just confirm it sets it as an active proxy.

However, I think the V1 is built into ESPHome https://esphome.io/components/sensor/radon_eye_ble.html. No need to do any development or including any .h files. I still think my component is better!

2 Likes

There used to be only one esp32. Then they added in esp32-C2 and ESP32-S2, etc. As long as it is an esp32, it should work fine. Most of the differences between esp32 (the one sithout additional letters) are in the pinouts or extra stuff attached to the board. They all have the same mcu.

Your error looks like a software problem. Specifically an out of memory problem. It may also be a hardware issue, and just getting another esp32 would fix it. But the bluetooth proxy is a better way to do it (even just from a design perspective).

You might think that but this is persistent across any ESP32 I try. In fact, I can take the device I’m currently using with the old hacked ESPHome Bluetooth rd200 software (which works) and flash it with the small yaml I shared above and it will boot loop. I can then reflash it with the hack and it works again.

In other words, this looks like a bug in ESPHome with your integration, specifically. I’m thinking I’ll open an issue on GitHub for it. Thoughts?

I think we probably need to change the docs for this integration to point people towards rhe bluetooth proxy solution, and make it clear this integration is no longer getting tested or supported (sorry, I just don’t have one of these anymore).

sad. :frowning:

No offense to you or jaaem but I prefer to not use the bluetooth on my Home Assistant hardware to handle all of this. It feels like a single point of failure and what if I didn’t have a bluetooth receiver on my HA hardware? I’d rather have a standalone device that I program with ESPHome to handle all the data and calculations separately and talk to it through WiFi. Oh well, maybe I’m the only one that feels this way.

Well, I made a ticket for it anyway: Using radon_eye_rd200 platform causes boot loop · Issue #4123 · esphome/issues · GitHub

You’re missing a key point. You can flash one (or many) esp32 boards with bluetooth_proxy. They will read and write bluetooth for HA. They still talk over wifi to HA. HA has much more compute power and memory, so it can easily handle all the decoder ring stuff. It is more secure, more reliable, and less intensive on the esp32.

I have 3 of them in my house. Whichever one reads the packets sends it to HA. Two of them had other jobs (for gpio) before I added bluetooth proxy…

I don’t have any bluetooth on my HA. It is an HA blue and there are no dongles connected.

3 Likes

Probably best, since mine now supports both versions (I used your code to get the V1 going). But I have no plans to make it an official integration as way too much work with pypi and such. Maybe someone will take my code and do it.

“puls” holds the number of actual radioactive decay events within the FD200’s ionisation chamber within the given time interval. So it gets a reset every ten minutes. “puls10” holds the total number of such events in the previous time interval, so from comparing the two numbers your can - only very roughly - extrapolate a tendency. After a thorough ventilation of the room, for example, the puls count normally drops considerably, whereas due to the statistical model used to generate the radon value from the pulse count it takes some time, until the effect is mirrored in the values on the display.

I have implemented Home Assistant OS addon that works with new RadonEye v2 devices. If you need support for old RadonEye v1, then reach out to me, I will need volunteer for testing.

Feel free to use: GitHub - sormy/hass-radoneye-addon: Home Assistant OS Ecosense RadonEye (bluetooth version) Addon

Requires mqtt and bluetooth adapter. I have found bluetooth on RPi4 to work perfectly while bluetooth/wifi usb dongles on RTL chip to work horribly.

Thanks for sharing your addon. I’m curious if there are functional improvements in your repo over: jdeath/rd200v2: RadonEye RD200 Version 2 Integration for Home Assistant (github.com)

It is addon instead of hacs. It uses mqtt as transport. It can’t hang. It doesn’t support v1 currently. It doesn’t support pulse metrics currently. radon-reader repo contains version that can be installed as systemd service that can push data over mqtt to home assistant as well.

1 Like

I recently purchased a RD200 (FR:HJ) and I’m wondering if anyone has one that is actively working within ESPHome or Home Assistant? I have tried every combination I can find online and none of them ever find the RadonEye device but work for other things (e.g. Oral B toothbrush).

Has there been another version/protocol change?
Or is this related to the fact that this one is the ESP32 based version and not the Nordic nRF version?

I’ve tried:
-ESPHome radoneye component
-ESPHome bluetooth proxy
-arduino and esp-idf
-ethernet (wt32-eth01) and wifi (esp32 devkit)
-ceandre/radonreader (on Raspberry Pi 4b)
-jdeath/rd200v2 (with BT proxy)

My Bluetooth adapter isn’t compatible with HA so I haven’t tried HAOS → BT → RadonEye but that doesn’t seem like it should be necessary.

Here is the current config with commented sections I have also tried combinations of:

esp32_ble_tracker:
  scan_parameters:
    interval: 1100ms
    window: 1100ms
    active: true

# esp32_ble_tracker:
#   scan_parameters:
#     interval: 100ms
#     window: 99ms
#     active: True

bluetooth_proxy:
  active: true

# esp32_ble_tracker:

# ble_client:
#   - mac_address: 90:38:0C:59:--:--
#     id: radon_eye_ble_id

# sensor:
#   - platform: radon_eye_rd200
#     ble_client_id: radon_eye_ble_id
#     update_interval: 5min
#     radon:
#       name: "Radon"
#       accuracy_decimals: 2
#     radon_long_term:
#       name: "Radon Long Term"
#       accuracy_decimals: 2

Any insight in to what the issue might be, what might fix it, or what additional things I can check would be greatly appreciated! I’d like to get this working so I can log the data and do my mitigation ASAP.