|
| Dsmr (uart::UARTComponent *uart, bool crc_check) |
|
void | setup () override |
|
void | loop () override |
|
bool | parse_telegram () |
|
void | publish_sensors (MyData &data) |
|
void | dump_config () override |
|
void | set_decryption_key (const std::string &decryption_key) |
|
void | set_max_telegram_length (size_t length) |
|
void | set_request_pin (GPIOPin *request_pin) |
|
void | set_request_interval (uint32_t interval) |
|
void | set_receive_timeout (uint32_t timeout) |
|
| DSMR_SENSOR_LIST (DSMR_SET_SENSOR,) DSMR_TEXT_SENSOR_LIST(DSMR_SET_TEXT_SENSOR |
|
void | set_telegram (text_sensor::TextSensor *sensor) |
|
virtual float | get_setup_priority () const |
| priority of setup(). More...
|
|
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 () const |
|
bool | is_ready () const |
|
virtual bool | can_proceed () |
|
bool | status_has_warning () const |
|
bool | status_has_error () const |
|
void | status_set_warning (const char *message="unspecified") |
|
void | status_set_error (const char *message="unspecified") |
|
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...
|
|
| UARTDevice ()=default |
|
| UARTDevice (UARTComponent *parent) |
|
void | set_uart_parent (UARTComponent *parent) |
|
void | write_byte (uint8_t data) |
|
void | write_array (const uint8_t *data, size_t len) |
|
void | write_array (const std::vector< uint8_t > &data) |
|
template<size_t N> |
void | write_array (const std::array< uint8_t, N > &data) |
|
void | write_str (const char *str) |
|
bool | read_byte (uint8_t *data) |
|
bool | peek_byte (uint8_t *data) |
|
bool | read_array (uint8_t *data, size_t len) |
|
template<size_t N> |
optional< std::array< uint8_t, N > > | read_array () |
|
int | available () |
|
void | flush () |
|
int | read () |
|
size_t | write (uint8_t data) |
|
int | peek () |
|
void | check_uart_settings (uint32_t baud_rate, uint8_t stop_bits=1, UARTParityOptions parity=UART_CONFIG_PARITY_NONE, uint8_t data_bits=8) |
| Check that the configuration of the UART bus matches the provided values and otherwise print a warning. More...
|
|
|
void | receive_telegram_ () |
|
void | receive_encrypted_telegram_ () |
|
void | reset_telegram_ () |
|
bool | available_within_timeout_ () |
| Wait for UART data to become available within the read timeout. More...
|
|
bool | request_interval_reached_ () |
|
bool | ready_to_request_data_ () |
|
void | start_requesting_data_ () |
|
void | stop_requesting_data_ () |
|
bool | receive_timeout_reached_ () |
|
| DSMR_SENSOR_LIST (DSMR_DECLARE_SENSOR,) DSMR_TEXT_SENSOR_LIST(DSMR_DECLARE_TEXT_SENSOR |
|
virtual void | call_loop () |
|
virtual void | call_setup () |
|
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(uint8_t)> &&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(uint8_t)> &&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...
|
|
Definition at line 50 of file dsmr.h.
bool esphome::dsmr::Dsmr::available_within_timeout_ |
( |
| ) |
|
|
protected |
Wait for UART data to become available within the read timeout.
The smart meter might provide data in chunks, causing available() to return 0. When we're already reading a telegram, then we don't return right away (to handle further data in an upcoming loop) but wait a little while using this method to see if more data are incoming. By not returning, we prevent other components from taking so much time that the UART RX buffer overflows and bytes of the telegram get lost in the process.
Definition at line 62 of file dsmr.cpp.