7namespace modbus_controller {
9static const char *
const TAG =
"modbus.number";
12static constexpr size_t MODBUS_NUMBER_MAX_LOG_REGISTERS = 32;
22 if (
val.has_value()) {
23 ESP_LOGV(TAG,
"Value overwritten by lambda");
27 ESP_LOGD(TAG,
"Number new state : %.02f", result);
34 std::vector<uint16_t> data;
35 float write_value = value;
42 if (
val.has_value()) {
43 ESP_LOGV(TAG,
"Value overwritten by lambda");
44 write_value =
val.value();
46 ESP_LOGV(TAG,
"Communication handled by lambda - exiting control");
54#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE
57 ESP_LOGV(TAG,
"Modbus Number write raw: %s",
68 "Updating register: connected Sensor=%s start address=0x%X register count=%d new value=%.02f (val=%.02f)",
82 const std::vector<uint8_t> &data) {
const StringRef & get_name() const
static ModbusCommandItem create_custom_command(ModbusController *modbusdevice, const std::vector< uint8_t > &values, std::function< void(ModbusRegisterType register_type, uint16_t start_address, const std::vector< uint8_t > &data)> &&handler=nullptr)
Create custom modbus command.
static ModbusCommandItem create_write_single_command(ModbusController *modbusdevice, uint16_t start_address, uint16_t value)
Create modbus write multiple registers command Function 16 (10hex) Write Multiple Registers.
ModbusRegisterType register_type
static ModbusCommandItem create_write_multiple_command(ModbusController *modbusdevice, uint16_t start_address, uint16_t register_count, const std::vector< uint16_t > &values)
Create modbus read command Function code 02-04.
std::function< void(ModbusRegisterType register_type, uint16_t start_address, const std::vector< uint8_t > &data)> on_data_func
void on_write_register_response(ModbusRegisterType register_type, uint16_t start_address, const std::vector< uint8_t > &data)
default delegate called by process_modbus_data when a response for a write response has retrieved fro...
void queue_command(const ModbusCommandItem &command)
queues a modbus command in the send queue
void control(float value) override
optional< write_transform_func_t > write_transform_func_
optional< transform_func_t > transform_func_
ModbusController * parent_
void parse_and_publish(const std::vector< uint8_t > &data) override
void dump_config() override
ModbusRegisterType register_type
SensorValueType sensor_value_type
void publish_state(float state)
float payload_to_float(const std::vector< uint8_t > &data, const SensorItem &item)
Convert vector<uint8_t> response payload to float.
std::vector< uint16_t > float_to_payload(float value, SensorValueType value_type)
Providing packet encoding functions for exchanging data with a remote host.
char * format_hex_pretty_to(char *buffer, size_t buffer_size, const uint8_t *data, size_t length, char separator)
Format byte array as uppercase hex to buffer (base implementation).
constexpr size_t format_hex_pretty_uint16_size(size_t count)
Calculate buffer size needed for format_hex_pretty_to with uint16_t data: "XXXX:XXXX:....