6 #include <QJsonDocument> 25 qDebug() << Q_FUNC_INFO;
38 qDebug() << Q_FUNC_INFO;
49 if(
clientMqtt->state() == QMqttClient::Connected)
61 if(
clientMqtt->state() != QMqttClient::Connected)
70 QString message =
"Connexion " +
hostname;
74 connect(
clientMqtt, SIGNAL(messageReceived(QByteArray,QMqttTopicName)),
this, SLOT(
recevoirMessage(QByteArray,QMqttTopicName)));
89 if(
clientMqtt->state() != QMqttClient::Connected)
107 qDebug() << Q_FUNC_INFO;
124 this->
connecter(hostname, port, username, password);
134 if(
clientMqtt->state() != QMqttClient::Connected)
137 QString message =
"Déconnexion " +
hostname;
139 disconnect(
clientMqtt, SIGNAL(messageReceived(QByteArray,QMqttTopicName)),
this, SLOT(
recevoirMessage(QByteArray,QMqttTopicName)));
140 qDebug() << Q_FUNC_INFO;
151 if(
clientMqtt->state() != QMqttClient::Connected)
158 QString topic =
username +
"/devices/" + deviceID +
"/up";
159 qDebug() << Q_FUNC_INFO << deviceID << topic;
160 QMqttTopicFilter topicFilter(topic.toLatin1());
162 QString message =
"Abonnement " + deviceID;
167 QMessageBox::critical(0,
"Erreur",
"Impossible de s'abonner !");
184 if(
clientMqtt->state() != QMqttClient::Connected)
189 QString topic =
username +
"/devices/" + deviceID +
"/up";
190 qDebug() << Q_FUNC_INFO << deviceID << topic;
191 QMqttTopicFilter topicFilter(topic.toLatin1());
193 QString message =
"Désabonnement " + deviceID;
231 QSettings settings(QDir::currentPath() +
"/beehoneyt.ini", QSettings::IniFormat);
233 settings.beginGroup(
"TTN");
234 hostname = settings.value(
"Hostname").toString();
235 port = settings.value(
"Port").toInt();
236 username = settings.value(
"Username").toString();
237 password = settings.value(
"Password").toString();
252 QSettings settings(QDir::currentPath() +
"/beehoneyt.ini", QSettings::IniFormat);
254 settings.beginGroup(
"TTN");
255 settings.setValue(
"Hostname" ,
hostname);
256 settings.setValue(
"Port" ,
port);
257 settings.setValue(
"Username" ,
username);
258 settings.setValue(
"Password" ,
password);
271 qDebug() << Q_FUNC_INFO <<
clientMqtt->state();
275 case QMqttClient::Disconnected:
276 qDebug() << Q_FUNC_INFO <<
"Déconnecté";
281 case QMqttClient::Connecting:
282 qDebug() << Q_FUNC_INFO <<
"En cours de connexion";
284 case QMqttClient::Connected:
285 qDebug() << Q_FUNC_INFO <<
"Connecté";
304 QJsonDocument documentJSON = QJsonDocument::fromJson(messageRecu);
305 QJsonObject objetJSON = documentJSON.object();
308 QString deviceID = objetJSON.value(QString(
"dev_id")).toString();
309 int port = objetJSON.value(QString(
"port")).toInt();
311 qDebug() << Q_FUNC_INFO <<
"topic" << topic;
312 qDebug() << Q_FUNC_INFO <<
"DeviceID " << deviceID;
314 qDebug() << Q_FUNC_INFO <<
"port" <<
port;
318 QString message =
"Message reçu de " + deviceID +
" :\n" + messageRecu;
364 QJsonObject messageMetadata = objetJSON.value(QString(
"metadata")).toObject();
365 QString valeurHorodatage = messageMetadata.value(QString(
"time")).toString();
367 QDateTime horodatage = QDateTime::fromString(valeurHorodatage, Qt::ISODate).toLocalTime();
368 qDebug() << Q_FUNC_INFO <<
"horodatage" << horodatage.toString(
"dd/MM/yyyy HH:mm:ss");
372 QJsonObject messageMesures = objetJSON.value(QString(
"payload_fields")).toObject();
373 QJsonValue valeurPoids, valeurHumiditeExt, valeurHumiditeInt, valeurTemperatureExt, valeurTemperatureInt, valeurPression;
378 valeurPoids = messageMesures.value(QString(
"poids")).toDouble();
385 valeurHumiditeExt = messageMesures.value(QString(
"humiditeExt")).toDouble();
386 valeurHumiditeInt = messageMesures.value(QString(
"humiditeInt")).toDouble();
387 valeurTemperatureExt = messageMesures.value(QString(
"temperatureExt")).toDouble();
388 valeurTemperatureInt = messageMesures.value(QString(
"temperatureInt")).toDouble();
389 valeurPression = messageMesures.value(QString(
"pression")).toDouble();
bool abonner(QString deviceID)
Méthode qui abonne le client Mqtt à un topic , à partir du deviceID.
void recevoirMessage(const QByteArray &message, const QMqttTopicName &topic)
Méthode qui reçoit et traite le message du topic, et signal les nouvelles mesures à l'IHM...
void deconnecter()
Méthode qui déconnecte le client Mqtt.
La déclaration de la classe Communication.
void setTemperatureExterieure(double temperatureExterieure)
Methode qui change la valeur de la temperature exterieure.
QString getPassword() const
Methode qui retourne le mot de passe.
void setTemperatureInterieure(double temperatureInterieure)
Methode qui change la valeur de la temperature interieure.
void changerEtat()
Méthode qui signal l'état du client Mqtt à l'IHM.
~Communication()
Destructeur de la classe Communication.
void desabonner(QString deviceID)
Méthode qui désabonne le client Mqtt , à partir du deviceID.
La déclaration de la classe IHMPc.
QString getHostname() const
Methode qui retourne le nom d'hote.
void setHumiditeExterieure(double humiditeExterieure)
Methode qui change la valeur de l'humidite exterieure.
void connecter()
Méthode qui connecte le client Mqtt (par défaut) et permet la récupération du message (à l'aide de la...
void setPression(double pression)
Methode qui change la valeur de la pression.
bool estConnecte() const
Méthode qui retourne une valeur booléene true si le client Mqtt est connecté
void configurer()
Méthode qui configure le client Mqtt , à partir du fichier beehoneyt.ini.
void setHumiditeInterieure(double humiditeInterieure)
Methode qui change la valeur de l'humidite interieure.
void nouvellesMesures(MesureRuche mesure)
QMqttSubscription * abonnementMqtt
QString getUsername() const
Methode qui retourne le nom d'utilisateur.
void initialiser()
Methode qui intialise les attributs.
void messageJournal(QString message)
#define PORT_TTN_ENVIRONNEMENT
void setHorodatage(QString horodatage)
Methode qui change la valeur de l'horodatage.
void setPoids(double poids)
Methode qui change la valeur du poids.
void reconnecter()
Méthode qui déconnecte puis connecte le client Mqtt.
Communication(QObject *parent=nullptr)
Constructeur de la classe Communication.
void sauvegarder()
Méthode qui sauvegarde la configuration du client Mqtt , dans le fichier beehoneyt.ini.