18 qDebug() << Q_FUNC_INFO;
20 connect(
client, SIGNAL(messageReceived(
const QByteArray &,
const QMqttTopicName &)),
this, SLOT(
decoderJson(
const QByteArray &)));
28 if(
client->state() == QMqttClient::Connected)
30 client->disconnectFromHost();
32 qDebug() << Q_FUNC_INFO;
45 qDebug() << Q_FUNC_INFO << hostname << port << username << password;
46 if(
client->state() == QMqttClient::Disconnected)
48 client->setHostname(hostname);
50 client->setUsername(username);
51 client->setPassword(password);
54 else if(
client->state() == QMqttClient::Connected)
56 client->disconnectFromHost();
67 if(
client->state() == QMqttClient::Connected)
70 qDebug() << Q_FUNC_INFO << topic;
81 if(
client->state() == QMqttClient::Connected)
83 client->unsubscribe(topic);
84 qDebug() << Q_FUNC_INFO << topic;
95 QJsonDocument documentJSON = QJsonDocument::fromJson(json);
99 qDebug() << Q_FUNC_INFO << json;
100 if(!documentJSON.isNull())
102 QJsonObject objetJSON = documentJSON.object();
103 QStringList listeCles = objetJSON.keys();
105 for(
int i = 0; i < listeCles.count()-1; i++)
107 if(listeCles.at(i) ==
"dev_id")
111 if(listeCles.at(i) ==
"metadata")
115 if(listeCles.at(i) ==
"payload_fields")
117 QJsonObject objet = objetJSON[listeCles.at(i)].toObject();
119 if(objet.contains(
"temperatureInt"))
123 if(objet.contains(
"temperatureExt"))
127 if(objet.contains(
"humiditeInt"))
131 if(objet.contains(
"humiditeExt"))
135 if(objet.contains(
"ensoleillement"))
139 if(objet.contains(
"pression"))
143 if(objet.contains(
"poids"))
147 if(objet.contains(
"charge"))
164 return objetJSON.value(QString(
"time")).toString();
177 return objetJSON[listeCles.at(position)].toString();
188 return objetJSON.value(QString(
"temperatureInt")).toDouble();
199 return objetJSON.value(QString(
"temperatureExt")).toDouble();
210 return objetJSON.value(QString(
"humiditeInt")).toDouble();
221 return objetJSON.value(QString(
"humiditeExt")).toDouble();
231 return objetJSON.value(QString(
"ensoleillement")).toInt();
242 return objetJSON.value(QString(
"pression")).toInt();
253 return objetJSON.value(QString(
"poids")).toDouble();
264 return objetJSON.value(QString(
"charge")).toInt();
275 QDateTime horodatage = QDateTime::fromString(horodatageBrut, Qt::ISODate).toLocalTime();
276 return horodatage.toString(
"dd/MM/yyyy HH:mm:ss");
288 message =
"Déconnecté";
291 message =
"En cours de connexion";
294 message =
"Connecté";
297 qDebug()<< Q_FUNC_INFO <<
client->state() << message;
Déclaration de la classe Communication.
int extraireEnsoleillement(QJsonObject objetJSON)
Méthode pour extraire l'ensoleillement de l'objet JSON.
void nouvelleValeurPression(QString nomDeLaRuche, int pression, QString horodatage)
double extraireTemperatureInterieure(QJsonObject objetJSON)
Méthode pour extraire la température intérieure de l'objet JSON.
void changerEtatConnexion()
Méthode pour notifier un changement d'état de la connexion TTN.
double extraireHumiditeExterieure(QJsonObject objetJSON)
Méthode pour extraire l'humidité extérieure de l'objet JSON.
void nouvelleValeurTemperatureExterieure(QString nomDeLaRuche, double temperatureExterieure, QString horodatage)
~Communication()
Destructeur de la classe Communication.
void nouvelleValeurCharge(QString nomDeLaRuche, int charge, QString horodatage)
QString extraireDeviceID(QJsonObject objetJSON, QStringList listeCles, int position)
Méthode pour extraire le device ID de l'objet JSON.
void nouvelleValeurPoids(QString nomDeLaRuche, double poids, QString horodatage)
void desabonnerTopic(QString topic)
Méthode pour se désabonner d'un topic TTN.
int extraireCharge(QJsonObject objetJSON)
Méthode pour extraire la charge de la batterie le l'objet JSON.
QMqttSubscription * subscription
void souscrireTopic(QString topic)
Méthode pour s'abonner à un topic TTN.
QString formaterHorodatage(QString horodatageBrut)
Méthode pour mettre dans le bon format l'horodatage reçu.
void decoderJson(const QByteArray &json)
Méthode pour décoder le JSON reçu.
void nouvelleValeurHumiditeExterieure(QString nomDeLaRuche, double humiditeExterieure, QString horodatage)
int extrairePression(QJsonObject objetJSON)
Méthode pour extraire la pression de l'objet JSON.
void connecterTTN(QString hostname, int port, QString username, QString password)
Méthode pour se connecter à TTN.
Déclaration de la classe Ihm.
void nouvelleValeurEnsoleillement(QString nomDeLaRuche, int ensoleillement, QString horodatage)
QString extraireHorodatage(QJsonObject objetJSON)
Méthode pour extraire le temps de l'objet JSON.
double extrairePoids(QJsonObject objetJSON)
Méthode pour extraire le poids le l'objet JSON.
void nouvelleValeurTemperatureInterieure(QString nomDeLaRuche, double temperatureInterieure, QString horodatage)
double extraireHumiditeInterieure(QJsonObject objetJSON)
Méthode pour extraire l'humidité intérieure de l'objet JSON.
double extraireTemperatureExterieure(QJsonObject objetJSON)
Méthode pour extraire la température extérieure de l'objet JSON.
Communication(QObject *parent=nullptr)
Constructeur de la classe Communication.
void nouvelleValeurHumiditeInterieure(QString nomDeLaRuche, double humiditeInterieure, QString horodatage)
void nouvelEtatConnexion(int etat)