mirror of
https://github.com/lumapu/ahoy.git
synced 2025-06-05 12:11:39 +02:00
Use default channel name if non is set. Export inverter metrics as <XX>_total metric if channel metrics also available.
This commit is contained in:
parent
6b721cbe0c
commit
7673721bd7
2 changed files with 54 additions and 36 deletions
|
@ -800,16 +800,31 @@ class Web {
|
|||
// This is the correct field to report
|
||||
std::tie(promUnit, promType) = convertToPromUnits(iv->getUnit(metricsChannelId, rec));
|
||||
// Declare metric only once
|
||||
if (!metricDeclared) {
|
||||
if (channel != 0 && !metricDeclared) {
|
||||
snprintf(type, sizeof(type), "# TYPE ahoy_solar_%s%s %s\n", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), promType.c_str());
|
||||
metrics += type;
|
||||
metricDeclared = true;
|
||||
}
|
||||
// report value
|
||||
if (0 == channel) {
|
||||
snprintf(topic, sizeof(topic), "ahoy_solar_%s%s{inverter=\"%s\"}", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), iv->config->name);
|
||||
char total[7];
|
||||
total[0] = 0;
|
||||
if (metricDeclared) {
|
||||
// A declaration and value for channels has been delivered. So declare and deliver a _total metric
|
||||
strncpy(total,"_total",sizeof(total));
|
||||
}
|
||||
snprintf(type, sizeof(type), "# TYPE ahoy_solar_%s%s%s %s\n", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), total, promType.c_str());
|
||||
metrics += type;
|
||||
snprintf(topic, sizeof(topic), "ahoy_solar_%s%s%s{inverter=\"%s\"}", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), total,iv->config->name);
|
||||
} else {
|
||||
snprintf(topic, sizeof(topic), "ahoy_solar_%s%s{inverter=\"%s\",channel=\"%s\"}", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), iv->config->name,iv->config->chName[channel-1]);
|
||||
// Use a fallback channel name (ch0, ch1, ...)if non is given by user
|
||||
char chName[MAX_NAME_LENGTH];
|
||||
if (iv->config->chName[channel-1][0] != 0) {
|
||||
strncpy(chName, iv->config->chName[channel-1], sizeof(chName));
|
||||
} else {
|
||||
snprintf(chName,sizeof(chName),"ch%1d",channel);
|
||||
}
|
||||
snprintf(topic, sizeof(topic), "ahoy_solar_%s%s{inverter=\"%s\",channel=\"%s\"}", iv->getFieldName(metricsChannelId, rec), promUnit.c_str(), iv->config->name,chName);
|
||||
}
|
||||
snprintf(val, sizeof(val), " %.3f\n", iv->getValue(metricsChannelId, rec));
|
||||
metrics += topic;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue