Skip to content
Ivan Smirnov edited this page Apr 15, 2022 · 3 revisions

Introduction

Chilipad OOLER is a bed heater and cooler that works by sending water through pipes in a materess topper. The bluetooth system allows you to read the current temperature of the water in the pipes and set a target temp. You can also control fan speed and whether the system is on.

Reference

Used https://community.home-assistant.io/t/bluetooth-device-help/199902/10 I have not yet worked out if the "low water level" indicator status is available over Bluetooth.

Getting the Bluetooth MAC

You will need to get the Bluetooth MAC address to use in your config and MQTTT topics. One way to do this on iOS is:

  1. Install BT Inspector from the iOS app store.
  2. Run a global scan, find your "OOLER-XXXX" device.
  3. Click on the device, then click the "interrogate" button in the top corner.
  4. Scroll down to Device Information, field A2B8F078.... Under it you will see a 12 character hex string.
  5. Reverse the string in pairs. So, if your string is deadbeeffeed, your mac will be deadbeeffeed -> de:ad:be:ef:fe:ed -> ed:fe:ef:be:ad:de. The true ooler MAC should have the first three octets set to 84:71:27.

esp32-ble2mqtt/data/config.json

Cleaned config.json

{
  "network": {
    ...
  },
  "mqtt": {
    "server": {
      ...
    },
    "publish": {
      "retain": true
    },
    "topics": {
      "prefix": "ooler/",
      "get_suffix": "/Get",
      "set_suffix": "/Set"
    }
  },
  "ble": {
    "whitelist": [
      ... [I listed both of my ooler units here to focus my results]
    ],
    "services": {
      "definitions": {
        "5c293993-d039-4225-92f6-31fa62101e96": {
          "name": "Ooler"
        }
      },
      "whitelist": [
        "5c293993-d039-4225-92f6-31fa62101e96"
      ]
    },
    "characteristics": {
      "definitions": {
        "7a2623ff-bd92-4c13-be9f-7023aa4ecb85": {
          "name": "Power",
          "types": ["uint8"]
        },
        "6aa46711-a29d-4f8a-88e2-044ca1fd03ff": {
          "name": "SetTemp",
          "types": ["uint8"]
        },
        "cafe2421-d04c-458f-b1c0-253c6c97e8e8": {
          "name": "FanSpeed",
          "types": ["uint8"]
        },
        "e8ebded3-9dca-45c2-a2d8-ceffb901474d": {
          "name": "CurrentTemp",
          "types": ["uint8"]
        },
        "2c988613-fe15-4067-85bc-8e59d5e0bte3": {
          "name": "DisplayUnits",
          "types": ["uint8"]
        },
        "923445f2-9438-4d81-98c9-904b69b94eca": {
          "name": "DewPoint",
          "types": ["uint8"]
        }
      },
      "whitelist": [
        "7a2623ff-bd92-4c13-be9f-7023aa4ecb85",
        "6aa46711-a29d-4f8a-88e2-044ca1fd03ff",
        "cafe2421-d04c-458f-b1c0-253c6c97e8e8",
        "e8ebded3-9dca-45c2-a2d8-ceffb901474d",
        "2c988613-fe15-4067-85bc-8e59d5e0bte3",
        "923445f2-9438-4d81-98c9-904b69b94eca"
      ]
    }
  }
}

Sample HA Configuration

Replace YOUR_ADDRESS with the device's Bluetooth address. And replace the two instances of 'foo'.

climate:
  - platform: mqtt
    name: "Foo's Bed"
    modes:
      - "off"
      - "auto"
    fan_modes:
      - "high"
      - "medium"
      - "low"
    mode_command_topic: "ooler/YOUR_ADDRESS/Ooler/Power/Set"
    mode_command_template: '{% if value == "off" %}0{% else %}1{% endif %}'
    mode_state_topic: "ooler/YOUR_ADDRESS/Ooler/Power"
    mode_state_template: "{% if value_json == 1 %}auto{% else %}off{% endif %}"
    
    temperature_command_topic: "ooler/YOUR_ADDRESS/Ooler/SetTemp/Set"
    temperature_state_topic: "ooler/YOUR_ADDRESS/Ooler/SetTemp"
    temperature_unit: F
    
    current_temperature_topic: "ooler/YOUR_ADDRESS/Ooler/CurrentTemp"
    
    fan_mode_command_topic: "ooler/YOUR_ADDRESS/Ooler/FanSpeed/Set"
    fan_mode_command_template: '{% if value == "high" %}2{% elif value == "medium" %}1{% else %}0{% endif %}'
    fan_mode_state_topic: "ooler/YOUR_ADDRESS/Ooler/FanSpeed"
    fan_mode_state_template: "{% if value_json == 2 %}high{% elif value_json == 1 %}medium{% else %}low{% endif %}"
    
    max_temp: 116
    min_temp: 54

    precision: 1.0
    
    unique_id: ble2mqtt_foo_bed