Skip to content
Ben Bennett edited this page Aug 3, 2021 · 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.

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