ESPHome  2023.3.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::ble_client::BLEClientSwitch esphome::copy::CopySwitch esphome::demo::DemoSwitch esphome::factory_reset::FactoryResetSwitch esphome::gpio::GPIOSwitch esphome::modbus_controller::ModbusSwitch esphome::nextion::NextionSwitch esphome::output::OutputSwitch esphome::pipsolar::PipsolarSwitch esphome::restart::RestartSwitch esphome::safe_mode::SafeModeSwitch esphome::shutdown::ShutdownSwitch esphome::sprinkler::SprinklerControllerSwitch esphome::template_::TemplateSwitch esphome::tm1638::TM1638SwitchLed esphome::tuya::TuyaSwitch esphome::uart::UARTSwitch

Public Member Functions

 Switch ()
 
 Switch (const std::string &name)
 
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
 
std::string get_device_class ()
 Get the device class for this switch. More...
 
void set_device_class (const std::string &device_class)
 Set the Home Assistant device class for this switch. More...
 
void set_restore_mode (SwitchRestoreMode restore_mode)
 
- Public Member Functions inherited from esphome::EntityBase
 EntityBase ()
 
 EntityBase (std::string name)
 
const std::string & get_name () const
 
void set_name (const std::string &name)
 
const std::string & get_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)
 
const std::string & get_icon () const
 
void set_icon (const std::string &name)
 

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_
 
optional< std::string > device_class_
 
- Protected Attributes inherited from esphome::EntityBase
std::string name_
 
std::string object_id_
 
std::string icon_
 
uint32_t object_id_hash_
 
bool internal_ {false}
 
bool disabled_by_default_ {false}
 
EntityCategory entity_category_ {ENTITY_CATEGORY_NONE}
 

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 32 of file switch.h.

Constructor & Destructor Documentation

◆ Switch() [1/2]

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

Definition at line 10 of file switch.cpp.

◆ Switch() [2/2]

esphome::switch_::Switch::Switch ( const std::string &  name)
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 61 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 59 of file switch.cpp.

◆ get_device_class()

std::string esphome::switch_::Switch::get_device_class ( )

Get the device class for this switch.

Definition at line 67 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 24 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 34 of file switch.cpp.

◆ is_inverted()

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

Definition at line 65 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 48 of file switch.cpp.

◆ set_device_class()

void esphome::switch_::Switch::set_device_class ( const std::string &  device_class)

Set the Home Assistant device class for this switch.

Definition at line 72 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 64 of file switch.cpp.

◆ set_restore_mode()

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

Definition at line 111 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 20 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 16 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 12 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::modbus_controller::ModbusSwitch, esphome::template_::TemplateSwitch, esphome::gpio::GPIOSwitch, esphome::ble_client::BLEClientSwitch, esphome::uart::UARTSwitch, esphome::output::OutputSwitch, esphome::tuya::TuyaSwitch, esphome::demo::DemoSwitch, esphome::pipsolar::PipsolarSwitch, esphome::tm1638::TM1638SwitchLed, esphome::copy::CopySwitch, esphome::safe_mode::SafeModeSwitch, esphome::factory_reset::FactoryResetSwitch, esphome::restart::RestartSwitch, and esphome::shutdown::ShutdownSwitch.

Field Documentation

◆ device_class_

optional<std::string> esphome::switch_::Switch::device_class_
protected

Definition at line 128 of file switch.h.

◆ inverted_

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

Definition at line 125 of file switch.h.

◆ publish_dedup_

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

Definition at line 126 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 50 of file switch.h.

◆ rtc_

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

Definition at line 127 of file switch.h.

◆ state

bool esphome::switch_::Switch::state

The current reported state of the binary sensor.

Definition at line 47 of file switch.h.

◆ state_callback_

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

Definition at line 124 of file switch.h.


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