Fix mqtt item expose detection only working on local instances

This commit is contained in:
Carl Philipp Klemm 2026-06-19 12:15:41 +02:00
parent 45676b3384
commit 58ba22b267
24 changed files with 340 additions and 415 deletions

View file

@ -5,6 +5,32 @@
SensorStore globalSensors;
QString sensorUpdateTypeToString(sensor_update_type_t type)
{
switch(type)
{
case SENSOR_UPDATE_USER:
return "User";
case SENSOR_UPDATE_REMOTE:
return "Remote";
case SENSOR_UPDATE_BACKEND:
return "Backend";
default:
return "Invalid";
}
}
sensor_update_type_t sensorUpdateTypeFromString(const QString& string)
{
if(string == sensorUpdateTypeToString(SENSOR_UPDATE_USER))
return SENSOR_UPDATE_USER;
if(string == sensorUpdateTypeToString(SENSOR_UPDATE_REMOTE))
return SENSOR_UPDATE_REMOTE;
if(string == sensorUpdateTypeToString(SENSOR_UPDATE_BACKEND))
return SENSOR_UPDATE_BACKEND;
return SENSOR_UPDATE_INVALID;
}
SensorStore::SensorStore(QObject *parent): QObject(parent)
{
}
@ -12,7 +38,13 @@ SensorStore::SensorStore(QObject *parent): QObject(parent)
void SensorStore::store(QJsonObject& json)
{
QJsonArray sensorsArray;
for(const Sensor& sensor : sensors_)
std::vector<Sensor> sensors = sensors_;
for(const Sensor& sensor : knownSensors_)
{
if(std::find(sensors.begin(), sensors.end(), sensor) == sensors.end())
sensors.push_back(sensor);
}
for(const Sensor& sensor : sensors)
{
QJsonObject sensorObject;
sensor.store(sensorObject);