ESPHome  2024.10.2
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
esphome::switch_::Switch Class Referenceabstract

Base class for all switches. More...

#include <switch.h>

Inheritance diagram for esphome::switch_::Switch:
esphome::EntityBase esphome::EntityBase_DeviceClass esphome::at581x::RFSwitch esphome::ble_client::BLEClientSwitch esphome::copy::CopySwitch esphome::demo::DemoSwitch esphome::dfrobot_sen0395::DfrobotSen0395Switch esphome::factory_reset::FactoryResetSwitch esphome::gpio::GPIOSwitch esphome::haier::BeeperSwitch esphome::haier::DisplaySwitch esphome::haier::HealthModeSwitch esphome::haier::QuietModeSwitch esphome::homeassistant::HomeassistantSwitch esphome::ld2410::BluetoothSwitch esphome::ld2410::EngineeringModeSwitch esphome::lvgl::LVGLSwitch esphome::micronova::MicroNovaSwitch esphome::modbus_controller::ModbusSwitch esphome::nextion::NextionSwitch esphome::output::OutputSwitch esphome::pipsolar::PipsolarSwitch esphome::restart::RestartSwitch esphome::safe_mode::SafeModeSwitch esphome::seeed_mr24hpc1::UnderlyOpenFunctionSwitch esphome::shutdown::ShutdownSwitch esphome::sprinkler::SprinklerControllerSwitch esphome::template_::TemplateSwitch esphome::tm1638::TM1638SwitchLed esphome::tuya::TuyaSwitch esphome::uart::UARTSwitch

Public Member Functions

 Switch ()
 
void publish_state (bool state)
 Publish a state to the front-end from the back-end. More...
 
void turn_on ()
 Turn this switch on. More...
 
void turn_off ()
 Turn this switch off. More...
 
void toggle ()
 Toggle this switch. More...
 
void set_inverted (bool inverted)
 Set whether the state should be treated as inverted. More...
 
void add_on_state_callback (std::function< void(bool)> &&callback)
 Set callback for state changes. More...
 
optional< bool > get_initial_state ()
 Returns the initial state of the switch, as persisted previously, or empty if never persisted. More...
 
optional< bool > get_initial_state_with_restore_mode ()
 Returns the initial state of the switch, after applying restore mode rules. More...
 
virtual bool assumed_state ()
 Return whether this switch uses an assumed state - i.e. More...
 
bool is_inverted () const
 
void set_restore_mode (SwitchRestoreMode restore_mode)
 
- Public Member Functions inherited from esphome::EntityBase
const StringRefget_name () const
 
void set_name (const char *name)
 
bool has_own_name () const
 
std::string get_object_id () const
 
void set_object_id (const char *object_id)
 
uint32_t get_object_id_hash ()
 
bool is_internal () const
 
void set_internal (bool internal)
 
bool is_disabled_by_default () const
 
void set_disabled_by_default (bool disabled_by_default)
 
EntityCategory get_entity_category () const
 
void set_entity_category (EntityCategory entity_category)
 
std::string get_icon () const
 
void set_icon (const char *icon)
 
- Public Member Functions inherited from esphome::EntityBase_DeviceClass
std::string get_device_class ()
 Get the device class, using the manual override if set. More...
 
void set_device_class (const char *device_class)
 Manually set the device class. More...
 

Data Fields

bool state
 The current reported state of the binary sensor. More...
 
SwitchRestoreMode restore_mode {SWITCH_RESTORE_DEFAULT_OFF}
 Indicates whether or not state is to be retrieved from flash and how. More...
 

Protected Member Functions

virtual void write_state (bool state)=0
 Write the given state to hardware. More...
 
- Protected Member Functions inherited from esphome::EntityBase
virtual uint32_t hash_base ()
 The hash_base() function has been deprecated. More...
 
void calc_object_id_ ()
 

Protected Attributes

CallbackManager< void(bool)> state_callback_ {}
 
bool inverted_ {false}
 
Deduplicator< bool > publish_dedup_
 
ESPPreferenceObject rtc_
 
- Protected Attributes inherited from esphome::EntityBase
StringRef name_
 
const char * object_id_c_str_ {nullptr}
 
const char * icon_c_str_ {nullptr}
 
uint32_t object_id_hash_
 
bool has_own_name_ {false}
 
bool internal_ {false}
 
bool disabled_by_default_ {false}
 
EntityCategory entity_category_ {ENTITY_CATEGORY_NONE}
 
- Protected Attributes inherited from esphome::EntityBase_DeviceClass
const char * device_class_ {nullptr}
 Device class override. More...
 

Detailed Description

Base class for all switches.

A switch is basically just a combination of a binary sensor (for reporting switch values) and a write_state method that writes a state to the hardware.

Definition at line 39 of file switch.h.

Constructor & Destructor Documentation

◆ Switch()

esphome::switch_::Switch::Switch ( )
explicit

Definition at line 9 of file switch.cpp.

Member Function Documentation

◆ add_on_state_callback()

void esphome::switch_::Switch::add_on_state_callback ( std::function< void(bool)> &&  callback)

Set callback for state changes.

Parameters
callbackThe void(bool) callback.

Definition at line 60 of file switch.cpp.

◆ assumed_state()

bool esphome::switch_::Switch::assumed_state ( )
virtual

Return whether this switch uses an assumed state - i.e.

