BedJet

The bedjet climate platform creates a climate device which can be used to control 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 platform 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, or you can find the list of paired MAC addresses in the “DEVICE LIST” section of the BedJet mobile application.

ble_client:
  - mac_address: 11:22:33:aa:bb:cc
    id: ble_bedjet

climate:
  - platform: bedjet
    id: my_bedjet_fan
    name: "My BedJet Fan"
    ble_client_id: ble_bedjet

Configuration variables:

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

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

  • 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.

  • 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.

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 Firmware"
        on_press:
          then:
          - lambda: |-
              id(my_bedjet_fan).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);
    

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