Reconnexion automatique au serveur MQTT lors d'une déconnexion
This commit is contained in:
@@ -145,19 +145,23 @@ CMQTTMessage CCANDataLogger::GetMQTTMessage(CCANMessage *Msg, bool Format )
|
||||
{
|
||||
QString SignalData;
|
||||
CCANSignal Signal = Msg->mSignalsList.at(signal);
|
||||
if(Signal.mValueType == CCANSignal::CAN_SIGNAL_TYPE_UNSIGNED_INT)
|
||||
{
|
||||
SignalData = QString("\"%1\":%2").arg(Signal.mSignalName).arg((quint64)Signal.mPhysicalValue);
|
||||
}
|
||||
else if(Signal.mValueType == CCANSignal::CAN_SIGNAL_TYPE_SIGNED_INT)
|
||||
{
|
||||
SignalData = QString("\"%1\":%2").arg(Signal.mSignalName).arg((qint64)Signal.mPhysicalValue);
|
||||
}
|
||||
else if(Signal.mValueType == CCANSignal::CAN_SIGNAL_TYPE_32_BIT_FLOAT ||
|
||||
Signal.mValueType == CCANSignal::CAN_SIGNAL_TYPE_64_BIT_DOUBLE)
|
||||
{
|
||||
SignalData = QString("\"%1\":%2").arg(Signal.mSignalName).arg(Signal.mPhysicalValue,0,'f',1);
|
||||
}
|
||||
|
||||
//JFM 2023-06-16 changé pour forcer toujours à float
|
||||
SignalData = QString("\"%1\":%2").arg(Signal.mSignalName).arg(Signal.mPhysicalValue,0,'f',1);
|
||||
|
||||
// if(Signal.mValueType == CCANSignal::CAN_SIGNAL_TYPE_UNSIGNED_INT)
|
||||
// {
|
||||
// SignalData = QString("\"%1\":%2").arg(Signal.mSignalName).arg((quint64)Signal.mPhysicalValue);
|
||||
// }
|
||||
// else if(Signal.mValueType == CCANSignal::CAN_SIGNAL_TYPE_SIGNED_INT)
|
||||
// {
|
||||
// SignalData = QString("\"%1\":%2").arg(Signal.mSignalName).arg((qint64)Signal.mPhysicalValue);
|
||||
// }
|
||||
// else if(Signal.mValueType == CCANSignal::CAN_SIGNAL_TYPE_32_BIT_FLOAT ||
|
||||
// Signal.mValueType == CCANSignal::CAN_SIGNAL_TYPE_64_BIT_DOUBLE)
|
||||
// {
|
||||
// SignalData = QString("\"%1\":%2").arg(Signal.mSignalName).arg(Signal.mPhysicalValue,0,'f',1);
|
||||
// }
|
||||
MsgPayload.append(SignalData);
|
||||
|
||||
if(signal < Msg->mSignalsList.size()-1)
|
||||
|
||||
@@ -8,6 +8,10 @@ CMQTTClientWrapper::CMQTTClientWrapper()
|
||||
mMQTTRefreshTimer = new QTimer;
|
||||
mMQTTRefreshTimer->setSingleShot(true);
|
||||
connect(mMQTTRefreshTimer,&QTimer::timeout,this,&CMQTTClientWrapper::MQTTSendTimerExpired);
|
||||
|
||||
mMQTTReconnectTimer = new QTimer;
|
||||
mMQTTReconnectTimer->setSingleShot(true);
|
||||
connect(mMQTTReconnectTimer,&QTimer::timeout,this,&CMQTTClientWrapper::MQTTReconnectTimerExpired);
|
||||
mProgramPtr = 0;
|
||||
}
|
||||
|
||||
@@ -84,12 +88,14 @@ void CMQTTClientWrapper::StateChanged()
|
||||
qDebug("MQTT client Disconnected");
|
||||
mProgramPtr->SetMQTTConnectionSatusRequest(false);
|
||||
mMQTTRefreshTimer->stop();
|
||||
mMQTTReconnectTimer->start(MQTT_CLIENT_RECONNECT_TIMEOUT);
|
||||
break;
|
||||
}
|
||||
case QMqttClient::Connected:
|
||||
{
|
||||
mProgramPtr->SetMQTTConnectionSatusRequest(true);
|
||||
mMQTTRefreshTimer->start(mMQTTParams.mMQTTTransmitTimeout);
|
||||
mMQTTReconnectTimer->stop();
|
||||
qDebug("MQTT client Connected");
|
||||
break;
|
||||
}
|
||||
@@ -136,8 +142,8 @@ void CMQTTClientWrapper::MQTTSendTimerExpired()
|
||||
{
|
||||
qint32 res = mMQTTClient.publish(MessagesList->at(i).mMessageTopic,MessagesList->at(i).mMessagePayload.toLocal8Bit(),0,true);
|
||||
qDebug("%s : %s",qPrintable(MessagesList->at(i).mMessageTopic), qPrintable(MessagesList->at(i).mMessagePayload));
|
||||
QString LogMsg = QString("Envoi d'un message MQTT. Topic: %1. Payload: %2").arg(MessagesList->at(i).mMessageTopic).arg(MessagesList->at(i).mMessagePayload);
|
||||
// CGeneralMessagesLogDispatcher::instance()->AddLogMessage(LogMsg,false);
|
||||
QString LogMsg = QString("Envoi d'un message MQTT. Topic: %1 Payload: %2").arg(MessagesList->at(i).mMessageTopic).arg(MessagesList->at(i).mMessagePayload);
|
||||
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(LogMsg,false);
|
||||
|
||||
}
|
||||
qDebug("Sent %d MQTT messages",MessagesList->size());
|
||||
@@ -147,3 +153,8 @@ void CMQTTClientWrapper::MQTTSendTimerExpired()
|
||||
mMQTTRefreshTimer->start(mMQTTParams.mMQTTTransmitTimeout);
|
||||
|
||||
}
|
||||
|
||||
void CMQTTClientWrapper::MQTTReconnectTimerExpired()
|
||||
{
|
||||
ConnectToBroker();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef MQTTCLIENTWRAPPER_H
|
||||
#define MQTTCLIENTWRAPPER_H
|
||||
|
||||
|
||||
#include "defines.h"
|
||||
#include <QtMqtt/QtMqtt>
|
||||
#include <QMqttClient>
|
||||
@@ -28,6 +29,7 @@ public:
|
||||
COtarcikCan *mProgramPtr;
|
||||
QString mMQTTClientID;
|
||||
QTimer *mMQTTRefreshTimer;
|
||||
QTimer *mMQTTReconnectTimer;
|
||||
|
||||
|
||||
private:
|
||||
@@ -38,6 +40,7 @@ private:
|
||||
public slots:
|
||||
void StateChanged();
|
||||
void MQTTSendTimerExpired();
|
||||
void MQTTReconnectTimerExpired();
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
|
||||
#define GENERAL_MESSAGES_MAX_LOG_LINES 5000 //The number of lines of general status log we keep in the general status window (avoids fucking up because you know.... RAM)
|
||||
|
||||
#define MQTT_CLIENT_RECONNECT_TIMEOUT 5000 //Time in ms between reconnect attemps to MQTT broker when connection is lost
|
||||
enum eOtarcikGeneralReturns
|
||||
{
|
||||
RET_OK = 0,
|
||||
|
||||
Reference in New Issue
Block a user