|
ESPHome 2026.8.0b4
|
modbus_client.send: fire a raw PDU (function code + data; the hub adds address and CRC). More...
#include <modbus_client.h>
Public Member Functions | |
| TEMPLATABLE_VALUE (modbus::helpers::PduBuffer, pdu) Trigger< std | |
| void | play (const Ts &...x) override |
| void | on_response (std::span< const uint8_t > request_pdu, std::span< const uint8_t > response_pdu) override |
Public Member Functions inherited from esphome::modbus_client::ClientActionBase< Ts... > | |
| TEMPLATABLE_VALUE (uint8_t, target_address) Trigger< std | |
| Trigger< std::span< const uint8_t >, modbus::ExceptionCode > * | get_error_trigger () |
| Trigger< std::span< const uint8_t > > * | get_no_response_trigger () |
| Trigger< std::span< const uint8_t > > * | get_not_sent_trigger () |
| void | set_retry (retry_func_t f) |
| void | on_sent (std::span< const uint8_t > request_pdu) override |
| The frame was written to the wire: fires once per transmission, before any reply, and never for a send that ended in on_not_sent. | |
| void | on_not_sent (std::span< const uint8_t > request_pdu) override |
| Never reached the wire, from either of two sources. | |
| void | on_error (std::span< const uint8_t > request_pdu, modbus::ExceptionCode exception_code) override |
| A Modbus exception reply. | |
| bool | on_no_response (std::span< const uint8_t > request_pdu) override |
| No reply within send_wait_time. | |
| void | play_complex (const Ts &...x) override |
| Stamp the templated device address before every play(): subclasses cannot forget it, and the hub routes each reply by device pointer, so a changed address never mis-routes earlier replies. | |
Public Member Functions inherited from esphome::Action< Ts... > | |
| virtual void | stop_complex () |
| virtual bool | is_running () |
| Check if this or any of the following actions are currently running. | |
| int | num_running_total () |
| The total number of actions that are currently running in this plus any of the following actions in the chain. | |
Public Member Functions inherited from esphome::modbus::ModbusClientDevice | |
| ModbusClientDevice ()=default | |
| ModbusClientDevice (ModbusClientHub *parent, uint8_t address) | |
| virtual | ~ModbusClientDevice () |
| ModbusClientDevice (const ModbusClientDevice &)=delete | |
| ModbusClientDevice & | operator= (const ModbusClientDevice &)=delete |
| ModbusClientDevice (ModbusClientDevice &&)=delete | |
| ModbusClientDevice & | operator= (ModbusClientDevice &&)=delete |
| void | set_parent (ModbusClientHub *parent) |
| void | set_address (uint8_t address) |
| ESPDEPRECATED ("Override on_not_sent() instead. Removed in 2027.2.0", "2026.8.0") virtual void on_modbus_not_sent() | |
| ESPDEPRECATED ("Override on_no_response() instead. Removed in 2027.2.0", "2026.8.0") virtual bool on_modbus_no_response() | |
| virtual void | on_read_registers (EntityType entity_type, uint16_t start_address, std::span< const uint16_t > registers, ResponseStatus status) |
| High-level typed response callbacks, fired by the default on_response()/on_error() with arguments parsed from the request and response PDUs. | |
| virtual void | on_read_holding_registers (uint16_t start_address, std::span< const uint16_t > registers, ResponseStatus status) |
| virtual void | on_read_input_registers (uint16_t start_address, std::span< const uint16_t > registers, ResponseStatus status) |
| virtual void | on_read_bits (EntityType entity_type, uint16_t start_address, PackedBits bits, ResponseStatus status) |
| Coil/discrete-input reads are delivered as a PackedBits view (bit 0 = the bit at start_address, bits.size() = the count requested). | |
| virtual void | on_read_coils (uint16_t start_address, PackedBits bits, ResponseStatus status) |
| virtual void | on_read_discrete_inputs (uint16_t start_address, PackedBits bits, ResponseStatus status) |
| virtual void | on_write_single_register (uint16_t address, uint16_t value, ResponseStatus status) |
| Write acknowledgements. | |
| virtual void | on_write_single_coil (uint16_t address, bool value, ResponseStatus status) |
| virtual void | on_write_multiple_registers (uint16_t start_address, std::span< const uint16_t > registers, ResponseStatus status) |
| virtual void | on_write_multiple_coils (uint16_t start_address, PackedBits bits, ResponseStatus status) |
| virtual void | on_custom_response (std::span< const uint8_t > request_pdu, std::span< const uint8_t > response_pdu, ResponseStatus status) |
| Catch-all for custom function codes and anything that is not a standard-conformant transaction (see dispatch_response_()); on failure the response is empty and the exception code is in status. | |
| ESPDEPRECATED ("Use the typed read_*/write_* helpers or queue_pdu() instead. Removed in 2027.2.0", "2026.8.0") void send(uint8_t function | |
Protected Attributes | |
| Trigger< std::span< const uint8_t >, std::span< const uint8_t > > | response_trigger_ |
Protected Attributes inherited from esphome::modbus_client::ClientActionBase< Ts... > | |
| Trigger< std::span< const uint8_t > > | sent_trigger_ |
| Trigger< std::span< const uint8_t >, modbus::ExceptionCode > | error_trigger_ |
| Trigger< std::span< const uint8_t > > | no_response_trigger_ |
| Trigger< std::span< const uint8_t > > | not_sent_trigger_ |
| retry_func_t | retry_func_ |
Protected Attributes inherited from esphome::Action< Ts... > | |
| friend | ActionList< Ts... > |
| Action< Ts... > * | next_ |
| int | num_running_ |
| The number of instances of this sequence in the list of actions that is currently being executed. | |
Additional Inherited Members | |
Public Types inherited from esphome::modbus_client::ClientActionBase< Ts... > | |
| using | retry_func_t |
| The retry decision for on_no_response: given the request PDU, return true to have the hub re-queue the frame. | |
Data Fields inherited from esphome::modbus::ModbusClientDevice | |
| uint16_t | start_address |
| uint16_t uint16_t | number_of_entities |
| uint16_t uint16_t uint8_t | payload_len = 0 |
| uint16_t uint16_t uint8_t const uint8_t * | payload |
| ModbusClientHub * | parent_ {nullptr} |
| uint8_t | address_ {0} |
| bool | custom_response_warned_ {false} |
Protected Member Functions inherited from esphome::modbus_client::ClientActionBase< Ts... > | |
| void | send_or_resolve_ (std::span< const uint8_t > pdu) |
| The hub refuses some sends at the door with no callback (a duplicate write already pending, a full queue, or an empty PDU - which is how the create_*_pdu() builders reject out-of-spec input). | |
Protected Member Functions inherited from esphome::Action< Ts... > | |
| void | play_next_ (const Ts &...x) |
| void | play_next_tuple_ (const std::tuple< Ts... > &tuple, std::index_sequence< S... >) |
| void | play_next_tuple_ (const std::tuple< Ts... > &tuple) |
| virtual void | stop () |
| void | stop_next_ () |
| bool | is_running_next_ () |
modbus_client.send: fire a raw PDU (function code + data; the hub adds address and CRC).
The reply is delivered raw - on_response(request, response) - deliberately bypassing the typed dispatch, so non-standard/custom transactions pass through untouched. The PDU is a stack-allocated modbus::helpers::PduBuffer, so a pdu lambda can build one with the modbus::helpers::create_*_pdu() builders and return it directly (smaller builder results convert). A PduBuffer drops bytes past modbus::MAX_PDU_SIZE without reporting it (the hub's oversize check cannot fire - that limit is the capacity), so an over-long lambda-built PDU is silently truncated.
Definition at line 90 of file modbus_client.h.
|
inlineoverridevirtual |
Reimplemented from esphome::modbus::ModbusClientDevice.
Definition at line 100 of file modbus_client.h.
|
inlineoverridevirtual |
Implements esphome::Action< Ts... >.
Definition at line 98 of file modbus_client.h.
|
inline |
Definition at line 92 of file modbus_client.h.
|
protected |
Definition at line 105 of file modbus_client.h.