esphome-docs/components/climate/bedjet.rst
Jesse Hills 391eeda9e3
[climate] Tidy up name/id (#4140)
* [climate] Tidy up name/id

* Fix paste mistake
2024-08-13 21:41:14 -05:00

220 lines
6.7 KiB
ReStructuredText

BedJet
======
.. seo::
:description: Instructions for setting up a BedJet climate device.
:image: bedjet.png
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 :doc:`/components/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.
.. code-block:: yaml
esp32_ble_tracker:
ble_client:
- mac_address: XX:XX:XX:XX:XX:XX
id: bedjet_ble_id1
bedjet:
- id: bedjet_1
ble_client_id: bedjet_ble_id1
Configuration variables:
************************
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **ble_client_id** (**Required**, :ref:`config-id`): The ID of the BLE Client.
- **time_id** (*Optional*, :ref:`config-id`): The ID of a :doc:`/components/time/index` which
can be used to set the time on the BedJet device.
- **update_interval** (*Optional*, :ref:`config-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 :ref:`lambdas <config-lambda>`, you can call methods to do some advanced stuff.
- ``.upgrade_firmware``: Check for and install updated BedJet firmware.
.. code-block:: yaml
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.
.. code-block:: yaml
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`.
.. code-block:: yaml
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.
.. code-block:: yaml
climate:
- platform: bedjet
id: my_bedjet_climate_entity
name: "My BedJet"
bedjet_id: bedjet_1
Configuration variables:
************************
- **bedjet_id** (**Required**, :ref:`config-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.
- **temperature_source** (*Optional*, string): The temperature that should be used as the
climate entity's current temperature:
- ``ambient`` (Default) - The temperature of the room the BedJet is in will be
reported as the climate entity's current temperature.
- ``outlet`` - The temperature of the air being discharged by the BedJet will be
reported as the climate entity's current temperature.
- All other options from :ref:`Climate <config-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``.
.. code-block:: yaml
fan:
- platform: bedjet
id: my_bedjet_fan_entity
name: "My BedJet Fan"
bedjet_id: bedjet_1
Configuration variables:
************************
- **bedjet_id** (**Required**, :ref:`config-id`): The ID of the Bedjet component.
- Other options from :ref:`Fan <config-fan>`.
``bedjet`` Sensor
-----------------
The ``sensor`` platform exposes the BedJet's various temperature readings as sensors.
.. code-block:: yaml
sensor:
- platform: bedjet
bedjet_id: bedjet_1
outlet_temperature:
name: "My BedJet Outlet Temperature"
ambient_temperature:
name: "My BedJet Ambient Temperature"
Configuration variables:
************************
- **outlet_temperature** (*Optional*): If specified, the temperature of the air being
discharged from the BedJet will be reported as a sensor.
All options from :ref:`Sensor <config-sensor>`.
- **ambient_temperature** (*Optional*): If specified, the temperature of the room the
BedJet is in will be reported as a sensor.
All options from :ref:`Sensor <config-sensor>`.
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 :doc:`/components/switch/ble_client`.
.. 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 :ref:`ota.on_begin <ota-on_begin>` :ref:`Automation<automation>`
to do this automatically:
.. code-block:: yaml
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
--------
- :doc:`/components/ble_client`
- :doc:`/components/climate/index`
- :apiref:`bedjet/bedjet.h`
- :ghedit:`Edit`