ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
modbus_select.h
Go to the documentation of this file.
1#pragma once
2
3#include <utility>
4#include <vector>
5
9
11
12class ModbusSelect : public Component, public select::Select, public SensorItem {
13 public:
15 bool force_new_range, std::vector<int64_t> mapping) {
16 this->register_type = ModbusRegisterType::HOLDING; // not configurable
17 this->sensor_value_type = sensor_value_type;
18 this->start_address = start_address;
19 this->offset = 0; // not configurable
20 this->bitmask = 0xFFFFFFFF; // not configurable
21 this->register_count = register_count;
22 this->response_bytes = 0; // not configurable
23 this->skip_updates = skip_updates;
24 this->force_new_range = force_new_range;
25 this->mapping_ = std::move(mapping);
26 }
27
28 using transform_func_t = optional<std::string> (*)(ModbusSelect *const, int64_t, const std::vector<uint8_t> &);
29 using write_transform_func_t = optional<int64_t> (*)(ModbusSelect *const, const std::string &, int64_t,
30 std::vector<uint16_t> &);
31
32 void set_parent(ModbusController *const parent) { this->parent_ = parent; }
33 void set_use_write_mutiple(bool use_write_multiple) { this->use_write_multiple_ = use_write_multiple; }
34 void set_optimistic(bool optimistic) { this->optimistic_ = optimistic; }
37
38 void dump_config() override;
39 void parse_and_publish(const std::vector<uint8_t> &data) override;
40 void control(size_t index) override;
41
42 protected:
43 std::vector<int64_t> mapping_{};
46 bool optimistic_{false};
47 optional<transform_func_t> transform_func_{nullopt};
48 optional<write_transform_func_t> write_transform_func_{nullopt};
49};
50
51} // namespace esphome::modbus_controller
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> && f
Definition component.h:437
optional< write_transform_func_t > write_transform_func_
void parse_and_publish(const std::vector< uint8_t > &data) override
optional< std::string >(*)(ModbusSelect *const, int64_t, const std::vector< uint8_t > &) transform_func_t
void control(size_t index) override
void set_use_write_mutiple(bool use_write_multiple)
void set_template(transform_func_t f)
optional< transform_func_t > transform_func_
void set_write_template(write_transform_func_t f)
void set_parent(ModbusController *const parent)
ModbusSelect(SensorValueType sensor_value_type, uint16_t start_address, uint8_t register_count, uint16_t skip_updates, bool force_new_range, std::vector< int64_t > mapping)
optional< int64_t >(*)(ModbusSelect *const, const std::string &, int64_t, std::vector< uint16_t > &) write_transform_func_t
Base-class for all selects.
Definition select.h:29
const std::vector< uint8_t > & data