|
ESPHome 2026.4.0-dev
|
Enumerations | |
| enum class | SensorValueType : uint8_t { RAW = 0x00 , U_WORD = 0x1 , U_DWORD = 0x2 , S_WORD = 0x3 , S_DWORD = 0x4 , BIT = 0x5 , U_DWORD_R = 0x6 , S_DWORD_R = 0x7 , U_QWORD = 0x8 , S_QWORD = 0x9 , U_QWORD_R = 0xA , S_QWORD_R = 0xB , FP32 = 0xC , FP32_R = 0xD } |
Functions | |
| void | number_to_payload (std::vector< uint16_t > &data, int64_t value, SensorValueType value_type) |
| Convert float value to vector<uint16_t> suitable for sending. | |
| int64_t | payload_to_number (const std::vector< uint8_t > &data, SensorValueType sensor_value_type, uint8_t offset, uint32_t bitmask) |
| Convert vector<uint8_t> response payload to number. | |
| bool | value_type_is_float (SensorValueType v) |
| ModbusFunctionCode | modbus_register_read_function (ModbusRegisterType reg_type) |
| ModbusFunctionCode | modbus_register_write_function (ModbusRegisterType reg_type) |
| uint8_t | c_to_hex (char c) |
| uint8_t | byte_from_hex_str (const std::string &value, uint8_t pos) |
| Get a byte from a hex string byte_from_hex_str("1122", 1) returns uint_8 value 0x22 == 34 byte_from_hex_str("1122", 0) returns 0x11. | |
| uint16_t | word_from_hex_str (const std::string &value, uint8_t pos) |
| Get a word from a hex string. | |
| uint32_t | dword_from_hex_str (const std::string &value, uint8_t pos) |
| Get a dword from a hex string. | |
| uint64_t | qword_from_hex_str (const std::string &value, uint8_t pos) |
| Get a qword from a hex string. | |
| template<typename T > | |
| T | get_data (const std::vector< uint8_t > &data, size_t buffer_offset) |
| Extract data from modbus response buffer. | |
| bool | coil_from_vector (int coil, const std::vector< uint8_t > &data) |
| Extract coil data from modbus response buffer Responses for coil are packed into bytes . | |
| template<typename N > | |
| N | mask_and_shift_by_rightbit (N data, uint32_t mask) |
| Extract bits from value and shift right according to the bitmask if the bitmask is 0x00F0 we want the values frrom bit 5 - 8. | |
| std::vector< uint16_t > | float_to_payload (float value, SensorValueType value_type) |
|
strong |
| Enumerator | |
|---|---|
| RAW | |
| U_WORD | |
| U_DWORD | |
| S_WORD | |
| S_DWORD | |
| BIT | |
| U_DWORD_R | |
| S_DWORD_R | |
| U_QWORD | |
| S_QWORD | |
| U_QWORD_R | |
| S_QWORD_R | |
| FP32 | |
| FP32_R | |
Definition at line 12 of file modbus_helpers.h.
|
inline |
Get a byte from a hex string byte_from_hex_str("1122", 1) returns uint_8 value 0x22 == 34 byte_from_hex_str("1122", 0) returns 0x11.
| value | string containing hex encoding |
| position | offset in bytes. Because each byte is encoded in 2 hex digits the position of the original byte in the hex string is byte_pos * 2 |
Definition at line 72 of file modbus_helpers.h.
|
inline |
Definition at line 62 of file modbus_helpers.h.
|
inline |
Extract coil data from modbus response buffer Responses for coil are packed into bytes .
coil 3 is bit 3 of the first response byte coil 9 is bit 2 of the second response byte
| coil | number of the cil |
| data | modbus response buffer (uint8_t) |
Definition at line 148 of file modbus_helpers.h.
|
inline |
Get a dword from a hex string.
| value | string containing hex encoding |
| position | offset in bytes. Because each byte is encoded in 2 hex digits the position of the original byte in the hex string is byte_pos * 2 |
Definition at line 94 of file modbus_helpers.h.
|
inline |
Definition at line 193 of file modbus_helpers.h.
| T esphome::modbus::helpers::get_data | ( | const std::vector< uint8_t > & | data, |
| size_t | buffer_offset ) |
Extract data from modbus response buffer.
| T | one of supported integer data types int_8,int_16,int_32,int_64 |
| data | modbus response buffer (uint8_t) |
| buffer_offset | offset in bytes. |
Definition at line 115 of file modbus_helpers.h.
| N esphome::modbus::helpers::mask_and_shift_by_rightbit | ( | N | data, |
| uint32_t | mask ) |
Extract bits from value and shift right according to the bitmask if the bitmask is 0x00F0 we want the values frrom bit 5 - 8.
the result is then shifted right by the position if the first right set bit in the mask Useful for modbus data where more than one value is packed in a 16 bit register Example: on Epever the "Length of night" register 0x9065 encodes values of the whole night length of time as D15 - D8 = hour, D7 - D0 = minute To get the hours use mask 0xFF00 and 0x00FF for the minute
| data | an integral value between 16 aand 32 bits, |
| bitmask | the bitmask to apply |
Definition at line 163 of file modbus_helpers.h.
|
inline |
Definition at line 33 of file modbus_helpers.h.
|
inline |
Definition at line 48 of file modbus_helpers.h.
| void esphome::modbus::helpers::number_to_payload | ( | std::vector< uint16_t > & | data, |
| int64_t | value, | ||
| SensorValueType | value_type ) |
Convert float value to vector<uint16_t> suitable for sending.
| data | target for payload |
| value | float value to convert |
| value_type | defines if 16/32 or FP32 is used |
Definition at line 8 of file modbus_helpers.cpp.
| int64_t esphome::modbus::helpers::payload_to_number | ( | const std::vector< uint8_t > & | data, |
| SensorValueType | sensor_value_type, | ||
| uint8_t | offset, | ||
| uint32_t | bitmask ) |
Convert vector<uint8_t> response payload to number.
| data | payload with the data to convert |
| sensor_value_type | defines if 16/32/64 bits or FP32 is used |
| offset | offset to the data in data |
| bitmask | bitmask used for masking and shifting |
Definition at line 46 of file modbus_helpers.cpp.
|
inline |
Get a qword from a hex string.
| value | string containing hex encoding |
| position | offset in bytes. Because each byte is encoded in 2 hex digits the position of the original byte in the hex string is byte_pos * 2 |
Definition at line 104 of file modbus_helpers.h.
|
inline |
Definition at line 29 of file modbus_helpers.h.
|
inline |
Get a word from a hex string.
| value | string containing hex encoding |
| position | offset in bytes. Because each byte is encoded in 2 hex digits the position of the original byte in the hex string is byte_pos * 2 |
Definition at line 84 of file modbus_helpers.h.