ESPHome  2021.11.3
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::demo::DemoSwitch 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::template_::TemplateSwitch 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 ()
virtual bool assumed_state ()
 Return whether this switch uses an assumed state - i.e. More...
bool is_inverted () const
- 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...

Protected Member Functions

virtual void write_state (bool state)=0
 Write the given state to hardware. More...
uint32_t hash_base () override
- Protected Member Functions inherited from esphome::EntityBase
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
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 30 of file switch.h.

Constructor & Destructor Documentation

◆ Switch() [1/2]

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

Definition at line 10 of file switch.cpp.

◆ Switch() [2/2]

esphome::switch_::Switch::Switch ( const std::string &  name)

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.

callbackThe void(bool) callback.

Definition at line 42 of file switch.cpp.

◆ assumed_state()

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

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 40 of file switch.cpp.

◆ get_initial_state()

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

Definition at line 24 of file switch.cpp.

◆ hash_base()

uint32_t esphome::switch_::Switch::hash_base ( )

Implements esphome::EntityBase.

Definition at line 46 of file switch.cpp.

◆ is_inverted()

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

Definition at line 47 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.

stateThe new state.

Definition at line 31 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.

invertedWhether to invert this switch.

Definition at line 45 of file switch.cpp.

◆ 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.

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

Implemented in esphome::gpio::GPIOSwitch, esphome::nextion::NextionSwitch, esphome::template_::TemplateSwitch, esphome::modbus_controller::ModbusSwitch, esphome::ble_client::BLEClientSwitch, esphome::uart::UARTSwitch, esphome::output::OutputSwitch, esphome::tuya::TuyaSwitch, esphome::demo::DemoSwitch, esphome::pipsolar::PipsolarSwitch, esphome::safe_mode::SafeModeSwitch, esphome::restart::RestartSwitch, and esphome::shutdown::ShutdownSwitch.

Field Documentation

◆ inverted_

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

Definition at line 105 of file switch.h.

◆ publish_dedup_

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

Definition at line 106 of file switch.h.

◆ rtc_

ESPPreferenceObject esphome::switch_::Switch::rtc_

Definition at line 107 of file switch.h.

◆ state

bool esphome::switch_::Switch::state

The current reported state of the binary sensor.

Definition at line 45 of file switch.h.

◆ state_callback_

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

Definition at line 104 of file switch.h.

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