We initially received 3 units ( WoIOSensorTH ) from SwitchBot to review, these are Bluetooth IP65 Indoor / Outdoor Hygrometer / Thermometers. Our expectation was that these should work of the box with Home Assistant, though this wasn’t the case, so we shared our feedback to the manufacturer. SwitchBot responded quickly, creating the necessary software which they posted on Gitub, ‘Hats Off’ to them for responding to feedback.

Once the Integration was available in Home Assistant, these devices add quickly and easily, reporting temperature, humidity and battery values. These devices are powered by 2 x AAA batteries and claim a 2 year lifespan from one set of batteries, which we think is excellent.

Due to some the materials used in the construction of our house, we had some issues with range of these BlueTooth sensors, they couldn’t penetrate certain walls meaning the sensors were not visible to our Home Assistant system. So how do you increase BlueTooth range, probably the easiest way, is the low cost solution we chose – A BlueTooth proxy for Home Assistant.

As we discovered a few years ago, the Wi-Fi in our house wasn’t the best, again due to the walls. The inner walls of our house are constructed from Cinder Blocks. When we have drilled through these blocks, we found that the resulting dust is magnetic, no wonder the Wi-Fi struggles. To solve the poor Wi-Fi in and around our house we installed a number of Wireless Access Points (WAP).

By converting the BlueTooth to Wi-Fi using a proxies, we solved our issue with poor BlueTooth range.

What we used for each proxy:

  • ESP32 – Widely available from eBay and Amazon
  • USB Charger and microUSB cable – as above
  • Small 3D printed case – eBay

ESPHome, which is a standard component of Home Assistant, the following is the ESP code we use for each proxy, though we specify individual fixed IP addresses for each one:

esphome:
  name: bluetooth-proxy-shed
  friendly_name: Bluetooth Proxy shed

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API

api:
  encryption:
    key: V****jmq8****KMM****WG31****So6****2WG****
ota:
  password: "3****6f31****d8a2****27c*dc6****"

wifi:
  ssid: !secret wifi_shed
  password: !secret wifi_password

  # Optional manual IP
  manual_ip:
    static_ip: 192.168.0.203
    gateway: 192.168.0.1
    subnet: 255.255.255.0

  # Enable fallback hotspot in case wifi connection fails
  ap:
    ssid: "Bluetooth-Proxy-Shed"
    password: "****F0fo****"

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

bluetooth_proxy:
  active: true  

At the moment we have 4 BlueTooth proxies, the one above had us head scratching for short while as the SwitchBot device just wouldn’t register with the integration. We remembered how quickly and easily the other 3 SwitchBot devices added previously, then remembered that this was before we introduced the BlueTooth Proxies.

The solution for the stubborn SwitchBot sensor was to disable all of the proxy devices in the ESPHome integration, then force a restart of the Home Assistant system.

The 4th SwitchBot sensor was immediately added to the SwitchBot integration, no having to put the device into discovery mode. All we did then was enable the ESPHome proxies again and perform another restart of Home Assistant, everything working perfectly.

We have a Wireless Access Point in the shed, which is connected to our house via fibre optic cable (OM4), along with ESP32 BlueTooth proxy we can accurately measure temperature in the back garden. This ability allows us to only activate the pond pump when certain parameters are met.