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