#include "mqttsensorsource.h" #include MqttSensorSource::MqttSensorSource(QObject *parent) : QObject{parent} { } void MqttSensorSource::start(const QJsonObject& settings) { baseTopicName = settings["BaseTopic"].toString("zigbee2mqtt"); connect(&client, &QMqttClient::stateChanged, this, &MqttSensorSource::onClientStateChanged); connect(&client, &QMqttClient::errorChanged, this, &MqttSensorSource::onClientError); client.setHostname(settings["Host"].toString("127.0.0.1")); client.setPort(settings["Port"].toInt(1883)); if(settings.contains("User")) client.setUsername(settings["User"].toString()); if(settings.contains("Password")) client.setPassword(settings["Password"].toString()); client.setProtocolVersion(QMqttClient::MQTT_5_0); client.connectToHost(); QJsonArray sensorsArray = settings["Sensors"].toArray(); for(QJsonValueRef sensorRef : sensorsArray) { QJsonObject sensorObject = sensorRef.toObject(); if(!sensorObject.contains("Topic")) continue; SensorSubscription sensor; sensor.topic = sensorObject["Topic"].toString(); if(!sensorObject.contains("Name")) sensor.name = sensor.topic; else sensor.name = sensorObject["Name"].toString(); sensor.id = qHash(baseTopicName + "/" + sensor.topic); sensors.push_back(sensor); } } void MqttSensorSource::onClientError(QMqttClient::ClientError error) { qWarning()<<"MQTT Client error:"<