|
ESPHome 2025.12.0-dev
|
Base class for all switches. More...
#include <switch.h>
Public Member Functions | |
| Switch () | |
| void | publish_state (bool state) |
| Publish a state to the front-end from the back-end. | |
| void | control (bool target_state) |
| Control this switch using a boolean state value. | |
| void | turn_on () |
| Turn this switch on. | |
| void | turn_off () |
| Turn this switch off. | |
| void | toggle () |
| Toggle this switch. | |
| void | set_inverted (bool inverted) |
| Set whether the state should be treated as inverted. | |
| void | add_on_state_callback (std::function< void(bool)> &&callback) |
| Set callback for state changes. | |
| optional< bool > | get_initial_state () |
| Returns the initial state of the switch, as persisted previously, or empty if never persisted. | |
| optional< bool > | get_initial_state_with_restore_mode () |
| Returns the initial state of the switch, after applying restore mode rules. | |
| virtual bool | assumed_state () |
| Return whether this switch uses an assumed state - i.e. | |
| bool | is_inverted () const |
| void | set_restore_mode (SwitchRestoreMode restore_mode) |
Public Member Functions inherited from esphome::EntityBase | |
| const StringRef & | get_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) |
| ESPDEPRECATED("Use get_icon_ref() instead for better performance (avoids string copy). Will be removed in ESPHome 2026.5.0", "2025.11.0") std void | set_icon (const char *icon) |
| StringRef | get_icon_ref () const |
| uint32_t | get_device_id () const |
| void | set_device (Device *device) |
| bool | has_state () const |
| void | set_has_state (bool state) |
| uint32_t | get_preference_hash () |
| Get a unique hash for storing preferences/settings for this entity. | |
Public Member Functions inherited from esphome::EntityBase_DeviceClass | |
| ESPDEPRECATED("Use get_device_class_ref() instead for better performance (avoids string copy). Will be removed in " "ESPHome 2026.5.0", "2025.11.0") std void | set_device_class (const char *device_class) |
| Get the device class, using the manual override if set. | |
| StringRef | get_device_class_ref () const |
| Get the device class as StringRef. | |
Data Fields | |
| SwitchRestoreMode | restore_mode {SWITCH_RESTORE_DEFAULT_OFF} |
| Indicates whether or not state is to be retrieved from flash and how. | |
| bool | state |
| The current reported state of the binary sensor. | |
Protected Member Functions | |
| virtual void | write_state (bool state)=0 |
| Write the given state to hardware. | |
Protected Member Functions inherited from esphome::EntityBase | |
| StringRef | get_object_id_ref_for_api_ () const |
| void | calc_object_id_ () |
| bool | is_object_id_dynamic_ () const |
| Check if the object_id is dynamic (changes with MAC suffix) | |
Protected Attributes | |
| ESPPreferenceObject | rtc_ |
| CallbackManager< void(bool)> | state_callback_ {} |
| Deduplicator< bool > | publish_dedup_ |
| bool | inverted_ {false} |
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_ {} |
| Device * | device_ {} |
| struct esphome::EntityBase::EntityFlags | flags_ |
Protected Attributes inherited from esphome::EntityBase_DeviceClass | |
| const char * | device_class_ {nullptr} |
| Device class override. | |
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.
|
explicit |
Definition at line 11 of file switch.cpp.
| void esphome::switch_::Switch::add_on_state_callback | ( | std::function< void(bool)> && | callback | ) |
Set callback for state changes.
| callback | The void(bool) callback. |
Definition at line 73 of file switch.cpp.
|
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::modbus_controller::ModbusSwitch, and esphome::template_::TemplateSwitch.
Definition at line 71 of file switch.cpp.
| void esphome::switch_::Switch::control | ( | bool | target_state | ) |
Control this switch using a boolean state value.
This method provides a unified interface for setting the switch state based on a boolean parameter. It automatically calls turn_on() when state is true or turn_off() when state is false.
| target_state | The desired state: true to turn the switch ON, false to turn it OFF. |
Definition at line 13 of file switch.cpp.
| 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 33 of file switch.cpp.
| 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 43 of file switch.cpp.
| bool esphome::switch_::Switch::is_inverted | ( | ) | const |
Definition at line 77 of file switch.cpp.
| 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.
| state | The new state. |
Definition at line 57 of file switch.cpp.
| 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.
| inverted | Whether to invert this switch. |
Definition at line 76 of file switch.cpp.
|
inline |
| 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 29 of file switch.cpp.
| 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 25 of file switch.cpp.
| 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 21 of file switch.cpp.
|
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.
| state | The state to write. Inversion is already applied if user specified it. |
Implemented in esphome::at581x::RFSwitch, esphome::ble_client::BLEClientSwitch, esphome::copy::CopySwitch, esphome::demo::DemoSwitch, esphome::dfrobot_sen0395::Sen0395LedSwitch, esphome::dfrobot_sen0395::Sen0395PowerSwitch, esphome::dfrobot_sen0395::Sen0395StartAfterBootSwitch, esphome::dfrobot_sen0395::Sen0395UartPresenceSwitch, esphome::factory_reset::FactoryResetSwitch, esphome::gpio::GPIOSwitch, esphome::haier::BeeperSwitch, esphome::haier::DisplaySwitch, esphome::haier::HealthModeSwitch, esphome::haier::QuietModeSwitch, esphome::hbridge::HBridgeSwitch, esphome::homeassistant::HomeassistantSwitch, esphome::ld2410::BluetoothSwitch, esphome::ld2410::EngineeringModeSwitch, esphome::ld2412::BluetoothSwitch, esphome::ld2412::EngineeringModeSwitch, esphome::ld2450::BluetoothSwitch, esphome::ld2450::MultiTargetSwitch, esphome::lvgl::LVGLSwitch, esphome::micronova::MicroNovaSwitch, esphome::modbus_controller::ModbusSwitch, esphome::nextion::NextionSwitch, esphome::opentherm::OpenthermSwitch, 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, and esphome::uart::UARTSwitch.
|
protected |
| SwitchRestoreMode esphome::switch_::Switch::restore_mode {SWITCH_RESTORE_DEFAULT_OFF} |
|
protected |
| bool esphome::switch_::Switch::state |
|
protected |