ESPHome  2022.11.3
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
esphome::bedjet::BedJetHub Class Reference

Hub component connecting to the BedJet device over Bluetooth. More...

#include <bedjet_hub.h>

Inheritance diagram for esphome::bedjet::BedJetHub:
esphome::ble_client::BLEClientNode esphome::PollingComponent esphome::Component

Public Member Functions

void upgrade_firmware ()
 Attempts to check for and apply firmware updates. More...
 
bool button_off ()
 Press the OFF button. More...
 
bool button_heat ()
 Press the HEAT button. More...
 
bool button_ext_heat ()
 Press the EXT HT button. More...
 
bool button_turbo ()
 Press the TURBO button. More...
 
bool button_cool ()
 Press the COOL button. More...
 
bool button_dry ()
 Press the DRY button. More...
 
bool button_memory1 ()
 Press the M1 (memory recall) button. More...
 
bool button_memory2 ()
 Press the M2 (memory recall) button. More...
 
bool button_memory3 ()
 Press the M3 (memory recall) button. More...
 
bool send_button (BedjetButton button)
 Send the button. More...
 
bool set_target_temp (float temp_c)
 Set the target temperature to temp_c in °C. More...
 
bool set_fan_index (uint8_t fan_speed_index)
 Set the fan speed to a stepped index in the range 0-19. More...
 
bool set_fan_speed (uint8_t fan_speed_pct)
 Set the fan speed to a percent in the range 5% - 100%, at 5% increments. More...
 
uint8_t get_fan_index ()
 Return the fan speed index, in the range 0-19. More...
 
uint8_t get_fan_speed ()
 Return the fan speed as a percent in the range 5%-100%. More...
 
bool set_time_remaining (uint8_t hours, uint8_t mins)
 Set the operational runtime remaining. More...
 
uint16_t get_time_remaining ()
 Return the remaining runtime, in seconds. More...
 
bool is_connected ()
 
bool has_status ()
 
const BedjetStatusPacketget_status_packet () const
 
void register_child (BedJetClient *obj)
 Register a BedJetClient child component. More...
 
void set_status_timeout (uint32_t timeout)
 Set the status timeout. More...
 
void set_time_id (time::RealTimeClock *time_id)
 Set the time::RealTimeClock implementation. More...
 
void send_local_time ()
 Attempts to sync the local time (via time_id) to the BedJet device. More...
 
void set_clock (uint8_t hour, uint8_t minute)
 Attempt to set the BedJet device's clock to the specified time. More...
 
void loop () override
 
void update () override
 
void dump_config () override
 
void setup () override
 
float get_setup_priority () const override
 
std::string get_name ()
 
void gattc_event_handler (esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param) override
 
- Public Member Functions inherited from esphome::ble_client::BLEClientNode
virtual void gap_event_handler (esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param)
 
void set_address (uint64_t address)
 
BLEClientparent ()
 
void set_ble_client_parent (BLEClient *parent)
 
- Public Member Functions inherited from esphome::PollingComponent
 PollingComponent ()
 
 PollingComponent (uint32_t update_interval)
 Initialize this polling component with the given update interval in ms. More...
 
virtual void set_update_interval (uint32_t update_interval)
 Manually set the update interval in ms for this polling object. More...
 
void call_setup () override
 
virtual uint32_t get_update_interval () const
 Get the update interval in ms of this sensor. More...
 
- Public Member Functions inherited from esphome::Component
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
virtual float get_loop_priority () const
 priority of loop(). More...
 
void call ()
 
virtual void on_shutdown ()
 
virtual void on_safe_shutdown ()
 
uint32_t get_component_state () const
 
virtual void mark_failed ()
 Mark this component as failed. More...
 
bool is_failed ()
 
virtual bool can_proceed ()
 
bool status_has_warning ()
 
bool status_has_error ()
 
void status_set_warning ()
 
void status_set_error ()
 
void status_clear_warning ()
 
void status_clear_error ()
 
void status_momentary_warning (const std::string &name, uint32_t length=5000)
 
void status_momentary_error (const std::string &name, uint32_t length=5000)
 
bool has_overridden_loop () const
 
void set_component_source (const char *source)
 Set where this component was loaded from for some debug messages. More...
 
const char * get_component_source () const
 Get the integration where this component was declared as a string. More...
 

Protected Member Functions

void dispatch_status_ ()
 
void dispatch_state_ (bool is_ready)
 
void setup_time_ ()
 Initializes time sync callbacks to support syncing current time to the BedJet. More...
 
uint8_t set_notify_ (bool enable)
 Configures the local ESP BLE client to register (true) or unregister (false) for status notifications. More...
 
uint8_t write_bedjet_packet_ (BedjetPacket *pkt)
 Send the BedjetPacket to the device. More...
 
void set_name_ (const std::string &name)
 
