Projet Bee-Honey't  0.2
BTS SNIR LaSalle Avignon 2020
ihm.cpp
Aller à la documentation de ce fichier.
1 #include "ihm.h"
2 #include "ui_ihm.h"
3 #include "nouvelleruche.h"
4 #include "reglageruche.h"
5 #include "communication.h"
6 #include "configuration.h"
7 
20 Ihm::Ihm(QWidget *parent) :QMainWindow(parent),ui(new Ui::ihm),ihmNouvelleRuche(new IHMNouvelleRuche),ihmReglageRuche(new IHMReglageRuche()), iconeEtatSysteme(new QSystemTrayIcon(this)), communication(new Communication(this)), configuration(new Configuration(this))
21 {
22  ui->setupUi(this);
23  qDebug() << Q_FUNC_INFO;
24 
27 
31 
32  demarrerTTN();
33 
34  showMaximized();
35 }
36 
41 {
42  delete ihmNouvelleRuche;
43  delete ihmReglageRuche;
44  delete ui;
45  qDebug() << Q_FUNC_INFO;
46 }
47 
52 {
53  ui->stackedWidget->setCurrentIndex(PagesIHM::PAGE_ACCUEIL);
55 }
56 
61 {
62  ui->stackedWidget->setCurrentIndex(PagesIHM::PAGE_VUE_GLOBALE);
64 }
65 
70 {
71  ui->stackedWidget->setCurrentIndex(PagesIHM::PAGE_GRAPHIQUES);
73 }
74 
79 {
80  ui->stackedWidget->setCurrentIndex(PagesIHM::PAGE_ALERTES);
82 }
83 
88 {
90  ui->stackedWidget->setCurrentIndex(PagesIHM::PAGE_REGLAGES_TTN);
92 }
93 
100 {
101  if(page == PagesIHM::PAGE_ACCUEIL)
102  {
103  ui->pushButton_ruches->setStyleSheet("background:#666666;");
104  ui->pushButton_mesures->setStyleSheet("");
105  ui->pushButton_graphiques->setStyleSheet("");
106  ui->pushButton_alertes->setStyleSheet("");
107  ui->pushButton_reglage_ttn->setStyleSheet("");
108  }
109  if(page == PagesIHM::PAGE_VUE_GLOBALE)
110  {
111  ui->pushButton_ruches->setStyleSheet("");
112  ui->pushButton_mesures->setStyleSheet("background:#666666;");
113  ui->pushButton_graphiques->setStyleSheet("");
114  ui->pushButton_alertes->setStyleSheet("");
115  ui->pushButton_reglage_ttn->setStyleSheet("");
116  }
117  if(page == PagesIHM::PAGE_GRAPHIQUES)
118  {
119  ui->pushButton_ruches->setStyleSheet("");
120  ui->pushButton_mesures->setStyleSheet("");
121  ui->pushButton_graphiques->setStyleSheet("background:#666666;");
122  ui->pushButton_alertes->setStyleSheet("");
123  ui->pushButton_reglage_ttn->setStyleSheet("");
124  }
125  if(page == PagesIHM::PAGE_ALERTES)
126  {
127  ui->pushButton_ruches->setStyleSheet("");
128  ui->pushButton_mesures->setStyleSheet("");
129  ui->pushButton_graphiques->setStyleSheet("");
130  ui->pushButton_alertes->setStyleSheet("background:#666666;");
131  ui->pushButton_reglage_ttn->setStyleSheet("");
132  }
133  if(page == PagesIHM::PAGE_REGLAGES_TTN)
134  {
135  ui->pushButton_ruches->setStyleSheet("");
136  ui->pushButton_mesures->setStyleSheet("");
137  ui->pushButton_graphiques->setStyleSheet("");
138  ui->pushButton_alertes->setStyleSheet("");
139  ui->pushButton_reglage_ttn->setStyleSheet("background:#666666;");
140  }
141 }
142 
147 {
148  communication->connecterTTN(ui->lineEdit_host->text(), ui->spinBox_port->value(), ui->lineEdit_username->text(), ui->lineEdit_password->text());
149 }
150 
155 {
156  ihmNouvelleRuche->exec();
157 }
158 
163 {
164  if(ui->comboBox_liste_ruches->currentText() == nullptr)
165  {
166  QMessageBox::warning(this,"Erreur","Il n'y a pas de ruche.");
167  qDebug() << Q_FUNC_INFO << "Il n'y a pas de ruche.";
168  }
169  else
170  {
171  ihmReglageRuche->recupererInfoRuche(ui->comboBox_liste_ruches->currentText());
172  ihmReglageRuche->exec();
173  }
174 }
175 
180 {
181  if(ui->comboBox_liste_ruches->currentText() == nullptr | ui->comboBox_liste_ruches->currentText() == "Nom de la ruche")
182  {
183  QMessageBox::warning(this,"Erreur","Il n'y a pas de ruche.");
184  qDebug() << Q_FUNC_INFO << "Il n'y a pas de ruche.";
185  }
186  else
187  {
188  QMessageBox::StandardButton reponse;
189  QString nom_ruche = ui->comboBox_liste_ruches->currentText();
190  QString question = "Êtes-vous sûr de vouloir supprimer la ruche '" + nom_ruche + "' ?";
191  reponse = QMessageBox::question(this,"",question,QMessageBox::Yes|QMessageBox::No);
192 
193  if(reponse == QMessageBox::Yes)
194  {
195  qDebug() << Q_FUNC_INFO << "reponse : Oui";
196  communication->desabonnerTopic(ruches[ui->comboBox_liste_ruches->currentIndex()].topicTTN);
197  ruches.remove(ui->comboBox_liste_ruches->currentIndex());
199  ui->comboBox_liste_ruches->removeItem(ui->comboBox_liste_ruches->currentIndex());
200  }
201  else
202  {
203  qDebug() << Q_FUNC_INFO << "reponse : Non";
204  }
205  }
206 }
207 
212 {
218  //initialiserGraphiqueActivite();
219 
220  qDebug() << Q_FUNC_INFO;
221 }
222 
227 {
228  temperatureInterieure = new QLineSeries();
229  temperatureInterieure->setName("Intérieure");
230  temperatureInterieure->setPointsVisible(true);
231 
232  temperatureExterieure = new QLineSeries();
233  temperatureExterieure->setName("Extérieure");
234  temperatureExterieure->setPointsVisible(true);
235 
236  /* Valeurs de test
237  temperatureExterieure->append(0, 35);
238  temperatureExterieure->append(1, 37);
239  temperatureExterieure->append(2, 35);
240  temperatureExterieure->append(3, 34);
241  temperatureExterieure->append(4, 31);*/
242 
243  QChart *chart = new QChart();
244  chart->legend()->show();
245  chart->addSeries(temperatureInterieure);
246  chart->addSeries(temperatureExterieure);
247 
248  chart->createDefaultAxes();
249  chart->setTitle("Températures");
250  ui->chartView_temperature->setChart(chart);
251  ui->chartView_temperature->setRenderHint(QPainter::Antialiasing);
252 
256  QDateTimeAxis *axisX = new QDateTimeAxis();
257  axisX->setTickCount(7);
258  axisX->setFormat("dd/MM");
259  axisX->setTitleText("Jours");
260  // ou :
261  //axisX->setTickCount(10);
262  //axisX->setFormat("hh:mm");
263  //axisX->setTitleText("Heure");
264  axisX->setMin(QDateTime::currentDateTime().addDays(-3));
265  axisX->setMax(QDateTime::currentDateTime().addDays(3));
266 
267  QValueAxis *axisY = new QValueAxis();
268  axisY->setTitleText("°C");
269  axisY->setTickCount((((AXE_TEMPERATURE_MAX - (AXE_TEMPERATURE_MIN))*2)/10)+1);
270  axisY->setMin(AXE_TEMPERATURE_MIN);
271  axisY->setMax(AXE_TEMPERATURE_MAX);
272 
273  chart->setAxisY(axisY);
274  chart->setAxisX(axisX);
275 }
276 
281 {
282  humidite = new QLineSeries();
283  /* Valeurs de test
284  humidite->append(0, 27);
285  humidite->append(1, 26);
286  humidite->append(2, 28);
287  humidite->append(3, 31);
288  humidite->append(4, 24);*/
289 
290  QChart *chart = new QChart();
291  chart->legend()->hide();
292  chart->addSeries(humidite);
293  chart->setTitle("Humidité");
294  ui->chartView_humidite->setChart(chart);
295  ui->chartView_humidite->setRenderHint(QPainter::Antialiasing);
296 
297  QDateTimeAxis *axisX = new QDateTimeAxis();
298  axisX->setTickCount(7);
299  axisX->setFormat("dd/MM");
300  axisX->setTitleText("Jours");
301  // ou :
302  //axisX->setTickCount(10);
303  //axisX->setFormat("hh:mm");
304  //axisX->setTitleText("Heure");
305  axisX->setMin(QDateTime::currentDateTime().addDays(-3));
306  axisX->setMax(QDateTime::currentDateTime().addDays(3));
307 
308  QValueAxis *axisY = new QValueAxis();
309  axisY->setTitleText("%");
310  axisY->setTickCount((((AXE_TEMPERATURE_MAX - (AXE_TEMPERATURE_MIN))*2)/10)+1);
311  axisY->setMin(AXE_TEMPERATURE_MIN);
312  axisY->setMax(AXE_TEMPERATURE_MAX);
313 
314  chart->setAxisY(axisY);
315  chart->setAxisX(axisX);
316 }
317 
322 {
323  ensoleillement = new QLineSeries();
324 
325  QChart *chart = new QChart();
326  chart->legend()->hide();
327  chart->addSeries(ensoleillement);
328  chart->setTitle("Ensoleillement");
329  ensoleillement->setPointsVisible(true);
330  ui->chartView_ensoleillement->setChart(chart);
331  ui->chartView_ensoleillement->setRenderHint(QPainter::Antialiasing);
332 
333  QDateTimeAxis *axisX = new QDateTimeAxis();
334  axisX->setTickCount(24);
335  axisX->setFormat("hh");
336  axisX->setTitleText("Heure");
337  QDateTime qdatetime;
338  qint64 msDepuisEpochMin = qdatetime.currentSecsSinceEpoch() - 43200;
339  qint64 msDepuisEpochMax = qdatetime.currentSecsSinceEpoch() + 43200;
340 
341  qDebug() << msDepuisEpochMin << msDepuisEpochMax;
342 
343  //axisX->setMin(qdatetime.fromSecsSinceEpoch(msDepuisEpochMin));
344  //axisX->setMax(qdatetime.fromSecsSinceEpoch(msDepuisEpochMax));
345 
346  QValueAxis *axisY = new QValueAxis();
347  axisY->setTitleText("lux");
348  axisY->setMin(0);
349  axisY->setMax(500);
350 
351  ensoleillement->attachAxis(axisX);
352  ensoleillement->attachAxis(axisY);
353 
354  chart->addAxis(axisX, Qt::AlignBottom);
355  chart->addAxis(axisY, Qt::AlignLeft);
356  //chart->setAxisY(axisY);
357  //chart->setAxisX(axisX);
358 
359  chart->show();
360 }
361 
366 {
367  pression = new QLineSeries();
368  // Valeurs de test
369  pression->append(0, 321);
370  pression->append(1, 354);
371  pression->append(2, 396);
372  pression->append(3, 348);
373  pression->append(4, 240);
374 
375  QChart *chart = new QChart();
376  chart->legend()->hide();
377  chart->addSeries(pression);
378  chart->setTitle("Pression");
379  ui->chartView_pression->setChart(chart);
380  ui->chartView_pression->setRenderHint(QPainter::Antialiasing);
381 
382  QDateTimeAxis *axisX = new QDateTimeAxis();
383  axisX->setTickCount(7);
384  axisX->setFormat("dd/MM");
385  axisX->setTitleText("Jours");
386  // ou :
387  //axisX->setTickCount(10);
388  //axisX->setFormat("hh:mm");
389  //axisX->setTitleText("Heure");
390 
391  axisX->setMin(QDateTime::currentDateTime().addDays(-3));
392  axisX->setMax(QDateTime::currentDateTime().addDays(3));
393 
394  QValueAxis *axisY = new QValueAxis();
395  axisY->setTitleText("hPa");
396  axisY->setMin(0);
397  axisY->setMax(500);
398 
399  chart->setAxisY(axisY);
400  chart->setAxisX(axisX);
401 }
402 
407 {
408  poids = new QLineSeries();
409  // Valeurs de test
410  poids->append(0, 321);
411  poids->append(1, 354);
412  poids->append(2, 396);
413  poids->append(3, 348);
414  poids->append(4, 240);
415 
416  QChart *chart = new QChart();
417  chart->legend()->hide();
418  chart->addSeries(poids);
419  chart->setTitle("Poids");
420  ui->chartView_poids->setChart(chart);
421  ui->chartView_poids->setRenderHint(QPainter::Antialiasing);
422 
423  QDateTimeAxis *axisX = new QDateTimeAxis();
424  axisX->setTickCount(7);
425  axisX->setFormat("dd/MM");
426  axisX->setTitleText("Jours");
427  // ou :
428  //axisX->setTickCount(10);
429  //axisX->setFormat("hh:mm");
430  //axisX->setTitleText("Heure");
431 
432  axisX->setMin(QDateTime::currentDateTime().addDays(-3));
433  axisX->setMax(QDateTime::currentDateTime().addDays(3));
434 
435  QValueAxis *axisY = new QValueAxis();
436  axisY->setTitleText("Kg");
437  axisY->setMin(0);
438  axisY->setMax(500);
439 
440  chart->setAxisY(axisY);
441  chart->setAxisX(axisX);
442 }
443 
448 {
449  switch(ui->comboBox_reglages_graphiques->currentIndex())
450  {
451  case 0:
452  qDebug() << Q_FUNC_INFO << "reponse : 1j";
453  //axisX->setTickCount(10);
454  //axisX->setFormat("hh:mm");
455  //axisX->setTitleText("Heure");
456  break;
457  case 1:
458  qDebug() << Q_FUNC_INFO << "reponse : 7j";
459  //axisX->setTickCount(7);
460  //axisX->setFormat("dd/MM");
461  //axisX->setTitleText("Jours");
462  break;
463  default:
464  qDebug() << Q_FUNC_INFO << ui->comboBox_reglages_graphiques->currentIndex();
465  }
466 }
467 
472 {
473  switch(ui->comboBox_donnees_affiche->currentIndex())
474  {
475  case 0:
476  qDebug() << Q_FUNC_INFO << "Temperature";
477  break;
478  case 1:
479  qDebug() << Q_FUNC_INFO << "Humidité";
480  break;
481  default:
482  qDebug() << Q_FUNC_INFO << ui->comboBox_reglages_graphiques->currentIndex();
483  }
484 }
485 
492 {
493  switch(etat)
494  {
495  case 0:
496  ui->label_etat_connexion->setPixmap(QPixmap(":/off.png"));
497  ui->pushButton_connexion_ttn->setText("Connecter");
498  break;
499  case 1:
500  ui->label_etat_connexion->setPixmap(QPixmap(":/connexion.png"));
501  break;
502  case 2:
503  ui->label_etat_connexion->setPixmap(QPixmap(":/on.png"));
504  ui->pushButton_connexion_ttn->setText("Déconnecter");
505  connecterRuches();
506  break;
507  }
508 }
509 
515 void Ihm::closeEvent(QCloseEvent *event)
516 {
517  if (iconeEtatSysteme->isVisible())
518  {
519  QMessageBox::information(this, NOM_APPLICATION, "Utiliser le menu Quitter pour mettre fin à l'application.");
520  hide();
521  event->ignore();
522  }
523 }
524 
529 {
530  ui->pushButton_ruches->setIcon(QIcon(":/ruche.png"));
531  ui->pushButton_graphiques->setIcon(QIcon(":/graphiques.png"));
532  ui->pushButton_alertes->setIcon(QIcon(":/alertes.png"));
533  ui->pushButton_reglage_ttn->setIcon(QIcon(":/reglages.png"));
534  ui->pushButton_mesures->setIcon(QIcon(":/vue_globale.png"));
535 }
536 
541 {
542  this->setWindowTitle(NOM_APPLICATION);
543  ui->label_version->setText(VERSION_APPLICATION);
544 
545  ui->comboBox_liste_ruches->addItem("Nom de la ruche");
546 
547  ui->comboBox_reglages_graphiques->addItem("1 jour");
548  ui->comboBox_reglages_graphiques->addItem("7 jours");
549 
550  ui->comboBox_donnees_affiche->addItem("Température");
551  ui->comboBox_donnees_affiche->addItem("Humidité");
552 }
553 
558 {
559  connect(ui->comboBox_reglages_graphiques, SIGNAL(currentIndexChanged(int)), SLOT(changerAbscisseGraphiques()));
560  connect(ui->comboBox_donnees_affiche, SIGNAL(currentIndexChanged(int)), SLOT(changerDonneesVueGlobale()));
561 
562  // Configuration
563  connect(this, SIGNAL(sauvegarderConfigurationTTN(QString,int,QString,QString)), configuration, SLOT(setConfigurationTTN(QString,int,QString,QString)));
564 
565  // Ajouter une nouvelle ruche
566  connect(ihmNouvelleRuche, SIGNAL(nouvelleRuche(Ruche)), this, SLOT(ajouterNouvelleRuche(Ruche)));
567 
568  // Afficher valeur reçue TTN
569  connect(communication, SIGNAL(nouvelleValeurTemperatureInterieure(QString,double,QString)), this, SLOT(setValeurTemperatureInterieure(QString,double,QString)));
570  connect(communication, SIGNAL(nouvelleValeurTemperatureExterieure(QString,double,QString)), this, SLOT(setValeurTemperatureExterieure(QString,double,QString)));
571 
572  connect(communication, SIGNAL(nouvelleValeurHumiditeInterieure(QString,double,QString)), this, SLOT(setValeurHumiditeInterieure(QString,double,QString)));
573  connect(communication, SIGNAL(nouvelleValeurHumiditeExterieure(QString,double,QString)), this, SLOT(setValeurHumiditeExterieure(QString,double,QString)));
574 
575  connect(communication, SIGNAL(nouvelleValeurEnsoleillement(QString,int,QString)), this, SLOT(setValeurEnsoleillement(QString,int,QString)));
576  connect(communication, SIGNAL(nouvelleValeurPression(QString,int,QString)), this, SLOT(setValeurPression(QString,int,QString)));
577  connect(communication, SIGNAL(nouvelleValeurPoids(QString,double,QString)), this, SLOT(setValeurPoids(QString,double,QString)));
578  connect(communication, SIGNAL(nouvelleValeurCharge(QString,int,QString)), this, SLOT(setValeurCharge(QString,int,QString)));
579 
580  // Communication
581  connect(communication, SIGNAL(nouvelEtatConnexion(int)), this, SLOT(changerEtatConnexion(int)));
582 }
583 
588 {
589  // Crée les actions pour l'application
590  QAction *actionMinimiser = new QAction(QString::fromUtf8("Minimiser"), this);
591  QAction *actionMaximiser = new QAction(QString::fromUtf8("Maximiser"), this);
592  QAction *actionRestaurer = new QAction(QString::fromUtf8("Restaurer"), this);
593  QAction *actionQuitter = new QAction(QString::fromUtf8("&Quitter"), this);
594 
595  // Connecte les actions
596  connect(actionMinimiser, SIGNAL(triggered(bool)), this, SLOT(hide()));
597  connect(actionMaximiser, SIGNAL(triggered(bool)), this, SLOT(showMaximized()));
598  connect(actionRestaurer, SIGNAL(triggered(bool)), this, SLOT(showNormal()));
599  connect(actionQuitter, SIGNAL(triggered(bool)), qApp, SLOT(quit()));
600 
601  // Crée le menu pour l'entrée dans la barre d'état système
602  QMenu * menuEtatSysteme = new QMenu(this);
603  menuEtatSysteme->addAction(actionMinimiser);
604  menuEtatSysteme->addAction(actionMaximiser);
605  menuEtatSysteme->addAction(actionRestaurer);
606  menuEtatSysteme->addSeparator();
607  menuEtatSysteme->addAction(actionQuitter);
608 
609  // Crée l'entrée pour la barre d'état système
610  iconeEtatSysteme->setContextMenu(menuEtatSysteme);
611  iconeEtatSysteme->setToolTip(NOM_APPLICATION);
612  // Crée l'icône pour la barre d'état système
613  QIcon iconeRuche(":/ruche.png");
614  iconeEtatSysteme->setIcon(iconeRuche);
615  setWindowIcon(iconeRuche);
616 
617  iconeEtatSysteme->show();
618 }
619 
625 void Ihm::setValeurTemperatureInterieure(QString nomDeLaRuche, double temperatureInterieure, QString horodatage)
626 {
627  if(ruches[ui->comboBox_liste_ruches->currentIndex()].topicTTN.contains(nomDeLaRuche))
628  {
629  ui->lcdNumber_temperature_interieure->display(temperatureInterieure);
630  QString temps = horodatage;
631  ui->label_maj_temp_int->setText(temps);
632  }
636  QPointF mesure(mesuresTemperatureInterieure.size(), temperatureInterieure);
637  mesuresTemperatureInterieure.push_back(mesure);
638  qDebug() << Q_FUNC_INFO << nomDeLaRuche << "Nouvelle température intérieure :" << temperatureInterieure;
639 }
640 
648 void Ihm::setValeurTemperatureExterieure(QString nomDeLaRuche, double temperatureExterieure, QString horodatage)
649 {
650  if(ruches[ui->comboBox_liste_ruches->currentIndex()].topicTTN.contains(nomDeLaRuche))
651  {
652  ui->lcdNumber_temperature_exterieure->display(temperatureExterieure);
653  QString temps = horodatage;
654  ui->label_maj_temp_ext->setText(temps);
655  }
656  QPointF mesure(mesuresTemperatureExterieure.size(), temperatureExterieure);
657  mesuresTemperatureExterieure.push_back(mesure);
658  qDebug() << Q_FUNC_INFO << nomDeLaRuche << "Nouvelle température extérieure :" << temperatureExterieure;
659 }
660 
661 
669 void Ihm::setValeurHumiditeInterieure(QString nomDeLaRuche, double humidite, QString horodatage)
670 {
671  if(ruches[ui->comboBox_liste_ruches->currentIndex()].topicTTN.contains(nomDeLaRuche))
672  {
673  ui->lcdNumber_humidite_interieure->display(humidite);
674  QString temps = horodatage;
675  ui->label_maj_humidite_interieure->setText(temps);
676  }
677  QPointF mesure(mesuresHumidite.size(), humidite);
678  mesuresHumidite.push_back(mesure);
679  qDebug() << Q_FUNC_INFO << nomDeLaRuche << "Nouvelle humidité intérieure:" << humidite;
680 }
681 
689 void Ihm::setValeurHumiditeExterieure(QString nomDeLaRuche, double humidite, QString horodatage)
690 {
691  if(ruches[ui->comboBox_liste_ruches->currentIndex()].topicTTN.contains(nomDeLaRuche))
692  {
693  ui->lcdNumber_humidite_exterieure->display(humidite);
694  QString temps = horodatage;
695  ui->label_maj_humidite_exterieure->setText(temps);
696  }
697  QPointF mesure(mesuresHumidite.size(), humidite);
698  mesuresHumidite.push_back(mesure);
699  qDebug() << Q_FUNC_INFO << nomDeLaRuche << "Nouvelle humidité extérieure:" << humidite;
700 }
701 
709 void Ihm::setValeurEnsoleillement(QString nomDeLaRuche, int ensoleillement, QString horodatage)
710 {
711  if(ruches[ui->comboBox_liste_ruches->currentIndex()].topicTTN.contains(nomDeLaRuche))
712  {
713  ui->lcdNumber_ensoleillement->display(ensoleillement);
714  QString temps = horodatage;
715  ui->label_maj_ensoleillement->setText(temps);
716  }
717  QDateTime qdatetime;
718  qint64 msDepuisEpoch;
719  msDepuisEpoch = qdatetime.currentSecsSinceEpoch();
720  QPointF mesure(msDepuisEpoch, ensoleillement);
721  mesuresEnsoleillement.push_back(mesure);
722  qDebug() << Q_FUNC_INFO << nomDeLaRuche << "Nouvelle ensoleillement :" << ensoleillement;
723  qDebug() << mesuresEnsoleillement.size();
724  for(int i=0;i<mesuresEnsoleillement.size();i++)
725  qDebug() << mesuresEnsoleillement[i];
727 }
728 
736 void Ihm::setValeurPression(QString nomDeLaRuche, int pression, QString horodatage)
737 {
738  if(ruches[ui->comboBox_liste_ruches->currentIndex()].topicTTN.contains(nomDeLaRuche))
739  {
740  ui->lcdNumber_pression->display(pression);
741  QString temps = horodatage;
742  ui->label_maj_pression->setText(temps);
743  }
744  QPointF mesure(mesuresPression.size(), pression);
745  mesuresPression.push_back(mesure);
746  qDebug() << Q_FUNC_INFO << nomDeLaRuche << "Nouvelle pression :" << pression;
747 }
748 
756 void Ihm::setValeurPoids(QString nomDeLaRuche, double poids, QString horodatage)
757 {
758  //poids = poids*0.001; // valeur à un dixième
759  if(ruches[ui->comboBox_liste_ruches->currentIndex()].topicTTN.contains(nomDeLaRuche))
760  {
761  ui->lcdNumber_poids->display(poids);
762  QString temps = horodatage;
763  ui->label_maj_poids->setText(temps);
764  }
765  QPointF mesure(mesuresPoids.size(), poids);
766  mesuresPoids.push_back(mesure);
767  qDebug() << Q_FUNC_INFO << nomDeLaRuche << "Nouveau poids :" << poids;
768 }
769 
777 void Ihm::setValeurCharge(QString nomDeLaRuche, int charge, QString horodatage)
778 {
779  if(ruches[ui->comboBox_liste_ruches->currentIndex()].topicTTN.contains(nomDeLaRuche))
780  {
781  ui->lcdNumber_charge->display(charge);
782  QString temps = horodatage;
783  ui->label_maj_charge->setText(temps);
784  }
785  QPointF mesure(mesuresCharge.size(), charge);
786  mesuresCharge.push_back(mesure);
787  qDebug() << Q_FUNC_INFO << nomDeLaRuche << "Nouvelle charge :" << charge;
788 }
789 
794 {
795  emit sauvegarderConfigurationTTN(ui->lineEdit_host->text(), ui->spinBox_port->value(), ui->lineEdit_username->text(), ui->lineEdit_password->text());
796 }
797 
804 {
805  qDebug() << Q_FUNC_INFO << ruche.nom << ruche.topicTTN;
806  if(ui->comboBox_liste_ruches->currentText() == "Nom de la ruche")
807  ui->comboBox_liste_ruches->clear();
808  ui->comboBox_liste_ruches->addItem(ruche.nom);
810  ruches.push_back(ruche);
812 }
813 
818 {
819  ConfigurationTTN configurationTTN = configuration->getConfigurationTTN();
820  ui->lineEdit_host->setText(configurationTTN.hostname);
821  ui->spinBox_port->setValue(configurationTTN.port);
822  ui->lineEdit_username->setText(configurationTTN.username);
823  ui->lineEdit_password->setText(configurationTTN.password);
824 
826 }
827 
832 {
833  ConfigurationTTN configurationTTN = configuration->getConfigurationTTN();
834  communication->connecterTTN(configurationTTN.hostname, configurationTTN.port, configurationTTN.username, configurationTTN.password);
835 }
836 
841 {
842  qDebug() << Q_FUNC_INFO << ruches.size();
843  if(ruches.size() > 0)
844  ui->comboBox_liste_ruches->clear();
845  for(int i = 0; i < ruches.size(); i++)
846  {
847  qDebug() << Q_FUNC_INFO << ruches[i].nom << ruches[i].topicTTN;
848  communication->souscrireTopic(ruches[i].topicTTN);
849  ui->comboBox_liste_ruches->addItem(ruches[i].nom);
850  }
851 }
852 
857 {
858  temperatureInterieure->clear();
859  for(int i=0;i<mesuresTemperatureInterieure.size();i++)
861 }
862 
867 {
868  temperatureExterieure->clear();
869  for(int i=0;i<mesuresTemperatureExterieure.size();i++)
871 }
872 
877 {
878  humidite->clear();
879  for(int i=0;i<mesuresHumidite.size();i++)
880  humidite->append(mesuresHumidite[i]);
881 }
882 
887 {
888  //ensoleillement->clear();
889  ensoleillement->setPointsVisible(true);
890  ensoleillement->setVisible(true);
891  ensoleillement->show();
892  for(int i=0;i<mesuresEnsoleillement.size();i++)
893  {
895  qDebug() << Q_FUNC_INFO << mesuresEnsoleillement[i];
896  }
897 
898  qDebug() << Q_FUNC_INFO << "Nouvelle valeur sur le graphique d'ensoleillement";
899 }
900 
905 {
906  pression->clear();
907  for(int i=0;i<mesuresPression.size();i++)
908  pression->append(mesuresPression[i]);
909 }
910 
915 {
916  poids->clear();
917  for(int i=0;i<mesuresPoids.size();i++)
918  poids->append(mesuresPoids[i]);
919 }
920 
922 {
923  return ui->comboBox_liste_ruches->currentText();
924 }
void afficherGraphiqueHumidite()
Méthode qui met à jour les mesures de l&#39;humidité dans le graphique associée.
Definition: ihm.cpp:876
Configuration * configuration
association vers la classe Configuration
Definition: ihm.h:111
void on_pushButton_ruches_clicked()
Bouton/icône affichant l&#39;onglet des données de la ruche selectionné
Definition: ihm.cpp:51
void setValeurPoids(QString nomDeLaRuche, double poids, QString horodatage)
Méthode pour définir le poids dans l&#39;IHM.
Definition: ihm.cpp:756
Déclaration de la classe Communication.
void setValeurTemperatureInterieure(QString nomDeLaRuche, double temperatureInterieure, QString horodatage)
Méthode pour définir la température intérieure dans l&#39;IHM.
Definition: ihm.cpp:625
QVector< QPointF > mesuresPression
Les mesures pour la courbe de la pression.
Definition: ihm.h:127
Communication * communication
association vers la classe Communication
Definition: ihm.h:110
void on_pushButton_supprimer_ruche_clicked()
Bouton qui permet de supprimer la ruche selectionné
Definition: ihm.cpp:179
QLineSeries * poids
La courbe du poids.
Definition: ihm.h:129
Page des graphiques.
Definition: ihm.h:32
Déclaration de la classe IHMReglageRuche.
void setValeurCharge(QString nomDeLaRuche, int charge, QString horodatage)
Méthode pour définir la charge dans l&#39;IHM.
Definition: ihm.cpp:777
QLineSeries * charge
La courbe de la charge.
Definition: ihm.h:132
PagesIHM
Définit les numéros de page de l&#39;IHM.
Definition: ihm.h:28
void ajouterNouvelleRuche(Ruche ruche)
Méthode pour ajouter une nouvelle ruche.
Definition: ihm.cpp:803
void setValeurTemperatureExterieure(QString nomDeLaRuche, double temperatureExterieure, QString horodatage)
Méthode pour définir la température extérieure dans l&#39;IHM.
Definition: ihm.cpp:648
QVector< Ruche > getRuches() const
Méthode pour récupérer une ruche.
QString getNomRuche()
Definition: ihm.cpp:921
Page des réglages de TTN.
Definition: ihm.h:34
void on_pushButton_nouvelle_ruche_clicked()
Bouton qui permet d&#39;ouvrir la fenêtre de création du nouvelle ruche.
Definition: ihm.cpp:154
void setValeurHumiditeExterieure(QString nomDeLaRuche, double humiditeInterieure, QString horodatage)
Méthode pour définir l&#39;humidite dans l&#39;IHM.
Definition: ihm.cpp:689
Definition: ihm.h:42
void chargerConfiguration()
Méthode pour charger la configuration TTN.
Definition: ihm.cpp:817
QVector< QPointF > mesuresEnsoleillement
Les mesures pour la courbe de l&#39;ensoleillement.
Definition: ihm.h:124
void on_pushButton_connexion_ttn_clicked()
Bouton qui permet de démarrer la connexion avec TTN.
Definition: ihm.cpp:146
ConfigurationTTN getConfigurationTTN() const
Méthode pour récupérer la configuration TTN.
QVector< Ruche > ruches
les ruches
Definition: ihm.h:112
void setValeurHumiditeInterieure(QString nomDeLaRuche, double humiditeExterieure, QString horodatage)
Méthode pour définir l&#39;humidite dans l&#39;IHM.
Definition: ihm.cpp:669
Page principale.
Definition: ihm.h:30
void setValeurPression(QString nomDeLaRuche, int pression, QString horodatage)
Méthode pour définir la pression dans l&#39;IHM.
Definition: ihm.cpp:736
void initialiserEntreeBarreEtatSysteme()
Initialise l&#39;entrée dans la barre d&#39;état du système.
Definition: ihm.cpp:587
La fenêtre pour changer les réglages de la ruche.
Definition: reglageruche.h:27
void initialiserEvenements()
Assure la connexion signal/slot.
Definition: ihm.cpp:557
void desabonnerTopic(QString topic)
Méthode pour se désabonner d&#39;un topic TTN.
void initialiserGraphiqueTemperatures()
Méthode qui initialise le graphique des températures.
Definition: ihm.cpp:226
void initialiserWidgets()
Initialise les différents widgets de l&#39;IHM.
Definition: ihm.cpp:540
void setRuches(QVector< Ruche > ruches)
Méthode pour définir une ruche.
QLineSeries * temperatureInterieure
La courbe de la température intérieure.
Definition: ihm.h:114
void initialiserGraphiquePression()
Méthode qui initialise le graphique de la pression.
Definition: ihm.cpp:365
void on_pushButton_reglage_clicked()
Bouton qui permet d&#39;ouvrir la fenêtre des réglages de la ruche.
Definition: ihm.cpp:162
void initialiserGraphiqueHumidite()
Méthode qui initialise le graphique d&#39;humidité
Definition: ihm.cpp:280
Page des dernières alertes.
Definition: ihm.h:33
void changerApparenceBouton(PagesIHM)
Méthode pour changer l&#39;apparence des bouton selon le bouton cliqué
Definition: ihm.cpp:99
~Ihm()
Destructeur de la classe Ihm.
Definition: ihm.cpp:40
QString topicTTN
le topic TTN associé à la ruche
Definition: ruche.h:20
QSystemTrayIcon * iconeEtatSysteme
entrée dans la barre d&#39;état du système
Definition: ihm.h:109
Structure qui définit une ruche.
Definition: ruche.h:17
void afficherGraphiquePoids()
Méthode qui met à jour les mesures du poids dans le graphique associée.
Definition: ihm.cpp:914
QLineSeries * temperatureExterieure
La courbe de la température extérieure.
Definition: ihm.h:117
Déclaration de la classe Configuration.
QString username
le compte d&#39;accès TTN
Definition: configuration.h:26
void souscrireTopic(QString topic)
Méthode pour s&#39;abonner à un topic TTN.
void demarrerTTN()
Méthode pour démarrer TTN.
Definition: ihm.cpp:831
void afficherGraphiqueTemperatureExterieure()
Méthode qui met à jour les mesures de la température extérieure dans le graphique associée...
Definition: ihm.cpp:866
#define NOM_APPLICATION
Definition: ihm.h:18
void actualiserGraphiqueEnsoleillement()
Méthode qui met à jour les mesures de l&#39;ensoleillement dans le graphique associée.
Definition: ihm.cpp:886
void on_pushButton_alertes_clicked()
Bouton/icône affichant l&#39;onglet des alertes.
Definition: ihm.cpp:78
QVector< QPointF > mesuresPoids
Les mesures pour la courbe du poids.
Definition: ihm.h:130
void connecterRuches()
Méthode pour s&#39;abonner à un topic.
Definition: ihm.cpp:840
QString password
le mote de passe du compte TTN
Definition: configuration.h:27
void sauvegarderConfigurationTTN(QString hostname, int port, QString username, QString password)
void changerEtatConnexion(int etat)
Change l&#39;état de connexion TTN dans l&#39;IHM.
Definition: ihm.cpp:491
IHMReglageRuche * ihmReglageRuche
association vers l&#39;IHM de réglage d&#39;une ruche
Definition: ihm.h:108
Déclaration de la classe IHMNouvelleRuche.
QLineSeries * humidite
La courbe de l&#39;humidite.
Definition: ihm.h:120
Structure qui définit la configuration MQTT pour se connecter au réseau TheThingsNetwork (TTN) ...
Definition: configuration.h:22
QLineSeries * ensoleillement
La courbe de l&#39;ensoleillement.
Definition: ihm.h:123
void afficherGraphiqueTemperatureInterieure()
Méthode qui met à jour les mesures de la température intérieure dans le graphique associée...
Definition: ihm.cpp:856
void connecterTTN(QString hostname, int port, QString username, QString password)
Méthode pour se connecter à TTN.
void initialiserGraphiques()
Méthode qui initialise les graphiques.
Definition: ihm.cpp:211
void on_pushButton_reglage_ttn_clicked()
Bouton/icône affichant l&#39;onglet des réglages de connexion TTN.
Definition: ihm.cpp:87
int port
le numero de port TTN
Definition: configuration.h:25
Page de la vue globale.
Definition: ihm.h:31
void chargerIconesBoutons()
Méthode pour charger les icônes des boutons.
Definition: ihm.cpp:528
#define AXE_TEMPERATURE_MAX
Definition: ihm.h:22
#define VERSION_APPLICATION
Definition: ihm.h:19
#define AXE_TEMPERATURE_MIN
Definition: ihm.h:21
void changerDonneesVueGlobale()
Méthode permettant de changer la données affiché sur la vue globale.
Definition: ihm.cpp:471
Gère le fichier INI.
Definition: configuration.h:37
void closeEvent(QCloseEvent *event)
Méthode redéfinie qui s&#39;exécute pour chaque évènement reçu par la fenêtre principale.
Definition: ihm.cpp:515
Permet de recevoir les données.
Definition: communication.h:24
Déclaration de la classe Ihm.
QLineSeries * pression
La courbe de la pression.
Definition: ihm.h:126
void recupererInfoRuche(QString)
void changerAbscisseGraphiques()
Méthode qui permet de change l&#39;abscisse des graphiques.
Definition: ihm.cpp:447
QString nom
le nom de la ruche
Definition: ruche.h:19
void afficherGraphiquePression()
Méthode qui met à jour les mesures de la pression dans le graphique associée.
Definition: ihm.cpp:904
void on_pushButton_mesures_clicked()
Bouton/icône affichant l&#39;onglet des mesures.
Definition: ihm.cpp:60
Ui::ihm * ui
interface utilisateur
Definition: ihm.h:106
QVector< QPointF > mesuresTemperatureInterieure
Les mesures pour la courbe de la température intérieure.
Definition: ihm.h:115
void initialiserGraphiqueEnsoleillement()
Méthode qui initialise le graphique de l&#39;ensoleillement.
Definition: ihm.cpp:321
IHMNouvelleRuche * ihmNouvelleRuche
association vers l&#39;IHM de création d&#39;une nouvelle ruche
Definition: ihm.h:107
QString hostname
le nom du serveur TTN
Definition: configuration.h:24
La fenêtre pour créer une nouvelle ruche.
Definition: nouvelleruche.h:30
QVector< QPointF > mesuresHumidite
Les mesures pour la courbe de l&#39;humidité.
Definition: ihm.h:121
void initialiserGraphiquePoids()
Méthode qui initialise le graphique du poids.
Definition: ihm.cpp:406
void setValeurEnsoleillement(QString nomDeLaRuche, int ensoleillement, QString horodatage)
Méthode pour définir l&#39;ensoleillement dans l&#39;IHM.
Definition: ihm.cpp:709
QVector< QPointF > mesuresTemperatureExterieure
Les mesures pour la courbe de la température extérieure.
Definition: ihm.h:118
Ihm(QWidget *parent=nullptr)
Constructeur de la classe Ihm.
Definition: ihm.cpp:20
void on_pushButton_enregistrer_configuration_ttn_clicked()
Bouton pour enregistrer la configuration TTN dans le fichier INI.
Definition: ihm.cpp:793
QVector< QPointF > mesuresCharge
Les mesures pour la courbe de la charge.
Definition: ihm.h:133
void on_pushButton_graphiques_clicked()
Bouton/icône affichant l&#39;onglet des graphiques.
Definition: ihm.cpp:69