Přidání indexování čidel v /metrics

This commit is contained in:
2024-10-27 23:50:25 +01:00
parent f912c7bb74
commit eab0b167b8

View File

@@ -175,35 +175,48 @@ void thermostatCheck() {
}
}
void readSensor() {
uint8_t ds18Count = sensor.getDS18Count();
void readSensors() {
uint8_t ds18Count = sensor.getDeviceCount();
float tempC[ds18Count];
float temperature[ds18Count];
DeviceAddress addr;
String deviceAddress[ds18Count];
int savedTemperatures = 0;
avgTemperature = 0;
for (int i = 0; i < ds18Count; i++) {
tempC[i] = sensor.getTempCByIndex(i);
if (tempC[i] != DEVICE_DISCONNECTED_C) {
temperature[i] = tempC[i] + correction[i];
avgTemperature += temperature[i];
for (uint8_t i = 0; i < ds18Count; i++) {
sensor.getAddress(addr, i);
deviceAddress[savedTemperatures] == "";
for (uint8_t n = 0; n < 8; n++) {
if (addr[n] < 16) {
deviceAddress[savedTemperatures] += String(0, HEX);
}
deviceAddress[savedTemperatures] += String(addr[n], HEX);
}
tempC[savedTemperatures] = sensor.getTempCByIndex(i);
if (tempC[savedTemperatures] != DEVICE_DISCONNECTED_C) {
if (savedTemperatures == 0) {
avgTemperature = 0;
}
temperature[savedTemperatures] = tempC[savedTemperatures] + correction[i];
avgTemperature += temperature[savedTemperatures];
savedTemperatures++;
}
}
if (savedTemperatures != 0) {
avgTemperature = avgTemperature / savedTemperatures;
metrics = getMetricsVar(ds18Count, temperature, tempC);
}
setMetricsVar(ds18Count, temperature, tempC, deviceAddress);
}
String getMetricsVar(uint8_t ds18Count, float temperature[], float tempC[]) {
metrics = "temp{device=\"";
void setMetricsVar(uint8_t ds18Count, float temperature[], float tempC[], String deviceAddress[]) {
metrics = "";
for (uint8_t i = 0; i < ds18Count; i++) {
if (i != 0) {
metrics += "\ntemp{device=\"";
}
metrics += i;
metrics += "\",address=\"";
metrics += deviceAddress[i];
metrics += "\"} ";
metrics += temperature[i];
}
@@ -221,15 +234,13 @@ String getMetricsVar(uint8_t ds18Count, float temperature[], float tempC[]) {
metrics += "\noffset ";
metrics += offset;
}
return metrics;
}
void startConversion() {
// start temperature conversion (does not block)
sensor.requestTemperatures();
// schedule reading the actual temperature in 750 milliseconds
tasker.setTimeout(readSensor, 750);
tasker.setTimeout(readSensors, 750);
}
void ledBlink() {
digitalWrite(LED_PIN, LOW);