Support different Sensor update types

This commit is contained in:
Carl Philipp Klemm 2026-04-21 16:31:13 +02:00
parent ff07551a59
commit 09f7e55b4e
20 changed files with 258 additions and 41 deletions

View file

@ -39,6 +39,7 @@ MqttSensorSource::SensorSubscription& MqttSensorSource::findSubscription(const Q
return sensor;
}
assert(false);
return sensors.front();
}
void MqttSensorSource::onClientStateChanged(QMqttClient::ClientState state)
@ -81,7 +82,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " Temperature";
sensor.type = Sensor::TYPE_TEMPERATURE;
sensor.field = obj["temperature"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("local_temperature"))
@ -89,7 +90,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " Temperature";
sensor.type = Sensor::TYPE_TEMPERATURE;
sensor.field = obj["local_temperature"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("humidity"))
@ -97,7 +98,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " Humidity";
sensor.type = Sensor::TYPE_HUMIDITY;
sensor.field = obj["humidity"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("illuminance"))
@ -105,7 +106,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " Illuminance";
sensor.type = Sensor::TYPE_BRIGHTNESS;
sensor.field = obj["illuminance"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("presence"))
@ -113,7 +114,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " Presence";
sensor.type = Sensor::TYPE_OCUPANCY;
sensor.field = obj["presence"].toBool() ? 1 : 0;
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("co2"))
@ -121,7 +122,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " co2";
sensor.type = Sensor::TYPE_CO2;
sensor.field = obj["co2"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("formaldehyd"))
@ -129,7 +130,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " Formaldehyd";
sensor.type = Sensor::TYPE_FORMALDEHYD;
sensor.field = obj["formaldehyd"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("pm25"))
@ -137,7 +138,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " pm25";
sensor.type = Sensor::TYPE_PM25;
sensor.field = obj["pm25"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("voc"))
@ -145,7 +146,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " VOC";
sensor.type = Sensor::TYPE_TOTAL_VOC;
sensor.field = obj["voc"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("power"))
@ -153,7 +154,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " Power";
sensor.type = Sensor::TYPE_POWER;
sensor.field = obj["power"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("energy"))
@ -161,7 +162,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " Energy";
sensor.type = Sensor::TYPE_ENERGY_USE;
sensor.field = obj["energy"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
if(obj.contains("voltage"))
@ -169,7 +170,7 @@ void MqttSensorSource::onMessageReceived(const QMqttMessage& message)
sensor.name = baseName + " Voltage";
sensor.type = Sensor::TYPE_VOLTAGE;
sensor.field = obj["voltage"].toDouble(0);
stateChanged(sensor);
stateChanged(sensor, SENSOR_UPDATE_BACKEND);
}
}
}