Newer
Older
#ifndef SERVER_H
#define SERVER_H
#include <QObject>
#include <QWebSocket>
#include <QWebSocketServer>
#include <QMutex>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include "solarControl.h"
class Server : public QObject
{
Q_OBJECT
public:
explicit Server(QString TCPhostNamen, QObject *parent = nullptr);
private:
friend class TestSHserver;
Server(); // Nur zum Testen
// TCP Verbindung zu Smart Home gateway
QString m_gatewayHostName;
QTcpSocket m_gatewayTCPsocket;
// Serielle Schnittstelle zu angeschlossenem Gateway (USB)
// QSerialPort *m_serial = nullptr;
// HTTP Requests für Tasmota
QNetworkAccessManager * m_tasmota; // -> To send us a request.
// WebSocket Verbindung zu Clients
QWebSocketServer *m_webSocketServer;
QVector<QWebSocket *> m_webSocketClients;
QMutex mutex;
const int maxClientNo = 25;
void startWebSocketServer();
void sendToClient(const QJsonObject &jsonObj);
// void startSerial();
// Peters Zauber-Steuerung
SolarControl * m_solarControl;
void startTimers();
// helper (for better testing)
void processTasmotaMsg(QString jsonMSG);
private slots:
void onReadyReadSensorValueTCP(); // TCP Socket interface to Smart Home Gateway
// void onReadyReadSensorValueSerial(); // Serial interface to Smart Home Gateway
void tasmotaReply(QNetworkReply *reply); // HTTP Requests für Tasmota
// Web Socket interface to clients: