BeeHoneyt  1.1
BTS SNIR LaSalle Avignon 2021
IHMMobile.java
Aller à la documentation de ce fichier.
1 package com.example.bee_honeyt;
2 
3 import androidx.appcompat.app.AlertDialog;
4 import androidx.appcompat.app.AppCompatActivity;
5 
6 import android.content.DialogInterface;
7 import android.content.Intent;
8 import android.graphics.Color;
9 import android.os.Bundle;
10 import android.os.Handler;
11 import android.os.Message;
12 import android.text.InputType;
13 import android.util.Log;
14 import android.view.View;
15 import android.widget.AdapterView;
16 import android.widget.ArrayAdapter;
17 import android.widget.Button;
18 import android.widget.EditText;
19 import android.widget.ImageView;
20 import android.widget.LinearLayout;
21 import android.widget.Spinner;
22 import android.widget.TextView;
23 import android.widget.Toast;
24 
25 import java.text.ParseException;
26 import java.text.SimpleDateFormat;
27 import java.util.ArrayList;
28 import java.util.Date;
29 import java.util.Iterator;
30 import java.util.List;
31 import java.util.Locale;
32 import java.util.TimeZone;
33 import java.util.Vector;
34 import java.util.regex.Matcher;
35 import java.util.regex.Pattern;
36 
37 import org.json.JSONException;
38 import org.json.JSONObject;
39 
49 // Pour Logcat : _IHMMobile|_Communication|_Ruche|_Alertes|_Historique|_IHMGraphique|FATAL|Exception
50 
55 public class IHMMobile extends AppCompatActivity
56 {
60  private static final String TAG = "_IHMMobile";
61  private static final int EXTRAIRE_DONNEE_POIDS = 1;
62  private static final int EXTRAIRE_DONNNEES_ENVIRONEMENT = 2;
63 
64  private static final String APPLICATION_ID = "rucher";
65  private static final int CHAMP_TOPIC_APPLICATION_ID = 0;
66  private static final int CHAMP_TOPIC_DEVICE_ID = 1;
67  private static final int ACTIVITE_CONNEXION = 1;
68 
72  private static Vector<Ruche> rucher;
73  private static Vector<Alertes> parametrageAlertes;
76  private int indexRucheSelectionnee;
77  private ArrayAdapter<String> adapterRuche;
79  private String reponseNom;
80  private String reponseDeviceID;
89  private String reponsePoidsMax;
90  private String reponsePoidsMin;
91  private String reponsePressionMax;
92  private String reponsePressionMin;
93  private String applicationID;
94  private String key;
95  private boolean reconnexion = false;
96 
100  private Spinner listeRuches;
101  private TextView afficheTemperatureInterieur;
102  private TextView afficheTemperatureExterieur;
103  private TextView afficheHumiditeInterieur;
104  private TextView afficheHumiditeExterieur;
105  private TextView affichePoids;
106  private TextView affichePression;
107  private TextView afficheHorodatage;
108  private TextView afficheConnexion;
109  private TextView afficheDeconnexion;
110  private List<String> listeNomsRuches;
111  private TextView alerteTemperatureInterieure;
112  private TextView alerteTemperatureExterieure;
113  private TextView alerteHumiditeInterieure;
114  private TextView alerteHumiditeExterieure;
115  private TextView alertePoids;
116  private TextView alertePression;
124  private ImageView rucheHumiditeExterieureHaute;
125  private ImageView rucheHumiditeExterieureBasse;
127  private ImageView rucheHumiditeInterieureHaute;
128  private ImageView rucheHumiditeInterieureBasse;
129  private ImageView ruchePoidsNormale;
130  private ImageView ruchePoidsHaute;
131  private ImageView ruchePoidsBas;
132  private ImageView ruchePressionNormale;
133  private ImageView ruchePressionHaute;
134  private ImageView ruchePressionBasse;
135  private Button connexion;
139  @Override
140  protected void onCreate(Bundle savedInstanceState)
141  {
142  super.onCreate(savedInstanceState);
143  setContentView(R.layout.activity_main);
144  Log.d(TAG,"onCreate()");
145 
146  getSupportActionBar().setTitle(getString(R.string.app_name) + " v" + BuildConfig.VERSION_NAME);
147 
149 
150  creerRucher();
151 
152  initialiserIHM();
153 
154  initialiserMQTT();
155  }
156 
160  private void initialiserStockage()
161  {
162  stockage = new StockageRucher(this);
163  }
164 
168  private void initialiserMQTT()
169  {
171 
172  communicationMQTT = new Communication(getApplicationContext(), handler);
173 
174  if(!applicationID.isEmpty() && !key.isEmpty())
175  {
178 
180  }
181  }
182 
186  private void creerRucher()
187  {
188  // Crée un rucher de test (avec les simulateurs)
190 
191  // On sélectionne une ruche par défaut
193  if(rucher.size() > 0)
194  {
195  rucheSelectionnee = rucher.get(0);
196  //indexRucheSelectionnee = 0;
197  }
198  }
199 
203  @Override
204  protected void onStart()
205  {
206  super.onStart();
207  Log.d(TAG,"onStart()");
208  }
209 
213  @Override
214  protected void onResume()
215  {
216  super.onResume();
217  Log.d(TAG,"onResume()");
218  }
219 
223  @Override
224  protected void onPause()
225  {
226  super.onPause();
227  Log.d(TAG,"onPause()");
228  }
229 
233  @Override
234  protected void onStop()
235  {
236  super.onStop();
237  Log.d(TAG,"onStop()");
238  }
239 
243  @Override
244  protected void onDestroy()
245  {
246  super.onDestroy();
247  Log.d(TAG,"onDestroy()");
248  }
249 
253  private void initialiserIHM()
254  {
256 
257  alerteTemperatureInterieure = (TextView) findViewById(R.id.alerteTemperatureInterieure);
258  alerteTemperatureExterieure = (TextView) findViewById(R.id.alerteTemperatureExterieure);
259  alerteHumiditeInterieure = (TextView) findViewById(R.id.alerteHumiditeInterieure);
260  alerteHumiditeExterieure = (TextView) findViewById(R.id.alerteHumiditeExterieure);
261  alertePoids = (TextView) findViewById(R.id.alertePoids);
262  alertePression = (TextView) findViewById(R.id.alertePression);
263  rucheTemperatureExterieureNormale = (ImageView) findViewById(R.id.rucheTemperatureExterieureNormale);
264  rucheTemperatureExterieureFroid = (ImageView) findViewById(R.id.rucheTemperatureExterieureFroid);
265  rucheTemperatureExterieureChaud = (ImageView) findViewById(R.id.rucheTemperatureExterieurechaud);
266  rucheTemperatureInterieureNormale = (ImageView) findViewById(R.id.rucheTemperatureInterieureNormale);
267  rucheTemperatureInterieureFroid = (ImageView) findViewById(R.id.rucheTemperatureInterieureFroid);
268  rucheTemperatureInterieureChaud = (ImageView) findViewById(R.id.rucheTemperatureInterieureChaud);
269  rucheHumiditeExterieureNormale = (ImageView) findViewById(R.id.rucheHumiditeExterieureNormale);
270  rucheHumiditeExterieureBasse = (ImageView) findViewById(R.id.rucheHumiditeExterieureBasse);
271  rucheHumiditeExterieureHaute = (ImageView) findViewById(R.id.rucheHumiditeExterieureHaute);
272  rucheHumiditeInterieureNormale = (ImageView) findViewById(R.id.rucheHumiditeInterieureNormale);
273  rucheHumiditeInterieureBasse = (ImageView) findViewById(R.id.rucheHumiditeInterieureBasse);
274  rucheHumiditeInterieureHaute = (ImageView) findViewById(R.id.rucheHumiditeInterieureHaute);
275  ruchePoidsNormale = (ImageView) findViewById(R.id.ruchePoidsNormale);
276  ruchePoidsBas = (ImageView) findViewById(R.id.ruchePoidsTropFaible);
277  ruchePoidsHaute = (ImageView) findViewById(R.id.ruchePoidsTropLourd);
278  ruchePressionNormale = (ImageView) findViewById(R.id.ruchepressionNormale);
279  ruchePressionBasse = (ImageView) findViewById(R.id.ruchePressionBasse);
280  ruchePressionHaute = (ImageView) findViewById(R.id.ruchePressionHaute);
281 
283 
284 
286  }
287 
288  private void initialiserImageAlertes()
289  {
290  rucheTemperatureExterieureChaud.setVisibility(View.INVISIBLE);
291  rucheTemperatureExterieureFroid.setVisibility(View.INVISIBLE);
292  rucheTemperatureExterieureNormale.setVisibility(View.VISIBLE);
293  rucheTemperatureInterieureChaud.setVisibility(View.INVISIBLE);
294  rucheTemperatureInterieureFroid.setVisibility(View.INVISIBLE);
295  rucheTemperatureInterieureNormale.setVisibility(View.VISIBLE);
296  rucheHumiditeInterieureHaute.setVisibility(View.INVISIBLE);
297  rucheHumiditeInterieureBasse.setVisibility(View.INVISIBLE);
298  rucheHumiditeInterieureNormale.setVisibility(View.VISIBLE);
299  rucheHumiditeExterieureHaute.setVisibility(View.INVISIBLE);
300  rucheHumiditeExterieureBasse.setVisibility(View.INVISIBLE);
301  rucheHumiditeExterieureNormale.setVisibility(View.VISIBLE);
302  ruchePoidsHaute.setVisibility(View.INVISIBLE);
303  ruchePoidsBas.setVisibility(View.INVISIBLE);
304  ruchePoidsNormale.setVisibility(View.VISIBLE);
305  ruchePressionHaute.setVisibility(View.INVISIBLE);
306  ruchePressionBasse.setVisibility(View.INVISIBLE);
307  ruchePressionNormale.setVisibility(View.VISIBLE);
308  }
309 
314  {
319  afficherPoids(0.0);
320  afficherPression(0);
321  afficherHorodatage("");
322 
324  }
325 
329  private void remettreAZeroAlertes()
330  {
331  alerteTemperatureExterieure.setText("");
332  alerteTemperatureInterieure.setText("");
333  alerteHumiditeExterieure.setText("");
334  alerteHumiditeInterieure.setText("");
335  alertePoids.setText("");
336  alertePression.setText("");
337  }
338 
342  private void initialiserListeRuches()
343  {
344  listeRuches = findViewById(R.id.listeRuches);
345 
346  listeNomsRuches = new ArrayList<String>();
347  for (int i = 0; i < rucher.size(); i++)
348  {
349  listeNomsRuches.add(rucher.get(i).getNom());
350  }
351 
352  adapterRuche = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, listeNomsRuches);
353  adapterRuche.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
354  listeRuches.setAdapter(adapterRuche);
355 
356  listeRuches.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
357  {
358  @Override
359  public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
360  {
361  Log.d(TAG, "listeRuches onItemSelected()");
362  for (int i = 0; i < rucher.size(); i++)
363  {
364  if (rucher.get(i).getNom().equals(listeNomsRuches.get(position)))
365  {
366  Log.d(TAG, "Sélection : " + rucher.get(i).getNom() + " - indexRucheSelectionnee = " + indexRucheSelectionnee);
367 
368  ((TextView) parent.getChildAt(0)).setTextColor(Color.BLACK);
369  ((TextView) parent.getChildAt(0)).setTextSize(22);
370 
371  int indexRucheSelectionneePrecedente = indexRucheSelectionnee;
372  // Stocke la ruche précédente
373  if(indexRucheSelectionnee != -1)
374  {
375  rucher.set(indexRucheSelectionnee, rucheSelectionnee);
376  }
377 
378  // Sélectionne une autre ruche
379  rucheSelectionnee = rucher.get(i);
380  indexRucheSelectionnee = i;
381 
382  // Affichage des données de la ruche sélectionnée
383  double temperatureInterieure = rucheSelectionnee.getMesureRuche().getTemperatureInterieure();
384  afficherTemperatureInterieure(temperatureInterieure);
385  double temperatureExterieure = rucheSelectionnee.getMesureRuche().getTemperatureExterieure();
386  afficherTemperatureExterieure(temperatureExterieure);
387  int humiditeInterieure = rucheSelectionnee.getMesureRuche().getHumiditeInterieure();
388  afficherHumiditeInterieure(humiditeInterieure);
389  int humiditeExterieure = rucheSelectionnee.getMesureRuche().getHumiditeExterieure();
390  afficherHumiditeExterieure(humiditeExterieure);
391  remettreAZeroAlertes();
392  initialiserImageAlertes();
393 
394  double poids = rucheSelectionnee.getMesureRuche().getPoids();
395  afficherPoids(poids);
396  remettreAZeroAlertes();
397  initialiserImageAlertes();
398 
399  int pression = rucheSelectionnee.getMesureRuche().getPression();
400  afficherPression(pression);
401 
402  String horodatage = rucheSelectionnee.getHorodatage();
403  afficherHorodatage(horodatage);
404  break;
405  }
406  }
407  }
408  @Override
409  public void onNothingSelected(AdapterView<?> parent)
410  {
411 
412  }
413  });
414  }
415 
420  public void afficherTemperatureInterieure(double temperatureInterieure)
421  {
422  afficheTemperatureInterieur = (TextView) findViewById(R.id.afficheTemperatureInterieure);
423  afficheTemperatureInterieur.setText(temperatureInterieure + " °C");
424  }
425 
430  public void afficherTemperatureExterieure(double temperatureExterieure)
431  {
432  afficheTemperatureExterieur = (TextView) findViewById(R.id.afficheTemperatureExterieure);
433  afficheTemperatureExterieur.setText(temperatureExterieure + " °C");
434  }
435 
440  public void afficherHumiditeInterieure(int humiditeInterieure)
441  {
442  afficheHumiditeInterieur = (TextView) findViewById(R.id.afficheHumiditeInterieure);
443  afficheHumiditeInterieur.setText(humiditeInterieure + " %");
444  }
445 
450  public void afficherHumiditeExterieure(int humiditeExterieure)
451  {
452  afficheHumiditeExterieur = (TextView) findViewById(R.id.afficheHumiditeExterieure);
453  afficheHumiditeExterieur.setText(humiditeExterieure + " %");
454  }
455 
460  public void afficherPoids(double poids)
461  {
462  affichePoids = (TextView) findViewById(R.id.affichePoids);
463  affichePoids.setText(poids + " Kg");
464  }
465 
470  public void afficherPression(int pression)
471  {
472  affichePression = (TextView) findViewById(R.id.affichePression);
473  affichePression.setText(pression + " hPa");
474  }
475 
480  public void afficherHorodatage(String horodatage)
481  {
482  afficheHorodatage = (TextView) findViewById(R.id.afficheHorodatage);
483  afficheHorodatage.setText(horodatage);
484  }
485 
490  public void afficherConnexion(String message)
491  {
492  afficheConnexion = (TextView) findViewById(R.id.etatConnexion);
493  afficheConnexion.setText(message);
494  }
495 
500  public void afficherDeconnexion(String message)
501  {
502  afficheDeconnexion = (TextView) findViewById(R.id.etatConnexion);
503  afficheDeconnexion.setText(message);
504  }
505 
509  final private Handler handler = new Handler()
510  {
511  @Override
512  public void handleMessage(Message msg)
513  {
514  super.handleMessage(msg);
515 
516  Bundle bundle = msg.getData();
517 
518  switch(bundle.getInt("etat"))
519  {
521  Log.d(TAG, "handleMessage() TTN connecté");
522  afficherConnexion("Connectée");
523  abonnerRuches();
524  break;
526  Log.d(TAG, "handleMessage() TTN déconnecté");
527  afficherDeconnexion("Déconnecté");
528  if(reconnexion)
529  {
530  communicationMQTT.connecter();
531  reconnexion = false;
532  }
533  break;
535  Log.d(TAG, "handleMessage() TTN topic = " + bundle.getString("topic") + " message = " + bundle.getString("message"));
536  String topic = bundle.getString("topic");
537 
538  //decoderTopic(topic); // pour déboguage
539  String deviceId = extraireDeviceId(topic);
540 
541  // Filtrer le deviceId avec celui de la ruche sélectionnée
542  Log.d(TAG, "handleMessage() deviceId = " + deviceId + " ? " + rucheSelectionnee.getDeviceID());
543  if(deviceId.equals(rucheSelectionnee.getDeviceID()))
544  {
545  Log.d(TAG, "handleMessage() Données pour la ruche = " + rucheSelectionnee.getNom() + " !!!");
546  String message = bundle.getString("message");
547  traiterMessage(message);
548  }
549  break;
550  }
551  }
552  };
553 
558  private void traiterMessage(String message)
559  {
560  int port = extrairePort(message);
561  String payloadFields = extraireDonneeMessage(message);
562  String metaData = extraireHorodatageMessage(message);
563 
564  switch (port)
565  {
566  case EXTRAIRE_DONNEE_POIDS:
567  double poids = extrairePoids(payloadFields);
568  rucheSelectionnee.getMesureRuche().setPoids(poids);
569  afficherPoids(poids);
570  afficherAlertePoids();
571  break;
572  case EXTRAIRE_DONNNEES_ENVIRONEMENT:
573  double temperatureInterieure = extraireTemperatureInterieure(payloadFields);
574  rucheSelectionnee.getMesureRuche().setTemperatureInterieure(temperatureInterieure);
575  afficherTemperatureInterieure(temperatureInterieure);
576  double temperatureExterieure = extraireTemperatureExterieure(payloadFields);
577  rucheSelectionnee.getMesureRuche().setTemperatureExterieure(temperatureExterieure);
578  afficherTemperatureExterieure(temperatureExterieure);
579  int humiditeInterieure = extraireHumiditeInterieure(payloadFields);
580  rucheSelectionnee.getMesureRuche().setHumiditeInterieure(humiditeInterieure);
581  afficherHumiditeInterieure(humiditeInterieure);
582  int humiditeExterieure = extraireHumiditeExterieure(payloadFields);
583  rucheSelectionnee.getMesureRuche().setHumiditeExterieure(humiditeExterieure);
584  afficherHumiditeExterieure(humiditeExterieure);
585  int pression = extrairePression(payloadFields);
586  rucheSelectionnee.getMesureRuche().setPression(pression);
587  afficherPression(pression);
588  afficherAlertesEnvironnement();
589  break;
590  default:
591  return;
592  }
593 
594  // le dernier horodatage reçu
595  String horodatage = extraireHorodatage(metaData);
596  rucheSelectionnee.setHorodatage(horodatage);
597  afficherHorodatage(horodatage);
598  }
599 
604  {
605  afficherAlerteTemperatureInterieure();
606  afficherAlerteTemperatureExterieure();
607  afficherAlerteHumiditeInterieure();
608  afficherAlerteHumiditeExterieure();
609  afficherAlertePression();
610  }
611 
618  private int extrairePression(String payloadFields)
619  {
620  int pression = 0; // ce n'est pas un double !
621 
622  try
623  {
624  JSONObject json = null;
625  Iterator<String> it = null;
626  json = new JSONObject(payloadFields);
627 
632  pression = json.getInt("pression");
633  Log.d(TAG, "extrairePression() pression = " + pression);
634  }
635  catch (JSONException e)
636  {
637  e.printStackTrace();
638  }
639 
640  return pression;
641  }
642 
649  private int extraireHumiditeExterieure(String payloadFields)
650  {
651  int humiditeExterieure = 0;
652 
653  try
654  {
655  JSONObject json = null;
656  Iterator<String> it = null;
657  json = new JSONObject(payloadFields);
658 
663  humiditeExterieure = json.getInt("humiditeExt");
664  Log.d(TAG, "extraireHumiditeExterieure() Humidite exterieure = " + humiditeExterieure);
665  }
666  catch (JSONException e)
667  {
668  e.printStackTrace();
669  }
670 
671  return humiditeExterieure;
672  }
673 
680  private int extraireHumiditeInterieure(String payloadFields)
681  {
682  int humiditeInterieure = 0; // ce n'est pas un double !
683 
684  try
685  {
686  JSONObject json = null;
687  Iterator<String> it = null;
688  json = new JSONObject(payloadFields);
689 
694  humiditeInterieure = json.getInt("humiditeInt");
695  Log.d(TAG, "extraireHumiditeInterieure() Humidite interieure = " + humiditeInterieure);
696  }
697  catch (JSONException e)
698  {
699  e.printStackTrace();
700  }
701 
702  return humiditeInterieure;
703  }
704 
711  private double extraireTemperatureExterieure(String payloadFields)
712  {
713  double temperatureExterieure = 0.0;
714 
715  try
716  {
717  JSONObject json = null;
718  Iterator<String> it = null;
719  json = new JSONObject(payloadFields);
720 
725  temperatureExterieure = json.getDouble("temperatureExt");
726  Log.d(TAG, "extraireTemperatureExterieure() Temperature exterieure = " + temperatureExterieure);
727  }
728  catch (JSONException e)
729  {
730  e.printStackTrace();
731  }
732 
733  return temperatureExterieure;
734  }
735 
742  private double extraireTemperatureInterieure(String payloadFields)
743  {
744  double temperatureInterieure = 0.0;
745 
746  try
747  {
748  JSONObject json = null;
749  Iterator<String> it = null;
750  json = new JSONObject(payloadFields);
751 
756  temperatureInterieure = json.getDouble("temperatureInt");
757  Log.d(TAG, "extraireTemperatureInterieure() Temperature interieure = " + temperatureInterieure);
758  }
759  catch (JSONException e)
760  {
761  e.printStackTrace();
762  }
763 
764  return temperatureInterieure;
765  }
766 
773  private int extrairePort(String message)
774  {
775  int port = 0;
776 
777  try
778  {
779  JSONObject json = null;
780  json = new JSONObject(message);
781 
782  // Récupère le port
783  port = json.getInt("port");
784  Log.d(TAG, "extrairePort() port = " + port);
785  }
786  catch (JSONException e)
787  {
788  e.printStackTrace();
789  }
790 
791  return port;
792  }
793 
797  private void abonnerRuches()
798  {
799  // Abonner les ruches pour recevoir les données
800  for (int i = 0; i < rucher.size(); i++)
801  {
802  communicationMQTT.souscrireTopic(rucher.get(i).getDeviceID());
803  }
804  }
805 
809  private void desAbonnerRuches()
810  {
811  // Abonner les ruches pour recevoir les données
812  for (int i = 0; i < rucher.size(); i++)
813  {
814  communicationMQTT.unsubscribe(rucher.get(i).getDeviceID());
815  }
816  }
817 
822  private void decoderTopic(String topic)
823  {
824  Log.d(TAG, "extraireTopic() topic = " + topic);
830  try
831  {
832  if (topic.startsWith(APPLICATION_ID))
833  {
834  String[] champs = topic.split("/");
835 
836  for (int i = 0; i < champs.length; i++)
837  {
838  Log.d(TAG, "champs = " + champs[i]);
839  }
840  }
841  }
842  catch (Exception e)
843  {
844  e.printStackTrace();
845  }
846  }
847 
853  private String extraireDonneeMessage(String message)
854  {
855  //Log.d(TAG, "extraireDonneeMessage() message = " + message);
863  String payloadFields = null;
864 
865  try
866  {
867  JSONObject json = null;
868  Iterator<String> it = null;
869 
870  json = new JSONObject(message);
871 
872  it = json.keys();
873  while (it.hasNext())
874  {
875  String cle = it.next();
876 
877  // Récupère le payload_fields ?
878  if (cle.equals("payload_fields"))
879  {
880  payloadFields = json.getString(cle);
881  Log.d(TAG, "extraireDonneeMessage() payload_fields = " + payloadFields);
882  }
883  }
884  }
885  catch (JSONException e)
886  {
887  e.printStackTrace();
888  }
889 
890  return payloadFields;
891  }
892 
898  private String extraireHorodatageMessage(String message)
899  {
900  //Log.d(TAG, "extraireHorodatageMessage() message = " + message);
908  String metaData = null;
909 
910  try
911  {
912  JSONObject json = null;
913  Iterator<String> it = null;
914 
915  json = new JSONObject(message);
916 
917  it = json.keys();
918  while (it.hasNext())
919  {
920  String cle = it.next();
921 
922  if (cle.equals("metadata"))
923  {
924  metaData = json.getString(cle);
925  }
926  }
927  }
928  catch (JSONException e)
929  {
930  e.printStackTrace();
931  }
932 
933  return metaData;
934  }
935 
941  public String extraireHorodatage(String metaData)
942  {
943  String horodatageFormate = "";
944 
945  try
946  {
947  Log.d(TAG, "extraireHorodatage() metadata = " + metaData);
948  JSONObject json = null;
949  json = new JSONObject(metaData);
950 
955  String time = json.getString("time");
956  Log.d(TAG, "extraireHorodatage() time = " + time);
957  // time = 2021-04-22T18:46:49.40690864Z
958 
959  SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
960  SimpleDateFormat sdfOut = new SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.FRENCH); // choix du format
961  sdfIn.setTimeZone(TimeZone.getTimeZone("UTC"));
962  // Conversion fuseau horaire UTC -> France
963  Date date = null;
964  try
965  {
966  date = sdfIn.parse(time);
967  sdfOut.setTimeZone(TimeZone.getDefault());
968  horodatageFormate = sdfOut.format(date);
969  }
970  catch (ParseException e)
971  {
972  e.printStackTrace();
973  }
974  Log.d(TAG,"extraireHorodatage() horodatageFormate = " + horodatageFormate);
975  }
976  catch (JSONException e)
977  {
978  e.printStackTrace();
979  }
980 
981  return horodatageFormate;
982  }
983 
989  public String extraireDeviceId(String topic)
990  {
991  Log.d(TAG, "extraireDeviceId() topic = " + topic);
992  String deviceId = "";
993 
994  //Expression régulière : le . est pour n'importe quel caractere sauf retour a la ligne, le + est pour 1 ou plus, et le ? est pour 0 ou 1 mais dans notre cas il precède un + alors il signifie 1 ou + non gourmand
995  Pattern topicPattern = Pattern.compile("/(.+?)/(.+?)/");
996  String contenueTopic = topic;
997 
998  Matcher topicMatcher = topicPattern.matcher( contenueTopic );
999  if (topicMatcher.find())
1000  {
1001  Log.d( TAG," Device ID = " + topicMatcher.group(2));
1002  deviceId = topicMatcher.group(2);
1003  }
1004 
1005  return deviceId;
1006  }
1007 
1013  private double extrairePoids(String payloadFields)
1014  {
1015  double poids = 0.0;
1016 
1017  try
1018  {
1019  JSONObject json = null;
1020  Iterator<String> it = null;
1021  json = new JSONObject(payloadFields);
1022 
1023  poids = json.getDouble("poids");
1024  Log.d(TAG, "extrairePoids() poids = " + poids);
1025  }
1026  catch (JSONException e)
1027  {
1028  e.printStackTrace();
1029  }
1030 
1031  return poids;
1032  }
1033 
1038  public void afficheFenetreSupprimer(View supprimer)
1039  {
1040  if(indexRucheSelectionnee == -1)
1041  return;
1042 
1043  AlertDialog.Builder alert = new AlertDialog.Builder(this );
1044  String oui = "Oui";
1045  String non = "Non";
1046  alert.setTitle("Supprimer une ruche");
1047  alert.setMessage("Etes-vous sur de vouloir supprimer " + rucheSelectionnee.getNom() + " ?");
1048  alert.setPositiveButton(oui, new DialogInterface.OnClickListener()
1049  {
1050  @Override
1051  public void onClick(DialogInterface dialog, int which)
1052  {
1053  Toast.makeText(IHMMobile.this,"Votre ruche a bien été supprimée",Toast.LENGTH_LONG).show();
1054  supprimerRuche(rucheSelectionnee);
1055  }
1056  });
1057  alert.setNegativeButton(non, new DialogInterface.OnClickListener()
1058  {
1059  @Override
1060  public void onClick(DialogInterface dialog, int which)
1061  {
1062  //Toast.makeText(IHMMobile.this,"Votre ruche n'a pas été suppriméé",Toast.LENGTH_LONG).show();
1063  }
1064  });
1065  alert.create().show();
1066  }
1067 
1072  public void afficheFenetreAjouter(View Ajouter)
1073  {
1074  AlertDialog.Builder alert = new AlertDialog.Builder(this );
1075  String ajout = "Ajouter";
1076  String annule = "Annuler";
1077 
1078  alert.setTitle("Ajouter une ruche");
1079  //alert.setView(R.layout.activity_main);
1080 
1081  LinearLayout layout = new LinearLayout(IHMMobile.this);
1082  layout.setOrientation(LinearLayout.VERTICAL);
1083 
1084  final TextView labelNom = new TextView(IHMMobile.this);
1085  labelNom.setText(" Nom :");
1086  layout.addView(labelNom);
1087 
1088  final EditText nom = new EditText(IHMMobile.this);
1089  layout.addView(nom);
1090  nom.setInputType(InputType.TYPE_CLASS_TEXT);
1091 
1092  final TextView labelDeviceID = new TextView(IHMMobile.this);
1093  labelDeviceID.setText(" DeviceID :");
1094  layout.addView(labelDeviceID);
1095 
1096  final EditText deviceID = new EditText((IHMMobile.this));
1097  layout.addView(deviceID);
1098  deviceID.setInputType(InputType.TYPE_CLASS_TEXT);
1099 
1100  alert.setView(layout);
1101 
1102  alert.setPositiveButton(ajout, new DialogInterface.OnClickListener()
1103  {
1104  @Override
1105  public void onClick(DialogInterface dialog, int which)
1106  {
1107  reponseNom = nom.getText().toString();
1108  reponseDeviceID = deviceID.getText().toString();
1109  ajouterRuche(reponseNom, reponseDeviceID);
1110  Toast.makeText(IHMMobile.this,"Votre ruche a bien été ajoutée",Toast.LENGTH_LONG).show();
1111  }
1112  });
1113  alert.setNegativeButton(annule, new DialogInterface.OnClickListener()
1114  {
1115  @Override
1116  public void onClick(DialogInterface dialog, int which)
1117  {
1118  dialog.cancel();
1119  //Toast.makeText(IHMMobile.this,"Votre ruche n'a pas été ajoutée",Toast.LENGTH_LONG).show();
1120  }
1121  });
1122  alert.create().show();
1123  }
1124 
1130  public void ajouterRuche(String nom, String deviceID)
1131  {
1132  rucher.add(new Ruche(nom, deviceID));
1133  stockage.editerRuche(nom,deviceID);
1134  adapterRuche.add(nom);
1135 
1136  abonnerRuches();
1137  }
1138 
1143  public void supprimerRuche(Ruche ruche)
1144  {
1145  for (int i = 0; i < rucher.size(); i++)
1146  {
1147  desAbonnerRuches();
1148 
1149  if(rucher.get(i).getNom() == ruche.getNom() )
1150  {
1151  listeNomsRuches.remove(rucher.get(i).getNom());
1152  stockage.supprimerRuche(ruche.getDeviceID());
1153  stockage.supprimerAlertes(ruche.getNom());
1154  adapterRuche.remove(ruche.getNom());
1155  }
1156  }
1157  }
1158 
1163  public void afficheFenetreParametrageAlertes(View parametrer)
1164  {
1165  if(indexRucheSelectionnee == -1)
1166  return;
1167 
1168  AlertDialog.Builder alert = new AlertDialog.Builder(this );
1169  String ajout = "Ajouter";
1170  String annule = "Annuler";
1171 
1172  alert.setTitle("Paramétrer les seuils d'alerte");
1173 
1174  LinearLayout layout = new LinearLayout(IHMMobile.this);
1175  layout.setOrientation(LinearLayout.VERTICAL);
1176 
1177  final TextView labelTemperatureInterieureMax = new TextView(IHMMobile.this);
1178  labelTemperatureInterieureMax.setText(" Température intérieure maximale :");
1179  layout.addView(labelTemperatureInterieureMax);
1180 
1181  final EditText temperatureInterieureMax = new EditText(IHMMobile.this);
1182  temperatureInterieureMax.setText(Double.toString(rucheSelectionnee.getAlerteRuche().getTemperatureInterieurMax()));
1183  layout.addView(temperatureInterieureMax);
1184  temperatureInterieureMax.setInputType(InputType.TYPE_CLASS_TEXT);
1185 
1186  final TextView labelTemperatureInterieureMin = new TextView(IHMMobile.this);
1187  labelTemperatureInterieureMin.setText(" Température intérieure minimale:");
1188  layout.addView(labelTemperatureInterieureMin);
1189 
1190  final EditText temperatureInterieureMin = new EditText((IHMMobile.this));
1191  temperatureInterieureMin.setText(Double.toString(rucheSelectionnee.getAlerteRuche().getTemperatureInterieurMin()));
1192  layout.addView(temperatureInterieureMin);
1193  temperatureInterieureMin.setInputType(InputType.TYPE_CLASS_TEXT);
1194 
1195  final TextView labelTemperatureExterieureMax = new TextView(IHMMobile.this);
1196  labelTemperatureExterieureMax.setText(" Température extérieure maximale :");
1197  layout.addView(labelTemperatureExterieureMax);
1198 
1199  final EditText temperatureExterieureMax = new EditText(IHMMobile.this);
1200  temperatureExterieureMax.setText(Double.toString(rucheSelectionnee.getAlerteRuche().getTemperatureExterieurMax()));
1201  layout.addView(temperatureExterieureMax);
1202  temperatureExterieureMax.setInputType(InputType.TYPE_CLASS_TEXT);
1203 
1204  final TextView labelTemperatureExterieureMin = new TextView(IHMMobile.this);
1205  labelTemperatureExterieureMin.setText(" Température extérieure minimale :");
1206  layout.addView(labelTemperatureExterieureMin);
1207 
1208  final EditText temperatureExterieureMin = new EditText((IHMMobile.this));
1209  temperatureExterieureMin.setText(Double.toString(rucheSelectionnee.getAlerteRuche().getTemperatureExterieurMin()));
1210  layout.addView(temperatureExterieureMin);
1211  temperatureExterieureMin.setInputType(InputType.TYPE_CLASS_TEXT);
1212 
1213  final TextView labelHumiditeInterieureMax = new TextView(IHMMobile.this);
1214  labelHumiditeInterieureMax.setText(" Humidité intérieure maximale :");
1215  layout.addView(labelHumiditeInterieureMax);
1216 
1217  final EditText humiditeInterieureMax= new EditText(IHMMobile.this);
1218  humiditeInterieureMax.setText(Integer.toString(rucheSelectionnee.getAlerteRuche().getHumiditeInterieurMax()));
1219  layout.addView(humiditeInterieureMax);
1220  humiditeInterieureMax.setInputType(InputType.TYPE_CLASS_TEXT);
1221 
1222  final TextView labelHumiditeInterieureMin = new TextView(IHMMobile.this);
1223  labelHumiditeInterieureMin.setText(" Humidité intérieure minimale :");
1224  layout.addView(labelHumiditeInterieureMin);
1225 
1226  final EditText humiditeInterieureMin = new EditText((IHMMobile.this));
1227  humiditeInterieureMin.setText(Integer.toString(rucheSelectionnee.getAlerteRuche().getHumiditeInterieurMin()));
1228  layout.addView(humiditeInterieureMin);
1229  humiditeInterieureMin.setInputType(InputType.TYPE_CLASS_TEXT);
1230 
1231  final TextView labelHumiditeExterieureMax = new TextView(IHMMobile.this);
1232  labelHumiditeExterieureMax.setText(" Humidité extérieure maximale :");
1233  layout.addView(labelHumiditeExterieureMax);
1234 
1235  final EditText humiditeExterieureMax= new EditText(IHMMobile.this);
1236  humiditeExterieureMax.setText(Integer.toString(rucheSelectionnee.getAlerteRuche().getHumiditeExterieurMax()));
1237  layout.addView(humiditeExterieureMax);
1238  humiditeExterieureMax.setInputType(InputType.TYPE_CLASS_TEXT);
1239 
1240  final TextView labelHumiditeExterieureMin = new TextView(IHMMobile.this);
1241  labelHumiditeExterieureMin.setText(" Humidité extérieure minimale :");
1242  layout.addView(labelHumiditeExterieureMin);
1243 
1244  final EditText humiditeExterieureMin = new EditText((IHMMobile.this));
1245  humiditeExterieureMin.setText(Integer.toString(rucheSelectionnee.getAlerteRuche().getHumiditeExterieurMin()));
1246  layout.addView(humiditeExterieureMin);
1247  humiditeExterieureMin.setInputType(InputType.TYPE_CLASS_TEXT);
1248 
1249  final TextView labelPoidsMax = new TextView(IHMMobile.this);
1250  labelPoidsMax.setText(" Poids maximal :");
1251  layout.addView(labelPoidsMax);
1252 
1253  final EditText poidsMax = new EditText((IHMMobile.this));
1254  poidsMax.setText(Double.toString(rucheSelectionnee.getAlerteRuche().getPoidsMax()));
1255  layout.addView(poidsMax);
1256  poidsMax.setInputType(InputType.TYPE_CLASS_TEXT);
1257 
1258  final TextView labelPoidsMin = new TextView(IHMMobile.this);
1259  labelPoidsMin.setText(" Poids minimal :");
1260  layout.addView(labelPoidsMin);
1261 
1262  final EditText poidsMin = new EditText((IHMMobile.this));
1263  poidsMin.setText(Double.toString(rucheSelectionnee.getAlerteRuche().getPoidsMin()));
1264  layout.addView(poidsMin);
1265  poidsMin.setInputType(InputType.TYPE_CLASS_TEXT);
1266 
1267  final TextView labelPressionMax = new TextView(IHMMobile.this);
1268  labelPressionMax.setText(" Pression maximal :");
1269  layout.addView(labelPressionMax);
1270 
1271  final EditText pressionMax = new EditText((IHMMobile.this));
1272  pressionMax.setText(Double.toString(rucheSelectionnee.getAlerteRuche().getPressionMax()));
1273  layout.addView(pressionMax);
1274  pressionMax.setInputType(InputType.TYPE_CLASS_TEXT);
1275 
1276  final TextView labelPressionMin = new TextView(IHMMobile.this);
1277  labelPressionMin.setText(" Pression minimal :");
1278  layout.addView(labelPressionMin);
1279 
1280  final EditText pressionMin = new EditText((IHMMobile.this));
1281  pressionMin.setText(Double.toString(rucheSelectionnee.getAlerteRuche().getPressionMin()));
1282  layout.addView(pressionMin);
1283  pressionMin.setInputType(InputType.TYPE_CLASS_TEXT);
1284  alert.setView(layout);
1285 
1286  alert.setPositiveButton(ajout, new DialogInterface.OnClickListener()
1287  {
1288  @Override
1289  public void onClick(DialogInterface dialog, int which)
1290  {
1291  reponseTemperatureInterieureMax = temperatureInterieureMax.getText().toString();
1292  reponseTemperatureInterieureMin = temperatureInterieureMin.getText().toString();
1293  reponseTemperatureExterieureMax = temperatureExterieureMax.getText().toString();
1294  reponseTemperatureExterieureMin = temperatureExterieureMin.getText().toString();
1295  reponseHumiditeInterieureMax = humiditeInterieureMax.getText().toString();
1296  reponseHumiditeInterieureMin = humiditeInterieureMin.getText().toString();
1297  reponseHumiditeExterieureMax = humiditeExterieureMax.getText().toString();
1298  reponseHumiditeExterieureMin = humiditeExterieureMin.getText().toString();
1299  reponsePoidsMax = poidsMax.getText().toString();
1300  reponsePoidsMin = poidsMin.getText().toString();
1301  reponsePressionMax = pressionMax.getText().toString();
1302  reponsePressionMin = pressionMin.getText().toString();
1303 
1304  ajouterParametreAlerte(reponseTemperatureInterieureMax,reponseTemperatureInterieureMin,reponseTemperatureExterieureMax,reponseTemperatureExterieureMin,reponseHumiditeInterieureMax,reponseHumiditeInterieureMin,reponseHumiditeExterieureMax,reponseHumiditeExterieureMin,reponsePoidsMax,reponsePoidsMin,reponsePressionMax,reponsePressionMin);
1305  Toast.makeText(IHMMobile.this,"Vos paramètres ont bien été ajoutés",Toast.LENGTH_LONG).show();
1306 
1307  // Redéterminer les alertes
1308  afficherAlertesEnvironnement();
1309  afficherAlertePoids();
1310  }
1311  });
1312  alert.setNegativeButton(annule, new DialogInterface.OnClickListener()
1313  {
1314  @Override
1315  public void onClick(DialogInterface dialog, int which)
1316  {
1317  dialog.cancel();
1318  //Toast.makeText(IHMMobile.this,"Vos paramètres n'ont pas été ajoutés",Toast.LENGTH_LONG).show();
1319  }
1320  });
1321  alert.create().show();
1322  }
1323 
1328  public void afficheGraphiques(View view)
1329  {
1330  if(indexRucheSelectionnee != -1)
1331  {
1332  Intent intent = new Intent(IHMMobile.this, IHMGraphique.class);
1333  intent.putExtra("application", communicationMQTT.getUsername());
1334  intent.putExtra("key", communicationMQTT.getPassword());
1335  intent.putExtra("device", rucher.get(indexRucheSelectionnee).getDeviceID());
1336  startActivity(intent);
1337  }
1338  }
1339 
1343  public void afficheIHMConnexion(View view)
1344  {
1345  Intent intent = new Intent(IHMMobile.this, IHMConnexion.class);
1346  if(communicationMQTT != null)
1347  {
1348  intent.putExtra("application", communicationMQTT.getUsername());
1349  intent.putExtra("key", communicationMQTT.getPassword());
1350  }
1351  else
1352  {
1353  intent.putExtra("application", "");
1354  intent.putExtra("key", "");
1355  }
1356 
1357  // Démarre l'activité et attend un retour qui se fera dans onActivityResult()
1358  startActivityForResult(intent, ACTIVITE_CONNEXION);
1359  }
1360 
1364  @Override
1365  protected void onActivityResult(int requestCode, int resultCode, Intent intent)
1366  {
1367  super.onActivityResult(requestCode, resultCode, intent);
1368  Log.d(TAG, "onActivityResult() resultCode : " + resultCode);
1369 
1370  if(requestCode == ACTIVITE_CONNEXION)
1371  {
1372  if(resultCode == RESULT_OK)
1373  {
1374  applicationID = intent.getStringExtra("application");
1375  key = intent.getStringExtra("key");
1376  Log.d(TAG, "onActivityResult() applicationID = " + applicationID + " - key = " + key);
1377 
1378  stockerParametreConnexion();
1379 
1380  communicationMQTT.setUsername(applicationID);
1381  communicationMQTT.setPassword(key);
1382 
1383  desAbonnerRuches();
1384  reconnexion = true;
1385  communicationMQTT.deconnecter();
1386  }
1387  }
1388  }
1389 
1393  public void ajouterParametreAlerte(String reponseTemperatureInterieureMax, String reponseTemperatureInterieureMin, String reponseTemperatureExterieureMax, String reponseTemperatureExterieureMin, String reponseHumiditeInterieureMax, String reponseHumiditeInterieureMin, String reponseHumiditeExterieureMax, String reponseHumiditeExterieureMin, String reponsePoidsMax, String reponsePoidsMin,String reponsePressionMax, String reponsePressionMin)
1394  {
1395  Alertes seuilsAlertes = new Alertes(Double.parseDouble(reponseTemperatureInterieureMin),Double.parseDouble(reponseTemperatureInterieureMax),Double.parseDouble(reponseTemperatureExterieureMin),Double.parseDouble(reponseTemperatureExterieureMax),Integer.parseInt(reponseHumiditeInterieureMin),Integer.parseInt(reponseHumiditeInterieureMax),Integer.parseInt(reponseHumiditeExterieureMin),Integer.parseInt(reponseHumiditeExterieureMax),Double.parseDouble(reponsePoidsMin),Double.parseDouble(reponsePoidsMax),Double.parseDouble(reponsePressionMin),Double.parseDouble(reponsePressionMax));
1396  rucheSelectionnee.setAlerteRuche(seuilsAlertes);
1397  String alertesJSON = seuilsAlertes.toJSON();
1398  String nomRuche = rucheSelectionnee.getNom();
1399  stockage.editerAlertes(nomRuche, alertesJSON);
1400  }
1401 
1403  {
1404  //Log.d(TAG, "stockerParametreConnexion() applicationID = " + applicationID + " - key = " + key);
1405  stockage.editerConnexionTTN(applicationID, key);
1406  }
1407 
1409  {
1410  applicationID = stockage.obtenir("application");
1411  key = stockage.obtenir("key");
1412  Log.d(TAG, "recupererParametreConnexion() applicationID = " + applicationID + " - key = " + key);
1413  }
1414 
1419  {
1420  Log.d(TAG,"afficherAlerteTemperatureInterieure()");
1421  if(rucheSelectionnee.getMesureRuche().getTemperatureInterieure() > rucheSelectionnee.getAlerteRuche().getTemperatureInterieurMax())
1422  {
1423  alerteTemperatureInterieure.setText("Température intérieure trop élevée !");
1424  Log.d(TAG,"afficherAlerteTemperatureInterieure() = " + alerteTemperatureInterieure);
1425  alerteTemperatureInterieure.setTextColor(Color.parseColor("#ff0000"));
1426  rucheTemperatureInterieureChaud.setVisibility(View.VISIBLE);
1427  rucheTemperatureInterieureFroid.setVisibility(View.INVISIBLE);
1428  rucheTemperatureInterieureNormale.setVisibility(View.INVISIBLE);
1429  }
1430  else if(rucheSelectionnee.getMesureRuche().getTemperatureInterieure() < rucheSelectionnee.getAlerteRuche().getTemperatureInterieurMin())
1431  {
1432  alerteTemperatureInterieure.setText("Température intérieure trop basse !");
1433  alerteTemperatureInterieure.setTextColor(Color.parseColor("#498df7"));
1434  rucheTemperatureInterieureChaud.setVisibility(View.INVISIBLE);
1435  rucheTemperatureInterieureFroid.setVisibility(View.VISIBLE);
1436  rucheTemperatureInterieureNormale.setVisibility(View.INVISIBLE);
1437  }
1438  else
1439  {
1440  alerteTemperatureInterieure.setText("");
1441  rucheTemperatureInterieureChaud.setVisibility(View.INVISIBLE);
1442  rucheTemperatureInterieureFroid.setVisibility(View.INVISIBLE);
1443  rucheTemperatureInterieureNormale.setVisibility(View.VISIBLE);
1444  }
1445  }
1446 
1451  {
1452  if(rucheSelectionnee.getMesureRuche().getTemperatureExterieure() > rucheSelectionnee.getAlerteRuche().getTemperatureExterieurMax())
1453  {
1454  alerteTemperatureExterieure.setText("Température extérieure trop élevée !");
1455  alerteTemperatureExterieure.setTextColor(Color.parseColor("#ff0000"));
1456  rucheTemperatureExterieureChaud.setVisibility(View.VISIBLE);
1457  rucheTemperatureExterieureFroid.setVisibility(View.INVISIBLE);
1458  rucheTemperatureExterieureNormale.setVisibility(View.INVISIBLE);
1459  }
1460  else if(rucheSelectionnee.getMesureRuche().getTemperatureExterieure() < rucheSelectionnee.getAlerteRuche().getTemperatureExterieurMin())
1461  {
1462  alerteTemperatureExterieure.setText("Température extérieure trop basse !");
1463  alerteTemperatureExterieure.setTextColor(Color.parseColor("#498df7"));
1464  rucheTemperatureExterieureChaud.setVisibility(View.INVISIBLE);
1465  rucheTemperatureExterieureFroid.setVisibility(View.VISIBLE);
1466  rucheTemperatureExterieureNormale.setVisibility(View.INVISIBLE);
1467  }
1468  else
1469  {
1470  alerteTemperatureExterieure.setText("");
1471  rucheTemperatureExterieureChaud.setVisibility(View.INVISIBLE);
1472  rucheTemperatureExterieureFroid.setVisibility(View.INVISIBLE);
1473  rucheTemperatureExterieureNormale.setVisibility(View.VISIBLE);
1474  }
1475  }
1476 
1481  {
1482  if(rucheSelectionnee.getMesureRuche().getHumiditeInterieure() > rucheSelectionnee.getAlerteRuche().getHumiditeInterieurMax())
1483  {
1484  alerteHumiditeInterieure.setText("Humidité intérieure trop élevée !");
1485  alerteHumiditeInterieure.setTextColor(Color.parseColor("#ff0000"));
1486  rucheHumiditeInterieureHaute.setVisibility(View.VISIBLE);
1487  rucheHumiditeInterieureBasse.setVisibility(View.INVISIBLE);
1488  rucheHumiditeInterieureNormale.setVisibility(View.INVISIBLE);
1489  }
1490  else if(rucheSelectionnee.getMesureRuche().getHumiditeInterieure() < rucheSelectionnee.getAlerteRuche().getHumiditeInterieurMin())
1491  {
1492  alerteHumiditeInterieure.setText("Humidité intérieure trop basse !");
1493  alerteHumiditeInterieure.setTextColor(Color.parseColor("#498df7"));
1494  rucheHumiditeInterieureHaute.setVisibility(View.INVISIBLE);
1495  rucheHumiditeInterieureBasse.setVisibility(View.VISIBLE);
1496  rucheHumiditeInterieureNormale.setVisibility(View.INVISIBLE);
1497  }
1498  else
1499  {
1500  alerteHumiditeInterieure.setText("");
1501  rucheHumiditeInterieureHaute.setVisibility(View.INVISIBLE);
1502  rucheHumiditeInterieureBasse.setVisibility(View.INVISIBLE);
1503  rucheHumiditeInterieureNormale.setVisibility(View.VISIBLE);
1504  }
1505  }
1506 
1511  {
1512  if(rucheSelectionnee.getMesureRuche().getHumiditeExterieure() > rucheSelectionnee.getAlerteRuche().getHumiditeExterieurMax())
1513  {
1514  alerteHumiditeExterieure.setText("Humidité extérieure trop élevée !");
1515  alerteHumiditeExterieure.setTextColor(Color.parseColor("#ff0000"));
1516  rucheHumiditeExterieureHaute.setVisibility(View.VISIBLE);
1517  rucheHumiditeExterieureBasse.setVisibility(View.INVISIBLE);
1518  rucheHumiditeExterieureNormale.setVisibility(View.INVISIBLE);
1519  }
1520  else if(rucheSelectionnee.getMesureRuche().getHumiditeExterieure() < rucheSelectionnee.getAlerteRuche().getHumiditeExterieurMin())
1521  {
1522  alerteHumiditeExterieure.setText("Humidité extérieure trop basse !");
1523  alerteHumiditeExterieure.setTextColor(Color.parseColor("#498df7"));
1524  rucheHumiditeExterieureHaute.setVisibility(View.INVISIBLE);
1525  rucheHumiditeExterieureBasse.setVisibility(View.VISIBLE);
1526  rucheHumiditeExterieureNormale.setVisibility(View.INVISIBLE);
1527  }
1528  else
1529  {
1530  alerteHumiditeExterieure.setText("");
1531  rucheHumiditeExterieureHaute.setVisibility(View.INVISIBLE);
1532  rucheHumiditeExterieureBasse.setVisibility(View.INVISIBLE);
1533  rucheHumiditeExterieureNormale.setVisibility(View.VISIBLE);
1534  }
1535  }
1536 
1540  public void afficherAlertePoids()
1541  {
1542  if(rucheSelectionnee.getMesureRuche().getPoids() > rucheSelectionnee.getAlerteRuche().getPoidsMax())
1543  {
1544  alertePoids.setText("Poids trop haut !");
1545  alertePoids.setTextColor(Color.parseColor("#ff0000"));
1546  ruchePoidsHaute.setVisibility(View.VISIBLE);
1547  ruchePoidsBas.setVisibility(View.INVISIBLE);
1548  ruchePoidsNormale.setVisibility(View.INVISIBLE);
1549 
1550  }
1551  else if(rucheSelectionnee.getMesureRuche().getPoids() < rucheSelectionnee.getAlerteRuche().getPoidsMin())
1552  {
1553  alertePoids.setText("Poids trop bas !");
1554  alertePoids.setTextColor(Color.parseColor("#498df7"));
1555  ruchePoidsHaute.setVisibility(View.INVISIBLE);
1556  ruchePoidsBas.setVisibility(View.VISIBLE);
1557  ruchePoidsNormale.setVisibility(View.INVISIBLE);
1558  }
1559  else
1560  {
1561  alertePoids.setText("");
1562  ruchePoidsHaute.setVisibility(View.INVISIBLE);
1563  ruchePoidsBas.setVisibility(View.INVISIBLE);
1564  ruchePoidsNormale.setVisibility(View.VISIBLE);
1565  }
1566  }
1567 
1569  {
1570  if(rucheSelectionnee.getMesureRuche().getPression() > rucheSelectionnee.getAlerteRuche().getPressionMax())
1571  {
1572  alertePression.setText("Pression trop haute !");
1573  alertePression.setTextColor(Color.parseColor("#ff0000"));
1574  ruchePressionHaute.setVisibility(View.VISIBLE);
1575  ruchePressionBasse.setVisibility(View.INVISIBLE);
1576  ruchePressionNormale.setVisibility(View.INVISIBLE);
1577 
1578  }
1579  else if(rucheSelectionnee.getMesureRuche().getPression() < rucheSelectionnee.getAlerteRuche().getPressionMin())
1580  {
1581  alertePression.setText("Pression trop basse !");
1582  alertePression.setTextColor(Color.parseColor("#498df7"));
1583  ruchePressionHaute.setVisibility(View.INVISIBLE);
1584  ruchePressionBasse.setVisibility(View.VISIBLE);
1585  ruchePressionNormale.setVisibility(View.INVISIBLE);
1586  }
1587  else
1588  {
1589  alertePression.setText("");
1590  ruchePressionHaute.setVisibility(View.INVISIBLE);
1591  ruchePressionBasse.setVisibility(View.INVISIBLE);
1592  ruchePressionNormale.setVisibility(View.VISIBLE);
1593  }
1594  }
1595 }
com.example.bee_honeyt.Communication.setPassword
void setPassword(String password)
Definition: Communication.java:99
com.example.bee_honeyt.IHMMobile.desAbonnerRuches
void desAbonnerRuches()
Méthode pour se desabonner d'une ruche.
Definition: IHMMobile.java:809
com.example.bee_honeyt.IHMMobile.traiterMessage
void traiterMessage(String message)
Methode pour traiter le message en extrayant les données.
Definition: IHMMobile.java:558
com.example.bee_honeyt.IHMMobile.rucheHumiditeExterieureHaute
ImageView rucheHumiditeExterieureHaute
Definition: IHMMobile.java:124
com.example.bee_honeyt.IHMMobile.onCreate
void onCreate(Bundle savedInstanceState)
Méthode appelée à la création de l'application.
Definition: IHMMobile.java:140
com.example.bee_honeyt.IHMMobile.afficheFenetreAjouter
void afficheFenetreAjouter(View Ajouter)
Méthode pour afficher la fenetre ajouter une ruche.
Definition: IHMMobile.java:1072
com.example.bee_honeyt.IHMMobile.handler
final Handler handler
Handler de communication entre l'activité et la communication MQTT.
Definition: IHMMobile.java:509
com.example.bee_honeyt.IHMMobile.alertePression
TextView alertePression
Zone pour afficher une alerte Pression.
Definition: IHMMobile.java:116
com.example.bee_honeyt.IHMMobile.applicationID
String applicationID
Definition: IHMMobile.java:93
com.example.bee_honeyt.IHMMobile.afficherAlertePression
void afficherAlertePression()
Definition: IHMMobile.java:1568
com.example.bee_honeyt.IHMMobile.afficherConnexion
void afficherConnexion(String message)
Affiche la connexion au topic.
Definition: IHMMobile.java:490
com.example.bee_honeyt.IHMMobile.initialiserStockage
void initialiserStockage()
Initialiser le stackage des ruches.
Definition: IHMMobile.java:160
com.example.bee_honeyt.IHMMobile.afficherAlerteTemperatureInterieure
void afficherAlerteTemperatureInterieure()
Méthode pour afficher l'alerte de la température interieure.
Definition: IHMMobile.java:1418
com.example.bee_honeyt.IHMMobile.adapterRuche
ArrayAdapter< String > adapterRuche
Adaptateur pour mettre la liste de noms de ruche.
Definition: IHMMobile.java:77
com.example.bee_honeyt.IHMMobile.reponsePoidsMin
String reponsePoidsMin
La réponse du poids minimum entré dans la zone de texte pour paramétrer une ruche.
Definition: IHMMobile.java:90
com.example.bee_honeyt.Communication.TTN_CONNECTE
static final int TTN_CONNECTE
Definition: Communication.java:51
com.example.bee_honeyt.IHMGraphique
L'activité pour afficher les graphiques.
Definition: IHMGraphique.java:46
com.example.bee_honeyt.IHMMobile.stockerParametreConnexion
void stockerParametreConnexion()
Definition: IHMMobile.java:1402
com.example.bee_honeyt.IHMMobile.key
String key
Definition: IHMMobile.java:94
com.example.bee_honeyt.IHMMobile.reconnexion
boolean reconnexion
Definition: IHMMobile.java:95
com.example.bee_honeyt.IHMMobile.afficherAlerteTemperatureExterieure
void afficherAlerteTemperatureExterieure()
Méthode pour afficher l'alerte de la température extérieure minimum.
Definition: IHMMobile.java:1450
com.example.bee_honeyt.Ruche
Les données et seuils d'une ruche.
Definition: Ruche.java:18
com.example.bee_honeyt.IHMMobile.afficherAlertePoids
void afficherAlertePoids()
Méthode pour afficher l'alerte de poids.
Definition: IHMMobile.java:1540
com.example.bee_honeyt.IHMMobile.decoderTopic
void decoderTopic(String topic)
Méthode pour decoder le topic.
Definition: IHMMobile.java:822
com.example.bee_honeyt.IHMMobile.initialiserMQTT
void initialiserMQTT()
Initialiser la communication MQTT.
Definition: IHMMobile.java:168
com.example.bee_honeyt.IHMMobile.TAG
static final String TAG
TAG pour les logs.
Definition: IHMMobile.java:60
com.example.bee_honeyt.Ruche.getDeviceID
final String getDeviceID()
accesseur DeviceID
Definition: Ruche.java:83
com.example.bee_honeyt.IHMMobile.rucheTemperatureInterieureChaud
ImageView rucheTemperatureInterieureChaud
Definition: IHMMobile.java:121
com.example.bee_honeyt.IHMMobile.onActivityResult
void onActivityResult(int requestCode, int resultCode, Intent intent)
Traite le retour de l'activité IHMGestionPartie.
Definition: IHMMobile.java:1365
com.example.bee_honeyt.IHMMobile.reponseHumiditeInterieureMax
String reponseHumiditeInterieureMax
La réponse de l'humidite intérieure maximum entré dans la zone de texte pour paramétrer une ruche.
Definition: IHMMobile.java:85
com.example.bee_honeyt.IHMMobile.reponseTemperatureExterieureMax
String reponseTemperatureExterieureMax
La réponse de la température extérieure maximum entré dans la zone de texte pour paramétrer une ruche...
Definition: IHMMobile.java:83
com.example.bee_honeyt.IHMMobile.recupererParametreConnexion
void recupererParametreConnexion()
Definition: IHMMobile.java:1408
com.example.bee_honeyt.IHMMobile.afficheTemperatureExterieur
TextView afficheTemperatureExterieur
Zone pour afficher la température exterieure.
Definition: IHMMobile.java:102
com.example.bee_honeyt.IHMMobile.indexRucheSelectionnee
int indexRucheSelectionnee
index dans la liste
Definition: IHMMobile.java:76
com.example.bee_honeyt.IHMMobile.creerRucher
void creerRucher()
Méthode pour créé une ruche.
Definition: IHMMobile.java:186
com.example.bee_honeyt.IHMMobile.rucheTemperatureInterieureFroid
ImageView rucheTemperatureInterieureFroid
Definition: IHMMobile.java:122
com.example.bee_honeyt.Communication.setUsername
void setUsername(String username)
Definition: Communication.java:90
com.example.bee_honeyt.IHMMobile.afficherPression
void afficherPression(int pression)
Affiche la pression.
Definition: IHMMobile.java:470
com.example.bee_honeyt.IHMMobile.extraireHorodatageMessage
String extraireHorodatageMessage(String message)
Méthode pour extraire l'horodatage.
Definition: IHMMobile.java:898
com.example.bee_honeyt.IHMMobile.afficheFenetreSupprimer
void afficheFenetreSupprimer(View supprimer)
Méthode pour afficher la fenetre supprimer une ruche.
Definition: IHMMobile.java:1038
com.example.bee_honeyt.IHMMobile.alerteHumiditeExterieure
TextView alerteHumiditeExterieure
Zone pour afficher une alerte Humidite exterieure.
Definition: IHMMobile.java:114
com.example.bee_honeyt.IHMMobile.rucheSelectionnee
Ruche rucheSelectionnee
Relation avec la classe ruche.
Definition: IHMMobile.java:75
com.example.bee_honeyt.IHMMobile.affichePoids
TextView affichePoids
Zone pour afficher le poids.
Definition: IHMMobile.java:105
com.example.bee_honeyt.IHMMobile.EXTRAIRE_DONNNEES_ENVIRONEMENT
static final int EXTRAIRE_DONNNEES_ENVIRONEMENT
Le numéro de port pour les données de l'environnement.
Definition: IHMMobile.java:62
com.example.bee_honeyt.IHMMobile.ajouterRuche
void ajouterRuche(String nom, String deviceID)
Méthode pour ajouter une ruche.
Definition: IHMMobile.java:1130
com.example.bee_honeyt.IHMMobile.ruchePressionHaute
ImageView ruchePressionHaute
Definition: IHMMobile.java:133
com.example.bee_honeyt.IHMMobile.listeNomsRuches
List< String > listeNomsRuches
Zone pour afficher la liste du noms des ruches.
Definition: IHMMobile.java:110
com.example.bee_honeyt.IHMMobile.reponsePoidsMax
String reponsePoidsMax
La réponse du poids maximum entré dans la zone de texte pour paramétrer une ruche.
Definition: IHMMobile.java:89
com.example.bee_honeyt.IHMMobile.ruchePoidsBas
ImageView ruchePoidsBas
Definition: IHMMobile.java:131
com.example.bee_honeyt.StockageRucher.obtenirRuches
Vector< Ruche > obtenirRuches()
Méthode pour obtenir les ruches.
Definition: StockageRucher.java:58
com.example.bee_honeyt.IHMMobile.ruchePoidsNormale
ImageView ruchePoidsNormale
Definition: IHMMobile.java:129
com.example.bee_honeyt.IHMMobile
L'activité principale de l'application BeeHoney't.
Definition: IHMMobile.java:55
com.example.bee_honeyt.IHMMobile.alerteHumiditeInterieure
TextView alerteHumiditeInterieure
Zone pour afficher une alerte Humidite interieure.
Definition: IHMMobile.java:113
com.example.bee_honeyt.IHMMobile.stockage
StockageRucher stockage
Le stockage.
Definition: IHMMobile.java:74
com.example.bee_honeyt.IHMMobile.listeRuches
Spinner listeRuches
Liste déroulante pour les ruches.
Definition: IHMMobile.java:100
com.example.bee_honeyt.IHMMobile.extraireTemperatureInterieure
double extraireTemperatureInterieure(String payloadFields)
Méthode pour extraire la temperature interieure.
Definition: IHMMobile.java:742
com.example.bee_honeyt.IHMMobile.ACTIVITE_CONNEXION
static final int ACTIVITE_CONNEXION
L'identifiant de l'activité IHMConnexion.
Definition: IHMMobile.java:67
com.example.bee_honeyt.IHMMobile.afficheHumiditeInterieur
TextView afficheHumiditeInterieur
Zone pour afficher l'humidité interieure.
Definition: IHMMobile.java:103
com.example.bee_honeyt.IHMMobile.afficheGraphiques
void afficheGraphiques(View view)
Méthode pour afficher les graphiques.
Definition: IHMMobile.java:1328
com.example.bee_honeyt.IHMMobile.reponseTemperatureInterieureMin
String reponseTemperatureInterieureMin
La réponse de la température intérieure minimum entré dans la zone de texte pour paramétrer une ruche...
Definition: IHMMobile.java:82
com.example.bee_honeyt.IHMMobile.afficheDeconnexion
TextView afficheDeconnexion
Zone pour afficher la deconnexion.
Definition: IHMMobile.java:109
com.example.bee_honeyt.IHMMobile.afficherHumiditeInterieure
void afficherHumiditeInterieure(int humiditeInterieure)
Affiche l'humidite interieure.
Definition: IHMMobile.java:440
com.example.bee_honeyt.IHMMobile.CHAMP_TOPIC_DEVICE_ID
static final int CHAMP_TOPIC_DEVICE_ID
Definition: IHMMobile.java:66
com.example.bee_honeyt.IHMMobile.afficherHorodatage
void afficherHorodatage(String horodatage)
Affiche l'horodatage.
Definition: IHMMobile.java:480
com.example.bee_honeyt.Alertes.toJSON
String toJSON()
Création de données JSON pour pouvoir stocker les seuils d'alerte dans le stockage.
Definition: Alertes.java:236
com.example.bee_honeyt.IHMMobile.reponseNom
String reponseNom
La réponse du nom entré dans la zone de texte pour ajouté une ruche.
Definition: IHMMobile.java:79
com.example.bee_honeyt.IHMMobile.onStart
void onStart()
Méthode appelée au démarrage après le onCreate() ou un restart après un onStop()
Definition: IHMMobile.java:204
com.example.bee_honeyt.IHMMobile.initialiserIHM
void initialiserIHM()
Méthode pour initialiser l'IHM.
Definition: IHMMobile.java:253
com.example.bee_honeyt.IHMMobile.supprimerRuche
void supprimerRuche(Ruche ruche)
Méthode pour supprimer une ruche.
Definition: IHMMobile.java:1143
com.example.bee_honeyt.IHMMobile.connexion
Button connexion
Definition: IHMMobile.java:135
com.example.bee_honeyt.Communication.TTN_MESSAGE
static final int TTN_MESSAGE
Definition: Communication.java:53
com.example.bee_honeyt.IHMMobile.rucheTemperatureInterieureNormale
ImageView rucheTemperatureInterieureNormale
Definition: IHMMobile.java:120
com.example.bee_honeyt.IHMMobile.afficherPoids
void afficherPoids(double poids)
Affiche le poids.
Definition: IHMMobile.java:460
com.example.bee_honeyt.IHMMobile.extrairePression
int extrairePression(String payloadFields)
Méthode pour extraire la pression.
Definition: IHMMobile.java:618
com.example.bee_honeyt.IHMMobile.abonnerRuches
void abonnerRuches()
Méthode pour s'abonner a une ruche.
Definition: IHMMobile.java:797
com.example.bee_honeyt.IHMMobile.alerteTemperatureInterieure
TextView alerteTemperatureInterieure
Zone pour afficher une alerte Temperature interieure.
Definition: IHMMobile.java:111
com.example.bee_honeyt.IHMMobile.onResume
void onResume()
Méthode appelée après onStart() ou après onPause()
Definition: IHMMobile.java:214
com.example.bee_honeyt.IHMMobile.rucheTemperatureExterieureNormale
ImageView rucheTemperatureExterieureNormale
Definition: IHMMobile.java:117
com.example.bee_honeyt.IHMMobile.reponsePressionMin
String reponsePressionMin
La réponse de la pression minimum entré dans la zone de texte pour paramétrer une ruche.
Definition: IHMMobile.java:92
com.example.bee_honeyt.IHMMobile.afficherAlerteHumiditeExterieure
void afficherAlerteHumiditeExterieure()
Méthode pour afficher l'alerte de l'humidité extérieure.
Definition: IHMMobile.java:1510
com.example.bee_honeyt.IHMMobile.rucheTemperatureExterieureFroid
ImageView rucheTemperatureExterieureFroid
Definition: IHMMobile.java:118
com.example.bee_honeyt.IHMMobile.extraireTemperatureExterieure
double extraireTemperatureExterieure(String payloadFields)
Méthode pour extraire la temperature exterieure.
Definition: IHMMobile.java:711
com.example.bee_honeyt.IHMMobile.reponsePressionMax
String reponsePressionMax
La réponse de la pression maximum entré dans la zone de texte pour paramétrer une ruche.
Definition: IHMMobile.java:91
com.example.bee_honeyt.IHMMobile.reponseDeviceID
String reponseDeviceID
La réponse du device ID entré dans la zone de texte pour ajouté une ruche.
Definition: IHMMobile.java:80
com.example.bee_honeyt.IHMMobile.rucheHumiditeInterieureBasse
ImageView rucheHumiditeInterieureBasse
Definition: IHMMobile.java:128
com.example.bee_honeyt.IHMMobile.extraireDonneeMessage
String extraireDonneeMessage(String message)
Méthode pour extraire les données du message.
Definition: IHMMobile.java:853
com.example.bee_honeyt.IHMMobile.onDestroy
void onDestroy()
Méthode appelée à la destruction de l'application (après onStop() et détruite par le système Android)
Definition: IHMMobile.java:244
com.example.bee_honeyt.IHMMobile.afficherAlertesEnvironnement
void afficherAlertesEnvironnement()
Méthode pour afficher les alertes de l'environnement.
Definition: IHMMobile.java:603
com.example.bee_honeyt.IHMMobile.ruchePoidsHaute
ImageView ruchePoidsHaute
Definition: IHMMobile.java:130
com.example.bee_honeyt.Communication.TTN_DECONNECTE
static final int TTN_DECONNECTE
Definition: Communication.java:52
com.example.bee_honeyt.IHMMobile.initialiserListeRuches
void initialiserListeRuches()
Initialise la liste déroulante des ruches.
Definition: IHMMobile.java:342
com.example.bee_honeyt.IHMMobile.CHAMP_TOPIC_APPLICATION_ID
static final int CHAMP_TOPIC_APPLICATION_ID
Definition: IHMMobile.java:65
com.example.bee_honeyt.IHMMobile.afficherAlerteHumiditeInterieure
void afficherAlerteHumiditeInterieure()
Méthode pour afficher l'alerte de l'humidité intérieure.
Definition: IHMMobile.java:1480
com.example.bee_honeyt.Ruche.getNom
final String getNom()
accesseur Nom
Definition: Ruche.java:65
com.example.bee_honeyt.IHMMobile.reponseHumiditeExterieureMin
String reponseHumiditeExterieureMin
La réponse de l'humidite extérieure minimum entré dans la zone de texte pour paramétrer une ruche.
Definition: IHMMobile.java:88
com.example.bee_honeyt.IHMMobile.APPLICATION_ID
static final String APPLICATION_ID
L'application ID par défaut.
Definition: IHMMobile.java:64
com.example.bee_honeyt.Communication.connecter
void connecter()
Connexion au TTN.
Definition: Communication.java:169
com.example.bee_honeyt.IHMMobile.remettreAZeroAlertes
void remettreAZeroAlertes()
Réinitialise l'affichage des alertes.
Definition: IHMMobile.java:329
com.example.bee_honeyt.IHMMobile.rucheTemperatureExterieureChaud
ImageView rucheTemperatureExterieureChaud
Definition: IHMMobile.java:119
com.example.bee_honeyt.IHMMobile.onPause
void onPause()
Méthode appelée après qu'une boîte de dialogue s'est affichée (on reprend sur un onResume()) ou avant...
Definition: IHMMobile.java:224
com.example.bee_honeyt.IHMMobile.rucheHumiditeExterieureBasse
ImageView rucheHumiditeExterieureBasse
Definition: IHMMobile.java:125
com.example.bee_honeyt.StockageRucher
Definition: StockageRucher.java:21
com.example.bee_honeyt.IHMMobile.extrairePoids
double extrairePoids(String payloadFields)
Méthode pour extraire le poids.
Definition: IHMMobile.java:1013
com.example.bee_honeyt.IHMMobile.ajouterParametreAlerte
void ajouterParametreAlerte(String reponseTemperatureInterieureMax, String reponseTemperatureInterieureMin, String reponseTemperatureExterieureMax, String reponseTemperatureExterieureMin, String reponseHumiditeInterieureMax, String reponseHumiditeInterieureMin, String reponseHumiditeExterieureMax, String reponseHumiditeExterieureMin, String reponsePoidsMax, String reponsePoidsMin, String reponsePressionMax, String reponsePressionMin)
Méthode pour définir les nouveaux seuils d'alerte d'une ruche.
Definition: IHMMobile.java:1393
com.example.bee_honeyt.IHMMobile.rucheHumiditeExterieureNormale
ImageView rucheHumiditeExterieureNormale
Definition: IHMMobile.java:123
com.example.bee_honeyt.IHMConnexion
Activité pour paramétrer la connexion au TTN.
Definition: IHMConnexion.java:30
com.example.bee_honeyt.IHMMobile.extraireDeviceId
String extraireDeviceId(String topic)
Méthode pour extraire le deviceID.
Definition: IHMMobile.java:989
com.example.bee_honeyt.IHMMobile.afficheConnexion
TextView afficheConnexion
Zone pour afficher la connexion.
Definition: IHMMobile.java:108
com.example.bee_honeyt.IHMMobile.afficherTemperatureInterieure
void afficherTemperatureInterieure(double temperatureInterieure)
Affiche la température intérieure.
Definition: IHMMobile.java:420
com.example.bee_honeyt.IHMMobile.ruchePressionBasse
ImageView ruchePressionBasse
Definition: IHMMobile.java:134
com.example.bee_honeyt.Alertes
Classe pour gérer les alertes.
Definition: Alertes.java:21
com.example.bee_honeyt.IHMMobile.EXTRAIRE_DONNEE_POIDS
static final int EXTRAIRE_DONNEE_POIDS
Le numéro de port pour les données de poids.
Definition: IHMMobile.java:61
com.example.bee_honeyt.IHMMobile.afficheIHMConnexion
void afficheIHMConnexion(View view)
Méthode pour afficher l'activité de paramétrage de connexion TTN.
Definition: IHMMobile.java:1343
com.example.bee_honeyt.IHMMobile.affichePression
TextView affichePression
Zone pour afficher la pression.
Definition: IHMMobile.java:106
com.example.bee_honeyt.IHMMobile.rucher
static Vector< Ruche > rucher
Conteneur pour les ruches.
Definition: IHMMobile.java:72
com.example.bee_honeyt.IHMMobile.alertePoids
TextView alertePoids
Zone pour afficher une alerte Poids.
Definition: IHMMobile.java:115
com.example.bee_honeyt.IHMMobile.afficheHumiditeExterieur
TextView afficheHumiditeExterieur
Zone pour afficher l'humidité exterieure.
Definition: IHMMobile.java:104
com.example.bee_honeyt.IHMMobile.extrairePort
int extrairePort(String message)
Méthode pour extraire le port.
Definition: IHMMobile.java:773
com.example.bee_honeyt.IHMMobile.reponseHumiditeExterieureMax
String reponseHumiditeExterieureMax
La réponse de l'humidite extérieure maximum entré dans la zone de texte pour paramétrer une ruche.
Definition: IHMMobile.java:87
com.example.bee_honeyt.IHMMobile.afficheHorodatage
TextView afficheHorodatage
Zone pour afficher l'horodatage.
Definition: IHMMobile.java:107
com.example.bee_honeyt.IHMMobile.communicationMQTT
Communication communicationMQTT
Relation avec la classe Communication.
Definition: IHMMobile.java:78
com.example.bee_honeyt.IHMMobile.initialiserAffichageDonnees
void initialiserAffichageDonnees()
Méthode pour initialiser l'affichage des données.
Definition: IHMMobile.java:313
com.example.bee_honeyt.IHMMobile.reponseTemperatureInterieureMax
String reponseTemperatureInterieureMax
La réponse de la température intérieure maximum entré dans la zone de texte pour paramétrer une ruche...
Definition: IHMMobile.java:81
com.example.bee_honeyt.IHMMobile.extraireHumiditeInterieure
int extraireHumiditeInterieure(String payloadFields)
Méthode pour extraire l'humidité intérieure.
Definition: IHMMobile.java:680
com.example.bee_honeyt.Communication
Déclaration de la classe Communication.
Definition: Communication.java:35
com.example.bee_honeyt.IHMMobile.rucheHumiditeInterieureNormale
ImageView rucheHumiditeInterieureNormale
Definition: IHMMobile.java:126
com.example.bee_honeyt.IHMMobile.ruchePressionNormale
ImageView ruchePressionNormale
Definition: IHMMobile.java:132
com.example.bee_honeyt.IHMMobile.parametrageAlertes
static Vector< Alertes > parametrageAlertes
Definition: IHMMobile.java:73
com.example.bee_honeyt.IHMMobile.extraireHumiditeExterieure
int extraireHumiditeExterieure(String payloadFields)
Méthode pour extraire l'humidité exterieure.
Definition: IHMMobile.java:649
com.example.bee_honeyt.IHMMobile.reponseHumiditeInterieureMin
String reponseHumiditeInterieureMin
La réponse de l'humidite intérieure minimum entré dans la zone de texte pour paramétrer une ruche.
Definition: IHMMobile.java:86
com.example.bee_honeyt.IHMMobile.extraireHorodatage
String extraireHorodatage(String metaData)
Méthode pour mettre l'horodatage sur le bon fuseau horaire et la date au bon format.
Definition: IHMMobile.java:941
com.example.bee_honeyt.IHMMobile.onStop
void onStop()
Méthode appelée lorsque l'activité n'est plus visible.
Definition: IHMMobile.java:234
com.example.bee_honeyt.IHMMobile.afficherDeconnexion
void afficherDeconnexion(String message)
Affiche la Deconnexion au topic.
Definition: IHMMobile.java:500
com.example.bee_honeyt.IHMMobile.afficheTemperatureInterieur
TextView afficheTemperatureInterieur
Zone pour afficher la température interieure.
Definition: IHMMobile.java:101
com.example.bee_honeyt.IHMMobile.afficherTemperatureExterieure
void afficherTemperatureExterieure(double temperatureExterieure)
Affiche la température exterieure.
Definition: IHMMobile.java:430
com.example.bee_honeyt.IHMMobile.rucheHumiditeInterieureHaute
ImageView rucheHumiditeInterieureHaute
Definition: IHMMobile.java:127
com.example.bee_honeyt.IHMMobile.reponseTemperatureExterieureMin
String reponseTemperatureExterieureMin
La réponse de la température extérieure minimum entré dans la zone de texte pour paramétrer une ruche...
Definition: IHMMobile.java:84
com.example.bee_honeyt.IHMMobile.afficherHumiditeExterieure
void afficherHumiditeExterieure(int humiditeExterieure)
Affiche l'humidite exterieure.
Definition: IHMMobile.java:450
com.example.bee_honeyt.IHMMobile.alerteTemperatureExterieure
TextView alerteTemperatureExterieure
Zone pour afficher une alerte Temperature exterieure.
Definition: IHMMobile.java:112
com.example.bee_honeyt.IHMMobile.initialiserImageAlertes
void initialiserImageAlertes()
Definition: IHMMobile.java:288
com.example.bee_honeyt.IHMMobile.afficheFenetreParametrageAlertes
void afficheFenetreParametrageAlertes(View parametrer)
Méthode pour afficher la fenetre ajouter une ruche.
Definition: IHMMobile.java:1163