add step variable for number fields
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user