void status_packet_ready_ ()
 
bool discover_characteristics_ ()
 
uint8_t write_notify_config_descriptor_ (bool enable)
 Reimplementation of BLEClient.gattc_event_handler() for ESP_GATTC_REG_FOR_NOTIFY_EVT. More...
 
- Protected Member Functions inherited from esphome::Component
virtual void call_loop ()
 
virtual void call_dump_config ()
 
void set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a unique name. More...
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (const std::string &name)
 Cancel an interval function. More...
 
void set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult()> &&f, float backoff_increase_factor=1.0f)
 Set an retry function with a unique name. More...
 
void set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult()> &&f, float backoff_increase_factor=1.0f)
 
bool cancel_retry (const std::string &name)
 Cancel a retry function. More...
 
void set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a unique name. More...
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (const std::string &name)
 Cancel a timeout function. More...
 
void defer (const std::string &name, std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
bool cancel_defer (const std::string &name)
 Cancel a defer callback using the specified name, name must not be empty. More...
 

Protected Attributes

std::vector< BedJetClient * > children_
 
optional< time::RealTimeClock * > time_id_ {}
 
uint32_t timeout_ {DEFAULT_STATUS_TIMEOUT}
 
std::string name_
 
uint32_t last_notify_ = 0
 
bool force_refresh_ = false
 
bool processing_ = false
 
std::unique_ptr< BedjetCodeccodec_
 
uint16_t char_handle_cmd_
 
uint16_t char_handle_name_
 
uint16_t char_handle_status_
 
uint16_t config_descr_status_
 
- Protected Attributes inherited from esphome::ble_client::BLEClientNode
BLEClientparent_
 
uint64_t address_
 
- Protected Attributes inherited from esphome::PollingComponent
uint32_t update_interval_
 
- Protected Attributes inherited from esphome::Component
uint32_t component_state_ {0x0000}
 State of this component. More...
 
float setup_priority_override_ {NAN}
 
const char * component_source_ {nullptr}
 

Static Protected Attributes

static const uint32_t MIN_NOTIFY_THROTTLE = 15000
 
static const uint32_t NOTIFY_WARN_THRESHOLD = 300000
 
static const uint32_t DEFAULT_STATUS_TIMEOUT = 900000
 

Additional Inherited Members

- Data Fields inherited from esphome::ble_client::BLEClientNode
espbt::ESPBTClientclient
 
espbt::ClientState node_state
 

Detailed Description

Hub component connecting to the BedJet device over Bluetooth.

Definition at line 35 of file bedjet_hub.h.

Member Function Documentation

◆ button_cool()

bool esphome::bedjet::BedJetHub::button_cool ( )

Press the COOL button.

Definition at line 47 of file bedjet_hub.cpp.

◆ button_dry()

bool esphome::bedjet::BedJetHub::button_dry ( )

Press the DRY button.

Definition at line 48 of file bedjet_hub.cpp.

◆ button_ext_heat()

bool esphome::bedjet::BedJetHub::button_ext_heat ( )

Press the EXT HT button.

Definition at line 45 of file bedjet_hub.cpp.

◆ button_heat()

bool esphome::bedjet::BedJetHub::button_heat ( )

Press the HEAT button.

Definition at line 44 of file bedjet_hub.cpp.

◆ button_memory1()

bool esphome::bedjet::BedJetHub::button_memory1 ( )

Press the M1 (memory recall) button.

Definition at line 50 of file bedjet_hub.cpp.

◆ button_memory2()

bool esphome::bedjet::BedJetHub::button_memory2 ( )

Press the M2 (memory recall) button.

Definition at line 51 of file bedjet_hub.cpp.

◆ button_memory3()

bool esphome::bedjet::BedJetHub::button_memory3 ( )

Press the M3 (memory recall) button.

Definition at line 52 of file bedjet_hub.cpp.

◆ button_off()

bool esphome::bedjet::BedJetHub::button_off ( )

Press the OFF button.

Definition at line 49 of file bedjet_hub.cpp.

◆ button_turbo()

bool esphome::bedjet::BedJetHub::button_turbo ( )

Press the TURBO button.

Definition at line 46 of file bedjet_hub.cpp.

◆ discover_characteristics_()

bool esphome::bedjet::BedJetHub::discover_characteristics_ ( )
protected

Definition at line 157 of file bedjet_hub.cpp.

◆ dispatch_state_()

void esphome::bedjet::BedJetHub::dispatch_state_ ( bool  is_ready)
protected

Definition at line 495 of file bedjet_hub.cpp.

◆ dispatch_status_()

void esphome::bedjet::BedJetHub::dispatch_status_ ( )
protected

Definition at line 501 of file bedjet_hub.cpp.

◆ dump_config()

void esphome::bedjet::BedJetHub::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 484 of file bedjet_hub.cpp.

◆ gattc_event_handler()

void esphome::bedjet::BedJetHub::gattc_event_handler ( esp_gattc_cb_event_t  event,
esp_gatt_if_t  gattc_if,
esp_ble_gattc_cb_param_t *  param 
)
overridevirtual

Implements esphome::ble_client::BLEClientNode.

Definition at line 224 of file bedjet_hub.cpp.

◆ get_fan_index()

uint8_t esphome::bedjet::BedJetHub::get_fan_index ( )

Return the fan speed index, in the range 0-19.

Definition at line 69 of file bedjet_hub.cpp.

◆ get_fan_speed()

uint8_t esphome::bedjet::BedJetHub::get_fan_speed ( )
inline

Return the fan speed as a percent in the range 5%-100%.

Definition at line 77 of file bedjet_hub.h.

◆ get_name()

std::string esphome::bedjet::BedJetHub::get_name ( )
inline
Returns
The BedJet's configured name, or the MAC address if not discovered yet.

Definition at line 121 of file bedjet_hub.h.

◆ get_setup_priority()

float esphome::bedjet::BedJetHub::get_setup_priority ( ) const
inlineoverridevirtual

Reimplemented from esphome::Component.

Definition at line 118 of file bedjet_hub.h.

◆ get_status_packet()

const BedjetStatusPacket* esphome::bedjet::BedJetHub::get_status_packet ( ) const
inline

Definition at line 92 of file bedjet_hub.h.

◆ get_time_remaining()

uint16_t esphome::bedjet::BedJetHub::get_time_remaining ( )

Return the remaining runtime, in seconds.

Definition at line 112 of file bedjet_hub.cpp.

◆ has_status()

bool esphome::bedjet::BedJetHub::has_status ( )
inline

Definition at line 91 of file bedjet_hub.h.

◆ is_connected()

bool esphome::bedjet::BedJetHub::is_connected ( )
inline
Returns
true if the BLEClient::node_state is ClientState::ESTABLISHED.

Definition at line 89 of file bedjet_hub.h.

◆ loop()

void esphome::bedjet::BedJetHub::loop ( )
overridevirtual

Reimplemented from esphome::ble_client::BLEClientNode.

Definition at line 481 of file bedjet_hub.cpp.

◆ register_child()

void esphome::bedjet::BedJetHub::register_child ( BedJetClient obj)

Register a BedJetClient child component.

Definition at line 537 of file bedjet_hub.cpp.

◆ send_button()

bool esphome::bedjet::BedJetHub::send_button ( BedjetButton  button)

Send the button.

Definition at line 98 of file bedjet_hub.cpp.

◆ send_local_time()

void esphome::bedjet::BedJetHub::send_local_time ( )

Attempts to sync the local time (via time_id) to the BedJet device.

Definition at line 440 of file bedjet_hub.cpp.

◆ set_clock()

void esphome::bedjet::BedJetHub::set_clock ( uint8_t  hour,
uint8_t  minute 
)

Attempt to set the BedJet device's clock to the specified time.

Definition at line 464 of file bedjet_hub.cpp.

◆ set_fan_index()

bool esphome::bedjet::BedJetHub::set_fan_index ( uint8_t  fan_speed_index)

Set the fan speed to a stepped index in the range 0-19.

Definition at line 54 of file bedjet_hub.cpp.

◆ set_fan_speed()

bool esphome::bedjet::BedJetHub::set_fan_speed ( uint8_t  fan_speed_pct)
inline

Set the fan speed to a percent in the range 5% - 100%, at 5% increments.

Definition at line 71 of file bedjet_hub.h.

◆ set_name_()

void esphome::bedjet::BedJetHub::set_name_ ( const std::string &  name)
inlineprotected

Definition at line 153 of file bedjet_hub.h.

◆ set_notify_()

uint8_t esphome::bedjet::BedJetHub::set_notify_ ( bool  enable)
protected

Configures the local ESP BLE client to register (true) or unregister (false) for status notifications.

Definition at line 138 of file bedjet_hub.cpp.

◆ set_status_timeout()

void esphome::bedjet::BedJetHub::set_status_timeout ( uint32_t  timeout)
inline

Set the status timeout.

This is the max time to wait for a status update before the connection is presumed unusable.

Definition at line 101 of file bedjet_hub.h.

◆ set_target_temp()

bool esphome::bedjet::BedJetHub::set_target_temp ( float  temp_c)

Set the target temperature to temp_c in °C.

Definition at line 77 of file bedjet_hub.cpp.

◆ set_time_id()

void esphome::bedjet::BedJetHub::set_time_id ( time::RealTimeClock time_id)
inline

Set the time::RealTimeClock implementation.

Definition at line 105 of file bedjet_hub.h.

◆ set_time_remaining()

bool esphome::bedjet::BedJetHub::set_time_remaining ( uint8_t  hours,
uint8_t  mins 
)

Set the operational runtime remaining.

The unit establishes and enforces runtime limits for some modes, so this call is not guaranteed to succeed.

Definition at line 87 of file bedjet_hub.cpp.

◆ setup()

void esphome::bedjet::BedJetHub::setup ( )
inlineoverridevirtual

Reimplemented from esphome::Component.

Definition at line 117 of file bedjet_hub.h.

◆ setup_time_()

void esphome::bedjet::BedJetHub::setup_time_ ( )
protected

Initializes time sync callbacks to support syncing current time to the BedJet.

Definition at line 453 of file bedjet_hub.cpp.

◆ status_packet_ready_()

void esphome::bedjet::BedJetHub::status_packet_ready_ ( )
inlineprotected

Definition at line 398 of file bedjet_hub.cpp.

◆ update()

void esphome::bedjet::BedJetHub::update ( )
overridevirtual

Implements esphome::PollingComponent.

Definition at line 482 of file bedjet_hub.cpp.

◆ upgrade_firmware()

void esphome::bedjet::BedJetHub::upgrade_firmware ( )

Attempts to check for and apply firmware updates.

Definition at line 35 of file bedjet_hub.cpp.

◆ write_bedjet_packet_()

uint8_t esphome::bedjet::BedJetHub::write_bedjet_packet_ ( BedjetPacket pkt)
protected

Send the BedjetPacket to the device.

Definition at line 122 of file bedjet_hub.cpp.

◆ write_notify_config_descriptor_()

uint8_t esphome::bedjet::BedJetHub::write_notify_config_descriptor_ ( bool  enable)
protected

Reimplementation of BLEClient.gattc_event_handler() for ESP_GATTC_REG_FOR_NOTIFY_EVT.

This is a copy of ble_client's automatic handling of ESP_GATTC_REG_FOR_NOTIFY_EVT, in order to undo the same on unregister. It also allows us to maintain the config descriptor separately, since the parent BLEClient is going to purge all descriptors once we set our connection status to Established.

Definition at line 416 of file bedjet_hub.cpp.

Field Documentation

◆ char_handle_cmd_

uint16_t esphome::bedjet::BedJetHub::char_handle_cmd_
protected

Definition at line 165 of file bedjet_hub.h.

◆ char_handle_name_

uint16_t esphome::bedjet::BedJetHub::char_handle_name_
protected

Definition at line 166 of file bedjet_hub.h.

◆ char_handle_status_

uint16_t esphome::bedjet::BedJetHub::char_handle_status_
protected

Definition at line 167 of file bedjet_hub.h.

◆ children_

std::vector<BedJetClient *> esphome::bedjet::BedJetHub::children_
protected

Definition at line 135 of file bedjet_hub.h.

◆ codec_

std::unique_ptr<BedjetCodec> esphome::bedjet::BedJetHub::codec_
protected

Definition at line 162 of file bedjet_hub.h.

◆ config_descr_status_

uint16_t esphome::bedjet::BedJetHub::config_descr_status_
protected

Definition at line 168 of file bedjet_hub.h.

◆ DEFAULT_STATUS_TIMEOUT

const uint32_t esphome::bedjet::BedJetHub::DEFAULT_STATUS_TIMEOUT = 900000
staticprotected

Definition at line 148 of file bedjet_hub.h.

◆ force_refresh_

bool esphome::bedjet::BedJetHub::force_refresh_ = false
protected

Definition at line 159 of file bedjet_hub.h.

◆ last_notify_

uint32_t esphome::bedjet::BedJetHub::last_notify_ = 0
protected

Definition at line 157 of file bedjet_hub.h.

◆ MIN_NOTIFY_THROTTLE

const uint32_t esphome::bedjet::BedJetHub::MIN_NOTIFY_THROTTLE = 15000
staticprotected

Definition at line 146 of file bedjet_hub.h.

◆ name_

std::string esphome::bedjet::BedJetHub::name_
protected

Definition at line 155 of file bedjet_hub.h.

◆ NOTIFY_WARN_THRESHOLD

const uint32_t esphome::bedjet::BedJetHub::NOTIFY_WARN_THRESHOLD = 300000
staticprotected

Definition at line 147 of file bedjet_hub.h.

◆ processing_

bool esphome::bedjet::BedJetHub::processing_ = false
protected

Definition at line 160 of file bedjet_hub.h.

◆ time_id_

optional<time::RealTimeClock *> esphome::bedjet::BedJetHub::time_id_ {}
protected

Definition at line 142 of file bedjet_hub.h.

◆ timeout_

uint32_t esphome::bedjet::BedJetHub::timeout_ {DEFAULT_STATUS_TIMEOUT}
protected

Definition at line 145 of file bedjet_hub.h.


The documentation for this class was generated from the following files: