BedJet

The bedjet component allows you to communicate with a BedJet V3 Climate Comfort Sleep System.

This component supports the following functionality:

  • Set the operating mode: off, heat, cool, turbo (boost)

  • Set the desired target temperature

  • Set the desired fan speed

  • Start one of the saved memory presets, including “Biorhythm” programs

  • Show the current status of the BedJet

This component uses the BLE peripheral on an ESP32, so you also need to enable this component. Please see the BLE Client docs for how to discover the MAC address of your BedJet device.

Component/Hub

This component is a global hub that maintains the connection to the BedJet device and delegates status updates to individual platform components.

esp32_ble_tracker:

ble_client:
  - mac_address: C4:4F:33:00:00:01
    id: bedjet_ble_id1

bedjet:
  - id: bedjet_1
    ble_client_id: bedjet_ble_id1

Configuration variables:

  • id (Optional, ID): Manually specify the ID used for code generation.

  • ble_client_id (Required, ID): The ID of the BLE Client.

  • time_id (Optional, ID): The ID of a Time Component which can be used to set the time on the BedJet device.

  • update_interval (Optional, Time): The interval to dispatch status changes to child components. Defaults to 5s. Each child component can decide whether to publish its own updated state on this interval, or use another (longer) update interval to throttle its own updates.

lambda calls

From lambdas, you can call methods to do some advanced stuff.

  • .upgrade_firmware: Check for and install updated BedJet firmware.

    button:
      - platform: template
        name: "Check Bedjet(1) Firmware"
        on_press:
          then:
          - lambda: |-
              id(bedjet_1).upgrade_firmware();
    
  • .send_local_time: If time_id is set, attempt to sync the clock now.

    button:
      - platform: template
        name: "Sync Clock"
        on_press:
          then:
          - lambda: |-
              id(my_bedjet_fan).send_local_time();
    
  • .set_clock: Set the BedJet clock to a specified time; works with or without a time_id.

    button:
      - platform: template
        name: "Set Clock to 10:10pm"
        on_press:
          then:
          - lambda: |-
              id(my_bedjet_fan).set_clock(22, 10);
    

bedjet Climate

The climate platform exposes the BedJet’s climate-related functionality, including setting the mode and target temperature.

climate:
  - platform: bedjet
    id: my_bedjet_climate_entity
    name: "My BedJet"
    bedjet_id: bedjet_1

Configuration variables:

  • id (Optional, ID): Manually specify the ID used for code generation.

  • name (Required, string): The name of the climate device.

  • bedjet_id (Required, ID): The ID of the Bedjet component.

  • heat_mode (Optional, string): The primary heating mode to use for HVACMode.HEAT:

    • heat (Default) - Setting hvac_mode=heat uses the BedJet “HEAT” mode.

    • extended - Setting hvac_mode=heat uses BedJet “EXT HEAT” mode.

    Whichever is not selected will be made available as a custom preset.

  • All other options from Climate.

bedjet Fan

The fan platform exposes the BedJet’s fan-related functionality, including on/off and speed control.

When the BedJet is already on, turning the Fan component off will set the BedJet unit’s mode to OFF. If it was not already on, it will be turned on to mode FAN_ONLY.

fan:
  - platform: bedjet
    id: my_bedjet_fan_entity
    name: "My BedJet Fan"
    bedjet_id: bedjet_1

Configuration variables:

  • id (Optional, ID): Manually specify the ID used for code generation.

  • name (Required, string): The name of the fan device.

  • bedjet_id (Required, ID): The ID of the Bedjet component.

  • Other options from Fan.

Known issues:

Warning

BedJet V2 and other devices are not currently supported. Only BedJet V3 is supported.

Note

Only one client can be connected to the BedJet BLE service at a time, so you cannot use the BedJet mobile app to monitor or control the BedJet device while this component is connected. To use the mobile app, you should disconnect the ESP client first.

To set up a (dis-)connect switch, see BLE Client Switch.

Note

When more than one device is configured and connected, the ESP device may become overwhelmed and lead to timeouts while trying to install an updated version of the configuration. If this occurs, see the previous note about adding disconnect switches, and toggle those off while performing the installation. This will free up resources on the ESP and allow the installation to complete.

Additionally, you may use an ota.on_begin Automation to do this automatically:

ota:
  on_begin:
    then:
      - logger.log: "Disconnecting clients for OTA update..."
      - switch.turn_off: bedjet_1_monitor
      - switch.turn_off: bedjet_2_monitor

See Also