mirror of
https://github.com/Laxilef/OTGateway.git
synced 2025-12-10 18:24:27 +05:00
feat: added signal quality for DALLAS sensors
This commit is contained in:
@@ -70,7 +70,7 @@ public:
|
||||
typedef struct {
|
||||
bool connected = false;
|
||||
unsigned long activityTime = 0;
|
||||
uint8_t signalQuality = 0;
|
||||
uint8_t signalQuality = 100;
|
||||
//float raw[4] = {0.0f, 0.0f, 0.0f, 0.0f};
|
||||
float values[4] = {0.0f, 0.0f, 0.0f, 0.0f};
|
||||
} Result;
|
||||
|
||||
@@ -302,6 +302,7 @@ protected:
|
||||
continue;
|
||||
}
|
||||
|
||||
auto& rSensor = Sensors::results[sensorId];
|
||||
float value = instance.getTempC(sSensor.address);
|
||||
if (value == DEVICE_DISCONNECTED_C) {
|
||||
Log.swarningln(
|
||||
@@ -309,6 +310,10 @@ protected:
|
||||
sSensor.gpio, sensorId, sSensor.name
|
||||
);
|
||||
|
||||
if (rSensor.signalQuality > 0) {
|
||||
rSensor.signalQuality--;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -317,6 +322,10 @@ protected:
|
||||
sSensor.gpio, sensorId, sSensor.name, value
|
||||
);
|
||||
|
||||
if (rSensor.signalQuality < 100) {
|
||||
rSensor.signalQuality++;
|
||||
}
|
||||
|
||||
// set sensor value
|
||||
Sensors::setValueById(sensorId, value, Sensors::ValueType::TEMPERATURE, true, true);
|
||||
}
|
||||
@@ -334,6 +343,23 @@ protected:
|
||||
|
||||
// check sensors on bus
|
||||
if (!instance.getDeviceCount()) {
|
||||
for (uint8_t sensorId = 0; sensorId <= Sensors::getMaxSensorId(); sensorId++) {
|
||||
auto& sSensor = Sensors::settings[sensorId];
|
||||
|
||||
// only target & valid sensors
|
||||
if (!sSensor.enabled || sSensor.type != Sensors::Type::DALLAS_TEMP || sSensor.purpose == Sensors::Purpose::NOT_CONFIGURED) {
|
||||
continue;
|
||||
|
||||
} else if (sSensor.gpio != gpio || isEmptyAddress(sSensor.address)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto& rSensor = Sensors::results[sensorId];
|
||||
if (rSensor.signalQuality > 0) {
|
||||
rSensor.signalQuality--;
|
||||
}
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user