add step variable for number fields

This commit is contained in:
John
2022-12-11 12:17:44 +01:00
parent a7de3175d8
commit c87202febe
4 changed files with 18 additions and 3 deletions
+1
View File
@@ -7,6 +7,7 @@
## Features ## Features
* add support for setting visual ping, IP gateway, MAC from ID, and variant to ebuspicloader * add support for setting visual ping, IP gateway, MAC from ID, and variant to ebuspicloader
* add step variable for numeric values to message definition in MQTT integration
# 22.4 (2022-09-18) # 22.4 (2022-09-18)
+3 -2
View File
@@ -56,7 +56,7 @@
# %basetype the base data type ID (e.g. "UCH"). # %basetype the base data type ID (e.g. "UCH").
# %comment the field comment (if any). # %comment the field comment (if any).
# %unit the field unit (if any). # %unit the field unit (if any).
# %min and %max the minimum/maximum possible value for number fields. # %min, %max, and %step the minimum/maximum possible value and step value for number fields.
# %topic the field (or message) update topic built from the mqtttopic configuration option and/or the %topic variable # %topic the field (or message) update topic built from the mqtttopic configuration option and/or the %topic variable
# defined here. # defined here.
@@ -239,7 +239,8 @@ type_part-by = %type_topic
type_part-number = , type_part-number = ,
"command_topic":"%topic/set", "command_topic":"%topic/set",
"min":%min, "min":%min,
"max":%max%unit_of_measurement%state_class%type_class_number "max":%max,
"step":%step%unit_of_measurement%state_class%type_class_number
# HA integration: %type_part variable for sensor %type_topic # HA integration: %type_part variable for sensor %type_topic
type_part-sensor = %unit_of_measurement%state_class%type_class_sensor type_part-sensor = %unit_of_measurement%state_class%type_class_sensor
+1 -1
View File
@@ -50,7 +50,7 @@
# %basetype the base data type ID (e.g. "UCH"). # %basetype the base data type ID (e.g. "UCH").
# %comment the field comment (if any). # %comment the field comment (if any).
# %unit the field unit (if any). # %unit the field unit (if any).
# %min and %max the minimum/maximum possible value for number fields. # %min, %max, and %step the minimum/maximum possible value and step value for number fields.
# %topic the field (or message) update topic built from the mqtttopic configuration option and/or the %topic variable # %topic the field (or message) update topic built from the mqtttopic configuration option and/or the %topic variable
# defined here. # defined here.
+13
View File
@@ -1085,7 +1085,20 @@ void MqttHandler::run() {
} }
if (dt->getMinMax(true, g_publishFormat, &ostr) == RESULT_OK) { if (dt->getMinMax(true, g_publishFormat, &ostr) == RESULT_OK) {
values.set("max", ostr.str()); values.set("max", ostr.str());
ostr.str("");
} }
if (dt->readFromRawValue(1, g_publishFormat, &ostr) != RESULT_OK) {
// fallback method, when smallest number didn't work
int divisor = dt->getDivisor();
float step = 1.0f;
if (divisor > 1) {
step /= static_cast<float>(divisor);
} else if (divisor < 0) {
step *= static_cast<float>(-divisor);
}
ostr << static_cast<float>(step);
}
values.set("step", ostr.str());
} }
if (!m_typeSwitches.empty()) { if (!m_typeSwitches.empty()) {
values.reduce(true); values.reduce(true);