mirror of
https://github.com/esphome/esphome.git
synced 2025-04-18 16:50:28 +01:00
modbus_controller: remove hard coded register size (#2654)
This commit is contained in:
parent
875b803483
commit
662773b075
@ -260,35 +260,11 @@ struct SensorItem {
|
|||||||
virtual void parse_and_publish(const std::vector<uint8_t> &data) = 0;
|
virtual void parse_and_publish(const std::vector<uint8_t> &data) = 0;
|
||||||
|
|
||||||
uint64_t getkey() const { return calc_key(register_type, start_address, offset, bitmask); }
|
uint64_t getkey() const { return calc_key(register_type, start_address, offset, bitmask); }
|
||||||
|
|
||||||
size_t virtual get_register_size() const {
|
size_t virtual get_register_size() const {
|
||||||
size_t size = 0;
|
if (register_type == ModbusRegisterType::COIL || register_type == ModbusRegisterType::DISCRETE_INPUT)
|
||||||
switch (sensor_value_type) {
|
return 1;
|
||||||
case SensorValueType::BIT:
|
else
|
||||||
size = 1;
|
return register_count * 2;
|
||||||
break;
|
|
||||||
case SensorValueType::U_WORD:
|
|
||||||
case SensorValueType::S_WORD:
|
|
||||||
size = 2;
|
|
||||||
break;
|
|
||||||
case SensorValueType::U_DWORD:
|
|
||||||
case SensorValueType::S_DWORD:
|
|
||||||
case SensorValueType::U_DWORD_R:
|
|
||||||
case SensorValueType::S_DWORD_R:
|
|
||||||
case SensorValueType::FP32:
|
|
||||||
case SensorValueType::FP32_R:
|
|
||||||
size = 4;
|
|
||||||
break;
|
|
||||||
case SensorValueType::U_QWORD:
|
|
||||||
case SensorValueType::U_QWORD_R:
|
|
||||||
case SensorValueType::S_QWORD:
|
|
||||||
case SensorValueType::S_QWORD_R:
|
|
||||||
size = 8;
|
|
||||||
break;
|
|
||||||
case SensorValueType::RAW:
|
|
||||||
size = this->register_count * 2;
|
|
||||||
}
|
|
||||||
return size;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -25,13 +25,6 @@ class ModbusTextSensor : public Component, public text_sensor::TextSensor, publi
|
|||||||
this->sensor_value_type = SensorValueType::RAW;
|
this->sensor_value_type = SensorValueType::RAW;
|
||||||
this->force_new_range = force_new_range;
|
this->force_new_range = force_new_range;
|
||||||
}
|
}
|
||||||
size_t get_register_size() const override {
|
|
||||||
if (sensor_value_type == SensorValueType::RAW) {
|
|
||||||
return this->response_bytes_;
|
|
||||||
} else {
|
|
||||||
return SensorItem::get_register_size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void dump_config() override;
|
void dump_config() override;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user