mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
formatting
This commit is contained in:
@@ -1706,7 +1706,7 @@ void EMSdevice::get_value_json(JsonObject json, DeviceValue & dv) {
|
|||||||
|
|
||||||
// generate Prometheus metrics format from device values
|
// generate Prometheus metrics format from device values
|
||||||
std::string EMSdevice::get_metrics_prometheus(const int8_t tag) {
|
std::string EMSdevice::get_metrics_prometheus(const int8_t tag) {
|
||||||
std::string result;
|
std::string result;
|
||||||
std::unordered_map<std::string, bool> seen_metrics;
|
std::unordered_map<std::string, bool> seen_metrics;
|
||||||
|
|
||||||
for (auto & dv : devicevalues_) {
|
for (auto & dv : devicevalues_) {
|
||||||
@@ -1715,43 +1715,42 @@ std::string EMSdevice::get_metrics_prometheus(const int8_t tag) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// only process number and boolean types for now
|
// only process number and boolean types for now
|
||||||
if (dv.type != DeviceValueType::BOOL && dv.type != DeviceValueType::UINT8 && dv.type != DeviceValueType::INT8
|
if (dv.type != DeviceValueType::BOOL && dv.type != DeviceValueType::UINT8 && dv.type != DeviceValueType::INT8 && dv.type != DeviceValueType::UINT16
|
||||||
&& dv.type != DeviceValueType::UINT16 && dv.type != DeviceValueType::INT16 && dv.type != DeviceValueType::UINT24
|
&& dv.type != DeviceValueType::INT16 && dv.type != DeviceValueType::UINT24 && dv.type != DeviceValueType::UINT32 && dv.type != DeviceValueType::TIME) {
|
||||||
&& dv.type != DeviceValueType::UINT32 && dv.type != DeviceValueType::TIME) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool has_value = false;
|
bool has_value = false;
|
||||||
double metric_value = 0.0;
|
double metric_value = 0.0;
|
||||||
|
|
||||||
switch (dv.type) {
|
switch (dv.type) {
|
||||||
case DeviceValueType::BOOL:
|
case DeviceValueType::BOOL:
|
||||||
if (Helpers::hasValue(*(uint8_t *)(dv.value_p), EMS_VALUE_BOOL)) {
|
if (Helpers::hasValue(*(uint8_t *)(dv.value_p), EMS_VALUE_BOOL)) {
|
||||||
has_value = true;
|
has_value = true;
|
||||||
metric_value = (bool)*(uint8_t *)(dv.value_p) ? 1.0 : 0.0;
|
metric_value = (bool)*(uint8_t *)(dv.value_p) ? 1.0 : 0.0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DeviceValueType::UINT8:
|
case DeviceValueType::UINT8:
|
||||||
if (Helpers::hasValue(*(uint8_t *)(dv.value_p))) {
|
if (Helpers::hasValue(*(uint8_t *)(dv.value_p))) {
|
||||||
has_value = true;
|
has_value = true;
|
||||||
metric_value = *(uint8_t *)(dv.value_p);
|
metric_value = *(uint8_t *)(dv.value_p);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DeviceValueType::INT8:
|
case DeviceValueType::INT8:
|
||||||
if (Helpers::hasValue(*(int8_t *)(dv.value_p))) {
|
if (Helpers::hasValue(*(int8_t *)(dv.value_p))) {
|
||||||
has_value = true;
|
has_value = true;
|
||||||
metric_value = *(int8_t *)(dv.value_p);
|
metric_value = *(int8_t *)(dv.value_p);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DeviceValueType::UINT16:
|
case DeviceValueType::UINT16:
|
||||||
if (Helpers::hasValue(*(uint16_t *)(dv.value_p))) {
|
if (Helpers::hasValue(*(uint16_t *)(dv.value_p))) {
|
||||||
has_value = true;
|
has_value = true;
|
||||||
metric_value = *(uint16_t *)(dv.value_p);
|
metric_value = *(uint16_t *)(dv.value_p);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DeviceValueType::INT16:
|
case DeviceValueType::INT16:
|
||||||
if (Helpers::hasValue(*(int16_t *)(dv.value_p))) {
|
if (Helpers::hasValue(*(int16_t *)(dv.value_p))) {
|
||||||
has_value = true;
|
has_value = true;
|
||||||
metric_value = *(int16_t *)(dv.value_p);
|
metric_value = *(int16_t *)(dv.value_p);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1759,7 +1758,7 @@ std::string EMSdevice::get_metrics_prometheus(const int8_t tag) {
|
|||||||
case DeviceValueType::UINT32:
|
case DeviceValueType::UINT32:
|
||||||
case DeviceValueType::TIME:
|
case DeviceValueType::TIME:
|
||||||
if (Helpers::hasValue(*(uint32_t *)(dv.value_p))) {
|
if (Helpers::hasValue(*(uint32_t *)(dv.value_p))) {
|
||||||
has_value = true;
|
has_value = true;
|
||||||
metric_value = *(uint32_t *)(dv.value_p);
|
metric_value = *(uint32_t *)(dv.value_p);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1793,7 +1792,7 @@ std::string EMSdevice::get_metrics_prometheus(const int8_t tag) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto fullname = dv.get_fullname();
|
auto fullname = dv.get_fullname();
|
||||||
std::string help_text;
|
std::string help_text;
|
||||||
if (!fullname.empty()) {
|
if (!fullname.empty()) {
|
||||||
help_text = fullname;
|
help_text = fullname;
|
||||||
@@ -1850,9 +1849,9 @@ std::string EMSdevice::get_metrics_prometheus(const int8_t tag) {
|
|||||||
}
|
}
|
||||||
result += " ";
|
result += " ";
|
||||||
|
|
||||||
char val_str[30];
|
char val_str[30];
|
||||||
double final_value = metric_value;
|
double final_value = metric_value;
|
||||||
|
|
||||||
if (dv.numeric_operator != 0) {
|
if (dv.numeric_operator != 0) {
|
||||||
if (dv.numeric_operator > 0) {
|
if (dv.numeric_operator > 0) {
|
||||||
final_value = metric_value / dv.numeric_operator;
|
final_value = metric_value / dv.numeric_operator;
|
||||||
@@ -1860,7 +1859,7 @@ std::string EMSdevice::get_metrics_prometheus(const int8_t tag) {
|
|||||||
final_value = metric_value * (-dv.numeric_operator);
|
final_value = metric_value * (-dv.numeric_operator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double rounded = (final_value >= 0) ? (double)((int64_t)(final_value + 0.5)) : (double)((int64_t)(final_value - 0.5));
|
double rounded = (final_value >= 0) ? (double)((int64_t)(final_value + 0.5)) : (double)((int64_t)(final_value - 0.5));
|
||||||
if (dv.type == DeviceValueType::BOOL || (final_value == rounded)) {
|
if (dv.type == DeviceValueType::BOOL || (final_value == rounded)) {
|
||||||
snprintf(val_str, sizeof(val_str), "%.0f", final_value);
|
snprintf(val_str, sizeof(val_str), "%.0f", final_value);
|
||||||
|
|||||||
Reference in New Issue
Block a user