UvosSmartHomeInterface/src/mqttclient.h
2026-04-12 18:06:55 +02:00

40 lines
841 B
C++

#ifndef MQTTCLIENT_H
#define MQTTCLIENT_H
#include <QMqttClient>
#include <QObject>
#include <QJsonObject>
#include <map>
class MqttClient: public QObject
{
Q_OBJECT
public:
struct Subscription
{
int ref;
QMqttSubscription* subscription;
};
private:
QString baseTopicName;
std::shared_ptr<QMqttClient> client;
std::map<QString, Subscription*> subscriptions;
private slots:
void onClientStateChanged(QMqttClient::ClientState state);
void onClientError(QMqttClient::ClientError error);
public:
explicit MqttClient();
~MqttClient();
void start(const QJsonObject& settings);
void store(QJsonObject& json);
std::shared_ptr<QMqttClient> getClient();
Subscription* subscribe(QString topic);
void unsubscribe(Subscription* subscription);
void unsubscribe(QString topic);
QString getBaseTopic();
};
#endif // MQTTCLIENT_H