if both the ON/OFF actions should be displayed in Home Assistant because the real state is unknown.

Defaults to false.

Reimplemented in esphome::template_::TemplateSwitch.

Definition at line 58 of file switch.cpp.

◆ get_initial_state()

optional< bool > esphome::switch_::Switch::get_initial_state ( )

Returns the initial state of the switch, as persisted previously, or empty if never persisted.

Definition at line 23 of file switch.cpp.

◆ get_initial_state_with_restore_mode()

optional< bool > esphome::switch_::Switch::get_initial_state_with_restore_mode ( )

Returns the initial state of the switch, after applying restore mode rules.

If restore mode is disabled, this function will return an optional with no value (.has_value() is false), leaving it up to the component to decide the state. For example, the component could read the state from hardware and determine the current state.

Definition at line 33 of file switch.cpp.

◆ is_inverted()

bool esphome::switch_::Switch::is_inverted ( ) const

Definition at line 64 of file switch.cpp.

◆ publish_state()

void esphome::switch_::Switch::publish_state ( bool  state)

Publish a state to the front-end from the back-end.

The input value is inverted if applicable. Then the internal value member is set and finally the callbacks are called.

Parameters
stateThe new state.

Definition at line 47 of file switch.cpp.

◆ set_inverted()

void esphome::switch_::Switch::set_inverted ( bool  inverted)

Set whether the state should be treated as inverted.

To the developer and user an inverted switch will act just like a non-inverted one. In particular, the only thing that's changed by this is the value passed to write_state and the state in publish_state. The .state member variable and turn_on/turn_off/toggle remain unaffected.

Parameters
invertedWhether to invert this switch.

Definition at line 63 of file switch.cpp.

◆ set_restore_mode()

void esphome::switch_::Switch::set_restore_mode ( SwitchRestoreMode  restore_mode)
inline

Definition at line 113 of file switch.h.

◆ toggle()

void esphome::switch_::Switch::toggle ( )

Toggle this switch.

This is called by the front-end.

For implementing switches, please override write_state.

Definition at line 19 of file switch.cpp.

◆ turn_off()

void esphome::switch_::Switch::turn_off ( )

Turn this switch off.

This is called by the front-end.

For implementing switches, please override write_state.

Definition at line 15 of file switch.cpp.

◆ turn_on()

void esphome::switch_::Switch::turn_on ( )

Turn this switch on.

This is called by the front-end.

For implementing switches, please override write_state.

Definition at line 11 of file switch.cpp.

◆ write_state()

virtual void esphome::switch_::Switch::write_state ( bool  state)
protectedpure virtual

Write the given state to hardware.

You should implement this abstract method if you want to create your own switch.

In the implementation of this method, you should also call publish_state to acknowledge that the state was written to the hardware.

Parameters
stateThe state to write. Inversion is already applied if user specified it.

Implemented in esphome::sprinkler::SprinklerControllerSwitch, esphome::nextion::NextionSwitch, esphome::dfrobot_sen0395::Sen0395StartAfterBootSwitch, esphome::modbus_controller::ModbusSwitch, esphome::template_::TemplateSwitch, esphome::gpio::GPIOSwitch, esphome::uart::UARTSwitch, esphome::ble_client::BLEClientSwitch, esphome::dfrobot_sen0395::Sen0395UartPresenceSwitch, esphome::micronova::MicroNovaSwitch, esphome::lvgl::LVGLSwitch, esphome::dfrobot_sen0395::Sen0395LedSwitch, esphome::output::OutputSwitch, esphome::tuya::TuyaSwitch, esphome::demo::DemoSwitch, esphome::pipsolar::PipsolarSwitch, esphome::tm1638::TM1638SwitchLed, esphome::copy::CopySwitch, esphome::homeassistant::HomeassistantSwitch, esphome::safe_mode::SafeModeSwitch, esphome::dfrobot_sen0395::Sen0395PowerSwitch, esphome::factory_reset::FactoryResetSwitch, esphome::haier::BeeperSwitch, esphome::haier::DisplaySwitch, esphome::haier::HealthModeSwitch, esphome::haier::QuietModeSwitch, esphome::ld2410::BluetoothSwitch, esphome::ld2410::EngineeringModeSwitch, esphome::restart::RestartSwitch, esphome::seeed_mr24hpc1::UnderlyOpenFunctionSwitch, esphome::shutdown::ShutdownSwitch, and esphome::at581x::RFSwitch.

Field Documentation

◆ inverted_

bool esphome::switch_::Switch::inverted_ {false}
protected

Definition at line 127 of file switch.h.

◆ publish_dedup_

Deduplicator<bool> esphome::switch_::Switch::publish_dedup_
protected

Definition at line 128 of file switch.h.

◆ restore_mode

SwitchRestoreMode esphome::switch_::Switch::restore_mode {SWITCH_RESTORE_DEFAULT_OFF}

Indicates whether or not state is to be retrieved from flash and how.

Definition at line 56 of file switch.h.

◆ rtc_

ESPPreferenceObject esphome::switch_::Switch::rtc_
protected

Definition at line 129 of file switch.h.

◆ state

bool esphome::switch_::Switch::state

The current reported state of the binary sensor.

Definition at line 53 of file switch.h.

◆ state_callback_

CallbackManager<void(bool)> esphome::switch_::Switch::state_callback_ {}
protected

Definition at line 126 of file switch.h.


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