mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 00:09:51 +03:00
optionally render with UOM attached
This commit is contained in:
@@ -182,7 +182,8 @@ bool WebCustomEntityService::command_setvalue(const char * value, const std::str
|
|||||||
}
|
}
|
||||||
|
|
||||||
// output of a single value
|
// output of a single value
|
||||||
void WebCustomEntityService::render_value(JsonObject & output, CustomEntityItem entity, const bool useVal, const bool web) {
|
// if add_uom is true it will add the UOM string to the value
|
||||||
|
void WebCustomEntityService::render_value(JsonObject & output, CustomEntityItem entity, const bool useVal, const bool web, const bool add_uom) {
|
||||||
char payload[12];
|
char payload[12];
|
||||||
std::string name = useVal ? "value" : entity.name;
|
std::string name = useVal ? "value" : entity.name;
|
||||||
switch (entity.value_type) {
|
switch (entity.value_type) {
|
||||||
@@ -201,28 +202,33 @@ void WebCustomEntityService::render_value(JsonObject & output, CustomEntityItem
|
|||||||
break;
|
break;
|
||||||
case DeviceValueType::INT:
|
case DeviceValueType::INT:
|
||||||
if ((int8_t)entity.value != EMS_VALUE_INT_NOTSET) {
|
if ((int8_t)entity.value != EMS_VALUE_INT_NOTSET) {
|
||||||
output[name] = serialized(Helpers::render_value(payload, entity.factor * (int8_t)entity.value, 2));
|
std::string v = Helpers::render_value(payload, entity.factor * (int8_t)entity.value, 2);
|
||||||
|
output[name] = add_uom ? serialized(v + ' ' + EMSdevice::uom_to_string(entity.uom)) : serialized(v);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DeviceValueType::UINT:
|
case DeviceValueType::UINT:
|
||||||
if ((uint8_t)entity.value != EMS_VALUE_UINT_NOTSET) {
|
if ((uint8_t)entity.value != EMS_VALUE_UINT_NOTSET) {
|
||||||
output[name] = serialized(Helpers::render_value(payload, entity.factor * (uint8_t)entity.value, 2));
|
std::string v = Helpers::render_value(payload, entity.factor * (uint8_t)entity.value, 2);
|
||||||
|
output[name] = add_uom ? serialized(v + ' ' + EMSdevice::uom_to_string(entity.uom)) : serialized(v);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DeviceValueType::SHORT:
|
case DeviceValueType::SHORT:
|
||||||
if ((int16_t)entity.value != EMS_VALUE_SHORT_NOTSET) {
|
if ((int16_t)entity.value != EMS_VALUE_SHORT_NOTSET) {
|
||||||
output[name] = serialized(Helpers::render_value(payload, entity.factor * (int16_t)entity.value, 2));
|
std::string v = Helpers::render_value(payload, entity.factor * (int16_t)entity.value, 2);
|
||||||
|
output[name] = add_uom ? serialized(v + ' ' + EMSdevice::uom_to_string(entity.uom)) : serialized(v);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DeviceValueType::USHORT:
|
case DeviceValueType::USHORT:
|
||||||
if ((uint16_t)entity.value != EMS_VALUE_USHORT_NOTSET) {
|
if ((uint16_t)entity.value != EMS_VALUE_USHORT_NOTSET) {
|
||||||
output[name] = serialized(Helpers::render_value(payload, entity.factor * (uint16_t)entity.value, 2));
|
std::string v = Helpers::render_value(payload, entity.factor * (uint16_t)entity.value, 2);
|
||||||
|
output[name] = add_uom ? serialized(v + ' ' + EMSdevice::uom_to_string(entity.uom)) : serialized(v);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DeviceValueType::ULONG:
|
case DeviceValueType::ULONG:
|
||||||
case DeviceValueType::TIME:
|
case DeviceValueType::TIME:
|
||||||
if (entity.value != EMS_VALUE_ULONG_NOTSET) {
|
if (entity.value != EMS_VALUE_ULONG_NOTSET) {
|
||||||
output[name] = serialized(Helpers::render_value(payload, entity.factor * entity.value, 2));
|
std::string v = Helpers::render_value(payload, entity.factor * entity.value, 2);
|
||||||
|
output[name] = add_uom ? serialized(v + ' ' + EMSdevice::uom_to_string(entity.uom)) : serialized(v);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DeviceValueType::STRING:
|
case DeviceValueType::STRING:
|
||||||
@@ -236,6 +242,15 @@ void WebCustomEntityService::render_value(JsonObject & output, CustomEntityItem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// display all custom entities
|
||||||
|
// adding each one, with UOM to a json object string
|
||||||
|
void WebCustomEntityService::show_values(JsonObject & output) {
|
||||||
|
for (const CustomEntityItem & entity : *customEntityItems) {
|
||||||
|
render_value(output, entity, false, false, true); // with add_uom
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// process json output for info/commands and value_info
|
// process json output for info/commands and value_info
|
||||||
bool WebCustomEntityService::get_value_info(JsonObject & output, const char * cmd) {
|
bool WebCustomEntityService::get_value_info(JsonObject & output, const char * cmd) {
|
||||||
EMSESP::webCustomEntityService.read([&](WebCustomEntity & webEntity) { customEntityItems = &webEntity.customEntityItems; });
|
EMSESP::webCustomEntityService.read([&](WebCustomEntity & webEntity) { customEntityItems = &webEntity.customEntityItems; });
|
||||||
|
|||||||
Reference in New Issue
Block a user