BeeHoneyt  1.1
BTS SNIR LaSalle Avignon 2021
IHMGraphique.java
Aller à la documentation de ce fichier.
1 package com.example.bee_honeyt;
2 
3 import android.content.Intent;
4 import android.graphics.Color;
5 import android.os.Bundle;
6 
7 import androidx.appcompat.app.AppCompatActivity;
8 
9 import android.util.Log;
10 import android.view.View;
11 import android.widget.Button;
12 import android.widget.TextView;
13 import android.widget.Toast;
14 
15 import com.jjoe64.graphview.GraphView;
16 import com.jjoe64.graphview.GridLabelRenderer;
17 import com.jjoe64.graphview.series.DataPoint;
18 import com.jjoe64.graphview.series.LineGraphSeries;
19 
20 import org.json.JSONArray;
21 import org.json.JSONException;
22 import org.json.JSONObject;
23 
24 import java.text.ParseException;
25 import java.text.SimpleDateFormat;
26 import java.util.ArrayList;
27 import java.util.Date;
28 import java.util.List;
29 import java.util.Locale;
30 import java.util.TimeZone;
31 import java.util.Vector;
32 
46 public class IHMGraphique extends AppCompatActivity
47 {
51  private static final String TAG = "_IHMGraphique";
52  private static final int CHOIX_GRAPHE_POIDS = 0;
53  private static final int CHOIX_GRAPHE_TEMPERATURE_INTERIEURE = 1;
54  private static final int CHOIX_GRAPHE_HUMIDITE_INTERIEURE = 2;
55  private static final int CHOIX_GRAPHE_TEMPERATURE_EXTERIEURE = 3;
56  private static final int CHOIX_GRAPHE_HUMIDITE_EXTERIEURE = 4;
57  private static final int CHOIX_GRAPHE_PRESSION = 5;
58 
59  private static final int MAX_TEMPERATURE_INTERIEURE = 50;
60  private static final int MIN_TEMPERATURE_INTERIEURE = 0;
61  private static final int MAX_HUMIDITE_INTERIEURE = 100;
62  private static final int MIN_HUMIDITE_INTERIEURE = 0;
63  private static final int MAX_TEMPERATURE_EXTERIEURE = 50;
64  private static final int MIN_TEMPERATURE_EXTERIEURE = 0;
65  private static final int MAX_HUMIDITE_EXTERIEURE = 100;
66  private static final int MIN_HUMIDITE_EXTERIEURE = 0;
67  private static final int MAX_PRESSION = 1200;
68  private static final int MIN_PRESSION = 900;
69  private static final int MAX_POIDS = 50;
70  private static final int MIN_POIDS = 0;
71 
76  private String contenuHistorique;
77  private String applicationID;
78  private String key;
79  private String deviceID;
81  // Pour le poids
82  private Vector<List<String>> donneesPoids;
83  private List<Double> mesuresPoids;
84  private Double poidsCourant = new Double(0.);
85  private Double poidsMin = new Double((double)MAX_POIDS);
86  private Double poidsMoyenne = new Double(0.);
87  private Double poidsMax = new Double((double)MIN_POIDS);
88  // Pour la pression
89  private Vector<List<String>> donneesPression;
90  private List<Double> mesuresPression;
91  private Double pressionCourant = new Double(0.);
92  private Double pressionMin = new Double((double)MAX_PRESSION);
93  private Double pressionMoyenne = new Double(0.);
94  private Double pressionMax = new Double((double)MIN_PRESSION);
95  //Pour la température intérieure
96  private Vector<List<String>> donneeTemperatureInterieure;
97  private List<Double> mesuresTemperatureInterieure;
98  private Double temperatureInterieureCourante = new Double(0.);
99  private Double temperatureInterieureMin = new Double((double)MIN_TEMPERATURE_INTERIEURE);
100  private Double temperatureInterieureMoyenne = new Double(0.);
101  private Double temperatureInterieureMax = new Double((double)MAX_TEMPERATURE_INTERIEURE);
102  //Pour l'humidité intérieure
103  private Vector<List<String>> donneeHumiditeInterieure;
104  private List<Double> mesuresHumiditeInterieure;
105  private Double humiditeInterieureCourante = new Double(0.);
106  private Double humiditeInterieureMin = new Double((double)MIN_HUMIDITE_INTERIEURE);
107  private Double humiditeInterieureMoyenne = new Double(0.);
108  private Double humiditeInterieureMax = new Double((double)MAX_HUMIDITE_INTERIEURE);
109  //Pour la température extérieure
110  private Vector<List<String>> donneeTemperatureExterieure;
111  private List<Double> mesuresTemperatureExterireure;
112  private Double temperatureExterireureCourante = new Double(0.);
113  private Double temperatureExterireureMin = new Double((double)MIN_TEMPERATURE_EXTERIEURE);
114  private Double temperatureExterireureMoyenne = new Double(0.);
115  private Double temperatureExterireureMax = new Double((double)MAX_TEMPERATURE_EXTERIEURE);
116  //Pour l'humidité extérireure
117  private Vector<List<String>> donneeHumiditeExterireure;
118  private List<Double> mesuresHumiditeExterireure;
119  private Double humiditeExterireureCourante = new Double(0.);
120  private Double humiditeExterireureMin = new Double((double)MIN_HUMIDITE_EXTERIEURE);
121  private Double humiditeExterireureMoyenne = new Double(0.);
122  private Double humiditeExterireureMax = new Double((double)MAX_HUMIDITE_EXTERIEURE);
123 
127  private GraphView graphique;
128  private LineGraphSeries<DataPoint> seriesPoids;
129  private LineGraphSeries<DataPoint> seriesPression;
130  private LineGraphSeries<DataPoint> seriesTemperatureInterieure;
131  private LineGraphSeries<DataPoint> seriesHumiditeInterieure;
132  private LineGraphSeries<DataPoint> seriesTemperatureExterieure;
133  private LineGraphSeries<DataPoint> seriesHumiditeExterieure;
134 
135  private Button boutonTempInt;
136  private Button boutonTempExt;
137  private Button boutonHumInt;
138  private Button boutonHumExt;
139  private Button boutonPoids;
140  private Button boutonPression;
141  private TextView valeurCourante;
142  private TextView donneesMin;
143  private TextView donneesMoyenne;
144  private TextView donneesMax;
145 
146  @Override
147  protected void onCreate(Bundle savedInstanceState)
148  {
149  super.onCreate(savedInstanceState);
150  setContentView(R.layout.activity_ihmgraphique);
151  Log.d(TAG,"onCreate()");
152 
153  getSupportActionBar().setTitle(getString(R.string.app_name) + " v" + BuildConfig.VERSION_NAME);
154 
155  Intent intent = getIntent();
156  applicationID = intent.getStringExtra("application");
157  key = intent.getStringExtra("key");
158  deviceID = intent.getStringExtra("device");
159 
161 
163 
164  initialiserIHM();
165 
167 
169  }
170 
174  private void initialiserHistorique()
175  {
176  historique = new Historique();
178  {
179  // Déclenchée sur évènement chargement
180  public void onLoad(String contenuJSON)
181  {
182  //Log.d(TAG, "onLoad() contenuJSON = " + contenuJSON);
183  contenuHistorique = contenuJSON;
184 
185  switch(choixGraphique)
186  {
187  case CHOIX_GRAPHE_POIDS:
189  break;
192  break;
195  break;
198  break;
201  break;
204  break;
205  }
206  }
207 
208  // Déclenchée sur évènement erreur de chargement
209  public void onError()
210  {
211  Log.d(TAG, "onError()");
212  }
213  });
214  }
215 
219  private void chargerHistorique()
220  {
221  String url = "https://" + applicationID + ".data.thethingsnetwork.org";
222  Date date = new Date();
223  historique.charger(url, key, deviceID, date.getHours() + "h"); // Sur la journée seulement
224  Toast.makeText(IHMGraphique.this,"Chargement des données de l'historique", Toast.LENGTH_SHORT).show();
225  }
226 
230  private void initialiserDonnees()
231  {
232  donneesPoids = new Vector<List<String>>();
233  mesuresPoids = new ArrayList<Double>(24); // pour 24 h
234 
235  donneeTemperatureInterieure = new Vector<List<String>>();
236  mesuresTemperatureInterieure = new ArrayList<Double>(24);
237 
238  donneeHumiditeInterieure = new Vector<List<String>>();
239  mesuresHumiditeInterieure = new ArrayList<Double>(24);
240 
241  donneeTemperatureExterieure = new Vector<List<String>>();
242  mesuresTemperatureExterireure = new ArrayList<Double>(24);
243 
244  donneeHumiditeExterireure = new Vector<List<String>>();
245  mesuresHumiditeExterireure = new ArrayList<Double>(24);
246 
247  donneesPression = new Vector<List<String>>();
248  mesuresPression = new ArrayList<Double>(24);
249  }
250 
254  private void initialiserIHM()
255  {
256  graphique = (GraphView) findViewById(R.id.graphique);
257 
258  boutonHumExt = findViewById(R.id.boutonHumExt);
259  boutonHumInt = findViewById(R.id.boutonHumInt);
260  boutonTempExt = findViewById(R.id.boutonTempExt);
261  boutonTempInt = findViewById(R.id.boutonTempInt);
262  boutonPoids = findViewById(R.id.boutonPoids);
263  boutonPression = findViewById(R.id.boutonPression);
264 
265  valeurCourante = findViewById(R.id.valeurCourante);
266  donneesMin = findViewById(R.id.donneesMin);
267  donneesMoyenne = findViewById(R.id.donneesMoyenne);
268  donneesMax = findViewById(R.id.donneesMax);
269 
270  boutonPoids.setOnClickListener(new View.OnClickListener()
271  {
272  @Override
273  public void onClick(View v)
274  {
275  graphique.removeAllSeries();
276  graphique.getViewport().setMaxY(MAX_POIDS);
277  graphique.getViewport().setMinY(0);
278  graphique.getGridLabelRenderer().setNumVerticalLabels((MAX_POIDS/10)+1);
279  changerChoix(CHOIX_GRAPHE_POIDS);
280 
281  chargerHistorique();
282  }
283  });
284 
285  boutonTempInt.setOnClickListener(new View.OnClickListener()
286  {
287  @Override
288  public void onClick(View v)
289  {
290  graphique.removeAllSeries();
291  graphique.getViewport().setMaxY(MAX_TEMPERATURE_INTERIEURE);
292  graphique.getViewport().setMinY(0);
293  graphique.getGridLabelRenderer().setNumVerticalLabels((MAX_TEMPERATURE_INTERIEURE/10)+1);
294  changerChoix(CHOIX_GRAPHE_TEMPERATURE_INTERIEURE);
295 
296  chargerHistorique();
297  }
298  });
299 
300  boutonHumInt.setOnClickListener(new View.OnClickListener()
301  {
302  @Override
303  public void onClick(View v)
304  {
305  graphique.removeAllSeries();
306  graphique.getViewport().setMaxY(MAX_HUMIDITE_INTERIEURE);
307  graphique.getViewport().setMinY(0);
308  graphique.getGridLabelRenderer().setNumVerticalLabels((MAX_HUMIDITE_INTERIEURE/10)+1);
309  changerChoix(CHOIX_GRAPHE_HUMIDITE_INTERIEURE);
310 
311  chargerHistorique();
312  }
313  });
314 
315  boutonTempExt.setOnClickListener(new View.OnClickListener()
316  {
317  @Override
318  public void onClick(View v)
319  {
320  graphique.removeAllSeries();
321  graphique.getViewport().setMaxY(MAX_TEMPERATURE_EXTERIEURE);
322  graphique.getViewport().setMinY(0);
323  graphique.getGridLabelRenderer().setNumVerticalLabels((MAX_TEMPERATURE_EXTERIEURE/10)+1);
324  changerChoix(CHOIX_GRAPHE_TEMPERATURE_EXTERIEURE);
325 
326  chargerHistorique();
327  }
328  });
329 
330  boutonHumExt.setOnClickListener(new View.OnClickListener()
331  {
332  @Override
333  public void onClick(View v)
334  {
335  graphique.removeAllSeries();
336  graphique.getViewport().setMaxY(MAX_HUMIDITE_EXTERIEURE);
337  graphique.getViewport().setMinY(0);
338  graphique.getGridLabelRenderer().setNumVerticalLabels((MAX_HUMIDITE_EXTERIEURE/10)+1);
339  changerChoix(CHOIX_GRAPHE_HUMIDITE_EXTERIEURE);
340 
341  chargerHistorique();
342  }
343  });
344 
345  boutonPression.setOnClickListener(new View.OnClickListener()
346  {
347  @Override
348  public void onClick(View v)
349  {
350  graphique.removeAllSeries();
351  graphique.getViewport().setMaxY(MAX_PRESSION);
352  graphique.getViewport().setMinY(900);
353  graphique.getGridLabelRenderer().setNumVerticalLabels((MAX_PRESSION/100)+1);
354  changerChoix(CHOIX_GRAPHE_PRESSION);
355 
356  chargerHistorique();
357  }
358  });
359  }
360 
364  private void changerChoix(int choix)
365  {
366  if(choix == choixGraphique)
367  return;
368  deselectionnerChoix(choixGraphique);
369  selectionnerChoix(choix);
370  choixGraphique = choix;
371  }
372 
376  private void selectionnerChoix(int choix)
377  {
378  switch(choix)
379  {
380  case CHOIX_GRAPHE_POIDS:
381  boutonPoids.setBackgroundResource(R.color.selection_on);
382  break;
383  case CHOIX_GRAPHE_TEMPERATURE_INTERIEURE:
384  boutonTempInt.setBackgroundResource(R.color.selection_on);
385  break;
386  case CHOIX_GRAPHE_HUMIDITE_INTERIEURE:
387  boutonHumInt.setBackgroundResource(R.color.selection_on);
388  break;
389  case CHOIX_GRAPHE_HUMIDITE_EXTERIEURE:
390  boutonHumExt.setBackgroundResource(R.color.selection_on);
391  break;
392  case CHOIX_GRAPHE_TEMPERATURE_EXTERIEURE:
393  boutonTempExt.setBackgroundResource(R.color.selection_on);
394  break;
395  case CHOIX_GRAPHE_PRESSION:
396  boutonPression.setBackgroundResource(R.color.selection_on);
397  break;
398  }
399  }
400 
404  private void deselectionnerChoix(int choix)
405  {
406  switch(choix)
407  {
408  case CHOIX_GRAPHE_POIDS:
409  boutonPoids.setBackgroundResource(R.color.selection_off);
410  break;
411  case CHOIX_GRAPHE_TEMPERATURE_INTERIEURE:
412  boutonTempInt.setBackgroundResource(R.color.selection_off);
413  break;
414  case CHOIX_GRAPHE_HUMIDITE_INTERIEURE:
415  boutonHumInt.setBackgroundResource(R.color.selection_off);
416  break;
417  case CHOIX_GRAPHE_TEMPERATURE_EXTERIEURE:
418  boutonTempExt.setBackgroundResource(R.color.selection_off);
419  break;
420  case CHOIX_GRAPHE_HUMIDITE_EXTERIEURE:
421  boutonHumExt.setBackgroundResource(R.color.selection_off);
422  break;
423  case CHOIX_GRAPHE_PRESSION:
424  boutonPression.setBackgroundResource(R.color.selection_off);
425  break;
426  }
427  }
428 
432  private void initialiserGraphique()
433  {
434  // Axe Y
435  graphique.getViewport().setMinY(0);
436  graphique.getViewport().setMaxY(MAX_POIDS); // par défaut
437  graphique.getViewport().setYAxisBoundsManual(true);
438 
439  // Axe X (24 heures)
440  graphique.getViewport().setMinX(0);
441  graphique.getViewport().setMaxX(23);
442  graphique.getViewport().setXAxisBoundsManual(true);
443 
444  // Grille
445  graphique.getGridLabelRenderer().setLabelFormatter(new TimeAsXAxisLabelFormatter("H'h'")); // 0h 1h 2h ...
446  graphique.getGridLabelRenderer().setNumHorizontalLabels(12); // nb d'heures affichées sur l'axe X
447  graphique.getGridLabelRenderer().setNumVerticalLabels((MAX_POIDS/10)+1); // par défaut
448  graphique.getGridLabelRenderer().setGridColor(Color.BLACK);
449  graphique.getGridLabelRenderer().setVerticalLabelsColor(Color.BLACK);
450  graphique.getGridLabelRenderer().setHorizontalLabelsColor(Color.BLACK);
451  graphique.getGridLabelRenderer().setGridStyle(GridLabelRenderer.GridStyle.BOTH);
452 
453  // Légende
454  graphique.getLegendRenderer().setVisible(true);
455  //graphique.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP);
456  graphique.getLegendRenderer().setFixedPosition(1,48);
457  graphique.getLegendRenderer().setBackgroundColor(0);
458 
459  // Contenu
460  graphique.removeAllSeries();
461  }
462 
466  private void extraireDonneesPoids()
467  {
468  // Obligation d'utiliser un Thread
469  runOnUiThread(new Runnable()
470  {
471  @Override
472  public void run()
473  {
474  try
475  {
476  JSONArray tableauJSON = new JSONArray(contenuHistorique);
477  JSONObject valeur = null;
478  Date date = null;
479  SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
480  SimpleDateFormat sdfOutHeure = new SimpleDateFormat("HH", Locale.FRENCH);
481 
482  Log.d(TAG, "extraireDonnees() Nb mesures récupérées = " + tableauJSON.length());
483  //Toast.makeText(IHMGraphique.this,tableauJSON.length() + " données récupérées", Toast.LENGTH_SHORT).show();
484 
485  donneesPoids.clear();
486  for(int i = 0; i < tableauJSON.length(); i++)
487  {
488  valeur = tableauJSON.getJSONObject(i);
489  //Log.d(TAG, "extraireDonnees() valeur = " + valeur);
490  /* {
491  "device_id":"ruche-1-sim",
492  "humiditeExt":null,
493  "humiditeInt":null,
494  "poids":22.4,
495  "pression":null,
496  "temperatureExt":null,
497  "temperatureInt":null,
498  "time":"2021-05-26T08:26:53.789498119Z"
499  }
500  */
501  if(valeur.getString("device_id").equals(deviceID))
502  {
503  if(!valeur.isNull("poids"))
504  {
505  Double poids = valeur.getDouble("poids");
506  String time = valeur.getString("time");
507  //Log.d(TAG, "extraireDonnees() poids = " + poids);
508  //Log.d(TAG, "extraireDonnees() time = " + time);
509  sdfIn.setTimeZone(TimeZone.getTimeZone("UTC"));
510  String heure = "";
511  try
512  {
513  date = sdfIn.parse(time);
514  sdfOutHeure.setTimeZone(TimeZone.getDefault());
515  heure = sdfOutHeure.format(date);
516  }
517  catch (ParseException e)
518  {
519  e.printStackTrace();
520  Log.d(TAG, "extraireDonnees() Erreur !");
521  }
522  List<String> donnees = new ArrayList<>();
523  donnees.add(heure);
524  donnees.add(poids.toString());
525  donneesPoids.add(donnees);
526  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - poids = " + poids + " [" + time + "]");
527  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - poids = " + poids);
528  //Log.d(TAG, "extraireDonnees() donnees = " + donnees);
529  }
530  }
531  }
532  //Log.d(TAG,"extraireDonnees() donneesPoids = " + donneesPoids);
533  //Log.d(TAG,"extraireDonnees() Nb mesures poids = " + donneesPoids.size());
534  Toast.makeText(IHMGraphique.this,donneesPoids.size() + " données de poids récupérées", Toast.LENGTH_SHORT).show();
535  }
536  catch (JSONException e)
537  {
538  e.printStackTrace();
539  }
540 
541  traiterDonneesPoids();
542 
543  afficherDonneesPoids();
544  }
545  });
546  }
547 
551  private void traiterDonneesPoids()
552  {
553  double somme24h = 0.;
554  double somme = 0.;
555  int nbMesures24h = 0;
556  int nbMesures = 0;
557 
558  /*if(donneesPoids.size() < 1)
559  return;*/
560 
561  /*poidsMin = new Double((double)Double.parseDouble(donneesPoids.get(0).get(1)));
562  poidsMax = new Double((double)Double.parseDouble(donneesPoids.get(0).get(1)));*/
563 
564  //Log.d(TAG,"traiterDonneesPoids() Nb mesures poids = " + donneesPoids.size());
565  mesuresPoids.clear();
566  boolean initMinMax = false;
567  Date date = new Date();
568  for(int heure = 0; heure < date.getHours(); heure++)
569  {
570  somme = 0.;
571  nbMesures = 0;
572  for (List<String> donnees : donneesPoids)
573  {
574  if(Integer.parseInt(donnees.get(0)) == heure)
575  {
576  //Log.d(TAG, "traiterDonneesPoids() heure = " + donnees.get(0) + " - poids = " + donnees.get(1));
577  somme += Double.parseDouble(donnees.get(1));
578  nbMesures++;
579  }
580  }
581 
582  if(nbMesures > 0)
583  {
584  //Log.d(TAG,"traiterDonneesPoids() heure = " + heure + " - Nb mesures = " + nbMesures + " - somme = " + somme + " - moyenne = " + (somme/(double)nbMesures));
585  double valeur = (somme/(double)nbMesures);
586  mesuresPoids.add(heure, valeur);
587  // Première mesure -> initialise les min/max
588  if(!initMinMax)
589  {
590  poidsMax = valeur;
591  poidsMin = valeur;
592  initMinMax = true;
593  }
594  somme24h += valeur;
595  nbMesures24h++;
596  poidsCourant = valeur;
597  if(valeur > poidsMax)
598  poidsMax = valeur;
599  if(valeur < poidsMin)
600  poidsMin = valeur;
601  }
602  else
603  {
607  mesuresPoids.add(heure, 0.);
608  }
609  }
610 
611  poidsMoyenne = (somme24h/(double)nbMesures24h);
612  // Ce poidsCourant peut être supérieur à poidsMax (moyenne sur une heure)
613  //poidsCourant = Double.parseDouble(donneesPoids.get(donneesPoids.size()-1).get(1));
614  }
615 
619  private void afficherDonneesPoids()
620  {
621  DataPoint[] dataPoints = new DataPoint[mesuresPoids.size()];
622  for (int i = 0; i < mesuresPoids.size(); i++)
623  {
624  dataPoints[i] = new DataPoint(i, mesuresPoids.get(i));
625  }
626 
627  seriesPoids = new LineGraphSeries<DataPoint>(dataPoints);
628 
629  graphique.addSeries(seriesPoids);
630  seriesPoids.setColor(Color.GREEN);
631  seriesPoids.setTitle("Kg");
632 
633  valeurCourante.setText("Dernière valeur : " + String.valueOf(arrondir(poidsCourant, 2)) + " Kg");
634  donneesMin.setText(String.valueOf(arrondir(poidsMin, 1)) + " Kg");
635  donneesMax.setText(String.valueOf(arrondir(poidsMax, 1)) + " Kg");
636  donneesMoyenne.setText(String.valueOf(arrondir(poidsMoyenne, 1)) + " Kg");
637  }
638 
642  private void extraireDonneesPression()
643  {
644  // Obligation d'utiliser un Thread
645  runOnUiThread(new Runnable()
646  {
647  @Override
648  public void run()
649  {
650  try
651  {
652  JSONArray tableauJSON = new JSONArray(contenuHistorique);
653  JSONObject valeur = null;
654  Date date = null;
655  SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
656  SimpleDateFormat sdfOutHeure = new SimpleDateFormat("HH", Locale.FRENCH);
657 
658  Log.d(TAG, "extraireDonnees() Nb mesures récupérées = " + tableauJSON.length());
659  //Toast.makeText(IHMGraphique.this,tableauJSON.length() + " données récupérées", Toast.LENGTH_SHORT).show();
660 
661  donneesPression.clear();
662  for(int i = 0; i < tableauJSON.length(); i++)
663  {
664  valeur = tableauJSON.getJSONObject(i);
665  //Log.d(TAG, "extraireDonnees() valeur = " + valeur);
666  /* {
667  "device_id":"ruche-1-sim",
668  "humiditeExt":null,
669  "humiditeInt":null,
670  "poids":22.4,
671  "pression":null,
672  "temperatureExt":null,
673  "temperatureInt":null,
674  "time":"2021-05-26T08:26:53.789498119Z"
675  }
676  */
677  if(valeur.getString("device_id").equals(deviceID))
678  {
679  if(!valeur.isNull("pression"))
680  {
681  Double pression = valeur.getDouble("pression");
682  String time = valeur.getString("time");
683  //Log.d(TAG, "extraireDonnees() pression = " + pression);
684  //Log.d(TAG, "extraireDonnees() time = " + time);
685  sdfIn.setTimeZone(TimeZone.getTimeZone("UTC"));
686  String heure = "";
687  try
688  {
689  date = sdfIn.parse(time);
690  sdfOutHeure.setTimeZone(TimeZone.getDefault());
691  heure = sdfOutHeure.format(date);
692  }
693  catch (ParseException e)
694  {
695  e.printStackTrace();
696  Log.d(TAG, "extraireDonnees() Erreur !");
697  }
698  List<String> donnees = new ArrayList<>();
699  donnees.add(heure);
700  donnees.add(pression.toString());
701  donneesPression.add(donnees);
702  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - pression = " + pression + " [" + time + "]");
703  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - pression = " + pression);
704  //Log.d(TAG, "extraireDonnees() donnees = " + donnees);
705  }
706  }
707  }
708  //Log.d(TAG,"extraireDonnees() donneesPression = " + donneesPression);
709  //Log.d(TAG,"extraireDonnees() Nb mesures pression = " + donneesPression.size());
710  Toast.makeText(IHMGraphique.this,donneesPression.size() + " données de la pression récupérées", Toast.LENGTH_SHORT).show();
711  }
712  catch (JSONException e)
713  {
714  e.printStackTrace();
715  }
716 
717  traiterDonneesPression();
718 
719  afficherDonneesPression();
720  }
721  });
722  }
723 
727  private void traiterDonneesPression()
728  {
729  double somme24h = 0.;
730  double somme = 0.;
731  int nbMesures24h = 0;
732  int nbMesures = 0;
733 
734  /*if(donneesPression.size() < 1)
735  return;*/
736 
737  /*pressionMin = new Double((double)Double.parseDouble(donneesPression.get(0).get(1)));
738  pressionMax = new Double((double)Double.parseDouble(donneesPression.get(0).get(1)));*/
739 
740  //Log.d(TAG,"traiterDonneesPression() Nb mesures pression = " + donneesPression.size());
741  mesuresPression.clear();
742  boolean initMinMax = false;
743  Date date = new Date();
744  for(int heure = 0; heure < date.getHours(); heure++)
745  {
746  somme = 0.;
747  nbMesures = 0;
748  for (List<String> donnees : donneesPression)
749  {
750  if(Integer.parseInt(donnees.get(0)) == heure)
751  {
752  //Log.d(TAG, "traiterDonneesPression() heure = " + donnees.get(0) + " - pression = " + donnees.get(1));
753  somme += Double.parseDouble(donnees.get(1));
754  nbMesures++;
755  }
756  }
757 
758  if(nbMesures > 0)
759  {
760  //Log.d(TAG,"traiterDonneesPression() heure = " + heure + " - Nb mesures = " + nbMesures + " - somme = " + somme + " - moyenne = " + (somme/(double)nbMesures));
761  double valeur = (somme/(double)nbMesures);
762  mesuresPression.add(heure, valeur);
763  // Première mesure -> initialise les min/max
764  if(!initMinMax)
765  {
766  pressionMax = valeur;
767  pressionMin = valeur;
768  initMinMax = true;
769  }
770  somme24h += valeur;
771  nbMesures24h++;
772  pressionCourant = valeur;
773  if(valeur > pressionMax)
774  pressionMax = valeur;
775  if(valeur < pressionMin)
776  pressionMin = valeur;
777  }
778  else
779  {
780  mesuresPression.add(heure, 0.);
781  }
782  }
783 
784  pressionMoyenne = (somme24h/(double)nbMesures24h);
785  // Ce pressionCourant peut être supérieur à pressionMax (moyenne sur une heure)
786  }
787 
791  private void afficherDonneesPression()
792  {
793  DataPoint[] dataPoints = new DataPoint[mesuresPression.size()];
794  for (int i = 0; i < mesuresPression.size(); i++)
795  {
796  dataPoints[i] = new DataPoint(i, mesuresPression.get(i));
797  }
798 
799  seriesPression = new LineGraphSeries<DataPoint>(dataPoints);
800 
801  graphique.addSeries(seriesPression);
802  seriesPression.setColor(Color.rgb(217,87,255));
803  seriesPression.setTitle("hPA");
804 
805  valeurCourante.setText("Dernière valeur : " + String.valueOf(arrondir(poidsCourant, 2)) + " hPA");
806  donneesMin.setText(String.valueOf(arrondir(pressionMin, 1)) + " hPA");
807  donneesMax.setText(String.valueOf(arrondir(pressionMax, 1)) + " hPA");
808  donneesMoyenne.setText(String.valueOf(arrondir(pressionMoyenne, 1)) + " hPA");
809  }
810 
815  {
816  // Obligation d'utiliser un Thread
817  runOnUiThread(new Runnable()
818  {
819  @Override
820  public void run()
821  {
822  try
823  {
824  JSONArray tableauJSON = new JSONArray(contenuHistorique);
825  JSONObject valeur = null;
826  Date date = null;
827  SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
828  SimpleDateFormat sdfOutHeure = new SimpleDateFormat("HH", Locale.FRENCH);
829 
830  Log.d(TAG, "extraireDonneesTemperatureInterieure() Nb mesures récupérées = " + tableauJSON.length());
831  //Toast.makeText(IHMGraphique.this,tableauJSON.length() + " données récupérées", Toast.LENGTH_SHORT).show();
832 
833  donneeTemperatureInterieure.clear();
834  for(int i = 0; i < tableauJSON.length(); i++)
835  {
836  valeur = tableauJSON.getJSONObject(i);
837  //Log.d(TAG, "extraireDonneesTemperatureInterieure() valeur = " + valeur);
838  /* {
839  "device_id":"ruche-1-sim",
840  "humiditeExt":null,
841  "humiditeInt":null,
842  "poids":null,
843  "pression":null,
844  "temperatureExt":null,
845  "temperatureInt":24.4,
846  "time":"2021-05-26T08:26:53.789498119Z"
847  }
848  */
849  if(valeur.getString("device_id").equals(deviceID))
850  {
851  if(!valeur.isNull("temperatureInt"))
852  {
853  Double temperatureInterieure = valeur.getDouble("temperatureInt");
854  String time = valeur.getString("time");
855  //Log.d(TAG, "extraireDonneesTemperatureInterieure() température intérieure = " + temperatureInterieure);
856  //Log.d(TAG, "extraireDonneesTemperatureInterieure() time = " + time);
857  sdfIn.setTimeZone(TimeZone.getTimeZone("UTC"));
858  String heure = "";
859  try
860  {
861  date = sdfIn.parse(time);
862  sdfOutHeure.setTimeZone(TimeZone.getDefault());
863  heure = sdfOutHeure.format(date);
864  }
865  catch (ParseException e)
866  {
867  e.printStackTrace();
868  Log.d(TAG, "extraireDonneesTemperatureInterieure() Erreur !");
869  }
870  List<String> donnees = new ArrayList<>();
871  donnees.add(heure);
872  donnees.add(temperatureInterieure.toString());
873  donneeTemperatureInterieure.add(donnees);
874  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - temperatureInterieure = " + temperatureInterieure + " [" + time + "]");
875  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - temperatureInterieure = " + temperatureInterieure);
876  //Log.d(TAG, "extraireDonnees() donnees = " + donnees);
877  }
878  }
879  }
880  //Log.d(TAG,"extraireDonneesTemperatureInterieure() donneeTemperatureInterieure = " + donneeTemperatureInterieure);
881  //Log.d(TAG,"extraireDonneesTemperatureInterieure() Nb mesures température interieure = " + donneeTemperatureInterieure.size());
882  Toast.makeText(IHMGraphique.this,donneeTemperatureInterieure.size() + " données de temperature intérireure récupérées", Toast.LENGTH_SHORT).show();
883  }
884  catch (JSONException e)
885  {
886  e.printStackTrace();
887  }
888 
889  traiterDonneesTempetatureInteireure();
890 
891  afficherDonneesTemperatureInterieure();
892  }
893  });
894  }
895 
900  {
901  double somme24h = 0.;
902  double somme = 0.;
903  int nbMesures24h = 0;
904  int nbMesures = 0;
905 
906  /*if(donneeTemperatureInterieure.size() < 1)
907  return;*/
908 
909  //Log.d(TAG,"traiterDonneesTempetatureInteireure() Nb mesures temperature interieure = " + donneeTemperatureInterieure.size());
910  mesuresTemperatureInterieure.clear();
911  boolean initMinMax = false;
912  Date date = new Date();
913  for(int heure = 0; heure < date.getHours(); heure++)
914  {
915  somme = 0.;
916  nbMesures = 0;
917  for (List<String> donnees : donneeTemperatureInterieure)
918  {
919  if(Integer.parseInt(donnees.get(0)) == heure)
920  {
921  //Log.d(TAG, "traiterDonneesTempetatureInteireure() heure = " + donnees.get(0) + " - temperatureInterieure = " + donnees.get(1));
922  somme += Double.parseDouble(donnees.get(1));
923  nbMesures++;
924  }
925  }
926 
927  if(nbMesures > 0)
928  {
929  //Log.d(TAG,"traiterDonneesTempetatureInteireure() heure = " + heure + " - Nb mesures = " + nbMesures + " - somme = " + somme + " - moyenne = " + (somme/(double)nbMesures));
930  double valeur = (somme/(double)nbMesures);
931  mesuresTemperatureInterieure.add(heure, valeur);
932  // Première mesure -> initialise les min/max
933  if(!initMinMax)
934  {
935  temperatureInterieureMax = valeur;
936  temperatureInterieureMin = valeur;
937  initMinMax = true;
938  }
939  somme24h += valeur;
940  nbMesures24h++;
941  temperatureInterieureCourante = valeur;
942  if(valeur > temperatureInterieureMax)
943  temperatureInterieureMax = valeur;
944  if(valeur < temperatureInterieureMin)
945  temperatureInterieureMin = valeur;
946  }
947  else
948  {
949  mesuresTemperatureInterieure.add(heure, 0.);
950  }
951  }
952 
953  temperatureInterieureMoyenne = (somme24h/(double)nbMesures24h);
954  // Cet temperatureInterieureMoyenne peut être supérieur à temperatureInterieureMax (moyenne sur une heure)
955  }
956 
961  {
962  DataPoint[] dataPoints = new DataPoint[mesuresTemperatureInterieure.size()];
963  for (int i = 0; i < mesuresTemperatureInterieure.size(); i++)
964  {
965  dataPoints[i] = new DataPoint(i, mesuresTemperatureInterieure.get(i));
966  }
967 
968  seriesTemperatureInterieure = new LineGraphSeries<DataPoint>(dataPoints);
969 
970  graphique.addSeries(seriesTemperatureInterieure);
971  seriesTemperatureInterieure.setColor(Color.RED);
972  seriesTemperatureInterieure.setTitle("°C");
973 
974  valeurCourante.setText("Dernière valeur : " + String.valueOf(arrondir(temperatureInterieureCourante, 2)) + " °C");
975  donneesMin.setText(String.valueOf(arrondir(temperatureInterieureMin, 1)) + " °C");
976  donneesMax.setText(String.valueOf(arrondir(temperatureInterieureMax, 1)) + " °C");
977  donneesMoyenne.setText(String.valueOf(arrondir(temperatureInterieureMoyenne, 1)) + " °C");
978  }
979 
984  {
985  // Obligation d'utiliser un Thread
986  runOnUiThread(new Runnable()
987  {
988  @Override
989  public void run()
990  {
991  try
992  {
993  JSONArray tableauJSON = new JSONArray(contenuHistorique);
994  JSONObject valeur = null;
995  Date date = null;
996  SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
997  SimpleDateFormat sdfOutHeure = new SimpleDateFormat("HH", Locale.FRENCH);
998 
999  Log.d(TAG, "extraireDonneesHumiditeInterieure() Nb mesures récupérées = " + tableauJSON.length());
1000  //Toast.makeText(IHMGraphique.this,tableauJSON.length() + " données récupérées", Toast.LENGTH_SHORT).show();
1001 
1002  donneeHumiditeInterieure.clear();
1003  for(int i = 0; i < tableauJSON.length(); i++)
1004  {
1005  valeur = tableauJSON.getJSONObject(i);
1006  //Log.d(TAG, "extraireDonneesHumiditeInterieure() valeur = " + valeur);
1007  /* {
1008  "device_id":"ruche-1-sim",
1009  "humiditeExt":null,
1010  "humiditeInt":null,
1011  "poids":null,
1012  "pression":null,
1013  "temperatureExt":null,
1014  "temperatureInt":24.4,
1015  "time":"2021-05-26T08:26:53.789498119Z"
1016  }
1017  */
1018  if(valeur.getString("device_id").equals(deviceID))
1019  {
1020  if(!valeur.isNull("humiditeInt"))
1021  {
1022  Double humiditeInterieure = valeur.getDouble("humiditeInt");
1023  String time = valeur.getString("time");
1024  //Log.d(TAG, "extraireDonneesHumiditeInterieure() humidité intérieure = " + humiditeInterieure);
1025  //Log.d(TAG, "extraireDonneesHumiditeInterieure() time = " + time);
1026  sdfIn.setTimeZone(TimeZone.getTimeZone("UTC"));
1027  String heure = "";
1028  try
1029  {
1030  date = sdfIn.parse(time);
1031  sdfOutHeure.setTimeZone(TimeZone.getDefault());
1032  heure = sdfOutHeure.format(date);
1033  }
1034  catch (ParseException e)
1035  {
1036  e.printStackTrace();
1037  Log.d(TAG, "extraireDonneesHumiditeInterieure() Erreur !");
1038  }
1039  List<String> donnees = new ArrayList<>();
1040  donnees.add(heure);
1041  donnees.add(humiditeInterieure.toString());
1042  donneeHumiditeInterieure.add(donnees);
1043  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - humiditeInterieure = " + humiditeInterieure + " [" + time + "]");
1044  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - humiditeInterieure = " + humiditeInterieure);
1045  //Log.d(TAG, "extraireDonnees() donnees = " + donnees);
1046  }
1047  }
1048  }
1049  //Log.d(TAG,"extraireDonneesHumiditeInterieure() humiditeInterieure = " + donneehumiditeInterieure);
1050  //Log.d(TAG,"extraireDonneesHumiditeInterieure() Nb mesures de l'humidité intérieure = " + donneeTemperatureInterieure.size());
1051  Toast.makeText(IHMGraphique.this,donneeHumiditeInterieure.size() + " données de l'humidité intérireure récupérées", Toast.LENGTH_SHORT).show();
1052  }
1053  catch (JSONException e)
1054  {
1055  e.printStackTrace();
1056  }
1057 
1058  traiterDonneesHumiditeInteireure();
1059 
1060  afficherDonneesHumiditeInterieure();
1061  }
1062  });
1063  }
1064 
1069  {
1070  double somme24h = 0.;
1071  double somme = 0.;
1072  int nbMesures24h = 0;
1073  int nbMesures = 0;
1074 
1075  /*if(humiditeInterieure.size() < 1)
1076  return;*/
1077 
1078  //Log.d(TAG,"traiterDonneesHumiditeInteireure() Nb mesures de l'humidité intérieure = " + donneeHumiditeInterieure.size());
1079  mesuresHumiditeInterieure.clear();
1080  boolean initMinMax = false;
1081  Date date = new Date();
1082  for(int heure = 0; heure < date.getHours(); heure++)
1083  {
1084  somme = 0.;
1085  nbMesures = 0;
1086  for (List<String> donnees : donneeHumiditeInterieure)
1087  {
1088  if(Integer.parseInt(donnees.get(0)) == heure)
1089  {
1090  //Log.d(TAG, "traiterDonneesHumiditeInteireure() heure = " + donnees.get(0) + " - humiditeInterieure = " + donnees.get(1));
1091  somme += Double.parseDouble(donnees.get(1));
1092  nbMesures++;
1093  }
1094  }
1095 
1096  if(nbMesures > 0)
1097  {
1098  //Log.d(TAG,"traiterDonneesHumiditeInteireure() heure = " + heure + " - Nb mesures = " + nbMesures + " - somme = " + somme + " - moyenne = " + (somme/(double)nbMesures));
1099  double valeur = (somme/(double)nbMesures);
1100  mesuresHumiditeInterieure.add(heure, valeur);
1101  // Première mesure -> initialise les min/max
1102  if(!initMinMax)
1103  {
1104  humiditeInterieureMax = valeur;
1105  humiditeInterieureMin = valeur;
1106  initMinMax = true;
1107  }
1108  somme24h += valeur;
1109  nbMesures24h++;
1110  humiditeInterieureCourante = valeur;
1111  if(valeur > humiditeInterieureMax)
1112  humiditeInterieureMax = valeur;
1113  if(valeur < humiditeInterieureMin)
1114  humiditeInterieureMin = valeur;
1115  }
1116  else
1117  {
1118  mesuresHumiditeInterieure.add(heure, 0.);
1119  }
1120  }
1121 
1122  humiditeInterieureMoyenne = (somme24h/(double)nbMesures24h);
1123  // Cet humiditeInterieureMoyenne peut être supérieur à humiditeInterieureMax (moyenne sur une heure)
1124  }
1125 
1130  {
1131  DataPoint[] dataPoints = new DataPoint[mesuresHumiditeInterieure.size()];
1132  for (int i = 0; i < mesuresHumiditeInterieure.size(); i++)
1133  {
1134  dataPoints[i] = new DataPoint(i, mesuresHumiditeInterieure.get(i));
1135  }
1136 
1137  seriesHumiditeInterieure = new LineGraphSeries<DataPoint>(dataPoints);
1138 
1139  graphique.addSeries(seriesHumiditeInterieure);
1140  seriesHumiditeInterieure.setColor(Color.BLUE);
1141  seriesHumiditeInterieure.setTitle("%");
1142 
1143  valeurCourante.setText("Dernière valeur : " + String.valueOf(arrondir(humiditeInterieureCourante, 2)) + " %");
1144  donneesMin.setText(String.valueOf(arrondir(humiditeInterieureMin, 1)) + " %");
1145  donneesMax.setText(String.valueOf(arrondir(humiditeInterieureMax, 1)) + " %");
1146  donneesMoyenne.setText(String.valueOf(arrondir(humiditeInterieureMoyenne, 1)) + " %");
1147  }
1148 
1153  {
1154  // Obligation d'utiliser un Thread
1155  runOnUiThread(new Runnable()
1156  {
1157  @Override
1158  public void run()
1159  {
1160  try
1161  {
1162  JSONArray tableauJSON = new JSONArray(contenuHistorique);
1163  JSONObject valeur = null;
1164  Date date = null;
1165  SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
1166  SimpleDateFormat sdfOutHeure = new SimpleDateFormat("HH", Locale.FRENCH);
1167 
1168  Log.d(TAG, "extraireDonneesTemperatureExterieure() Nb mesures récupérées = " + tableauJSON.length());
1169  //Toast.makeText(IHMGraphique.this,tableauJSON.length() + " données récupérées", Toast.LENGTH_SHORT).show();
1170 
1171  donneeTemperatureExterieure.clear();
1172  for(int i = 0; i < tableauJSON.length(); i++)
1173  {
1174  valeur = tableauJSON.getJSONObject(i);
1175  //Log.d(TAG, "extraireDonneesTemperatureExterieure() valeur = " + valeur);
1176  /* {
1177  "device_id":"ruche-1-sim",
1178  "humiditeExt":null,
1179  "humiditeInt":null,
1180  "poids":null,
1181  "pression":null,
1182  "temperatureExt":null,
1183  "temperatureInt":24.4,
1184  "time":"2021-05-26T08:26:53.789498119Z"
1185  }
1186  */
1187  if(valeur.getString("device_id").equals(deviceID))
1188  {
1189  if(!valeur.isNull("temperatureExt"))
1190  {
1191  Double temperatureExterieure = valeur.getDouble("temperatureExt");
1192  String time = valeur.getString("time");
1193  //Log.d(TAG, "extraireDonneesTemperatureExterieure() température extérieure = " + temperatureExterieure);
1194  //Log.d(TAG, "extraireDonneesTemperatureExterieure() time = " + time);
1195  sdfIn.setTimeZone(TimeZone.getTimeZone("UTC"));
1196  String heure = "";
1197  try
1198  {
1199  date = sdfIn.parse(time);
1200  sdfOutHeure.setTimeZone(TimeZone.getDefault());
1201  heure = sdfOutHeure.format(date);
1202  }
1203  catch (ParseException e)
1204  {
1205  e.printStackTrace();
1206  Log.d(TAG, "extraireDonneesTemperatureExterieure() Erreur !");
1207  }
1208  List<String> donnees = new ArrayList<>();
1209  donnees.add(heure);
1210  donnees.add(temperatureExterieure.toString());
1211  donneeTemperatureExterieure.add(donnees);
1212  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - temperatureExterieure = " + temperatureExterieure + " [" + time + "]");
1213  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - temperatureExterieure = " + temperatureExterieure);
1214  //Log.d(TAG, "extraireDonnees() donnees = " + donnees);
1215  }
1216  }
1217  }
1218  //Log.d(TAG,"extraireDonneesTemperatureExterieure() donneeTemperatureExterieure = " + donneeTemperatureExterieure);
1219  //Log.d(TAG,"extraireDonneesTemperatureExterieure() Nb mesures température extérieure = " + donneeTemperatureExterieure.size());
1220  Toast.makeText(IHMGraphique.this,donneeTemperatureExterieure.size() + " données de temperature extérieure récupérées", Toast.LENGTH_SHORT).show();
1221  }
1222  catch (JSONException e)
1223  {
1224  e.printStackTrace();
1225  }
1226 
1227  traiterDonneesTempetatureExterieure();
1228 
1229  afficherDonneesTemperatureExterieure();
1230  }
1231  });
1232  }
1233 
1238  {
1239  double somme24h = 0.;
1240  double somme = 0.;
1241  int nbMesures24h = 0;
1242  int nbMesures = 0;
1243 
1244  /*if(donneeTemperatureExterieure.size() < 1)
1245  return;*/
1246 
1247  //Log.d(TAG,"traiterDonneesTempetatureExterieure() Nb mesures temperature extérieure = " + donneeTemperatureExterieure.size());
1248  mesuresTemperatureExterireure.clear();
1249  boolean initMinMax = false;
1250  Date date = new Date();
1251  for(int heure = 0; heure < date.getHours(); heure++)
1252  {
1253  somme = 0.;
1254  nbMesures = 0;
1255  for (List<String> donnees : donneeTemperatureExterieure)
1256  {
1257  if(Integer.parseInt(donnees.get(0)) == heure)
1258  {
1259  //Log.d(TAG, "traiterDonneesTempetatureExterieure() heure = " + donnees.get(0) + " - temperatureExterieure = " + donnees.get(1));
1260  somme += Double.parseDouble(donnees.get(1));
1261  nbMesures++;
1262  }
1263  }
1264 
1265  if(nbMesures > 0)
1266  {
1267  //Log.d(TAG,"traiterDonneesTempetatureExterieure() heure = " + heure + " - Nb mesures = " + nbMesures + " - somme = " + somme + " - moyenne = " + (somme/(double)nbMesures));
1268  double valeur = (somme/(double)nbMesures);
1269  mesuresTemperatureExterireure.add(heure, valeur);
1270  // Première mesure -> initialise les min/max
1271  if(!initMinMax)
1272  {
1273  temperatureExterireureMax = valeur;
1274  temperatureExterireureMin = valeur;
1275  initMinMax = true;
1276  }
1277  somme24h += valeur;
1278  nbMesures24h++;
1279  temperatureExterireureCourante = valeur;
1280  if(valeur > temperatureExterireureMax)
1281  temperatureExterireureMax = valeur;
1282  if(valeur < temperatureExterireureMin)
1283  temperatureExterireureMin = valeur;
1284  }
1285  else
1286  {
1287  mesuresTemperatureExterireure.add(heure, 0.);
1288  }
1289  }
1290 
1291  temperatureExterireureMoyenne = (somme24h/(double)nbMesures24h);
1292  // Cet temperatureExterireureMoyenne peut être supérieur à temperatureExterieureMax (moyenne sur une heure)
1293  }
1294 
1299  {
1300  DataPoint[] dataPoints = new DataPoint[mesuresTemperatureExterireure.size()];
1301  for (int i = 0; i < mesuresTemperatureExterireure.size(); i++)
1302  {
1303  dataPoints[i] = new DataPoint(i, mesuresTemperatureExterireure.get(i));
1304  }
1305 
1306  seriesTemperatureExterieure = new LineGraphSeries<DataPoint>(dataPoints);
1307 
1308  graphique.addSeries(seriesTemperatureExterieure);
1309  seriesTemperatureExterieure.setColor(Color.RED);
1310  seriesTemperatureExterieure.setTitle("°C");
1311 
1312  valeurCourante.setText("Dernière valeur : " + String.valueOf(arrondir(temperatureExterireureCourante, 2)) + " °C");
1313  donneesMin.setText(String.valueOf(arrondir(temperatureExterireureMin, 1)) + " °C");
1314  donneesMax.setText(String.valueOf(arrondir(temperatureExterireureMax, 1)) + " °C");
1315  donneesMoyenne.setText(String.valueOf(arrondir(temperatureExterireureMoyenne, 1)) + " °C");
1316  }
1317 
1322  {
1323  // Obligation d'utiliser un Thread
1324  runOnUiThread(new Runnable()
1325  {
1326  @Override
1327  public void run()
1328  {
1329  try
1330  {
1331  JSONArray tableauJSON = new JSONArray(contenuHistorique);
1332  JSONObject valeur = null;
1333  Date date = null;
1334  SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
1335  SimpleDateFormat sdfOutHeure = new SimpleDateFormat("HH", Locale.FRENCH);
1336 
1337  Log.d(TAG, "extraireDonneesHumiditeExterieure() Nb mesures récupérées = " + tableauJSON.length());
1338  //Toast.makeText(IHMGraphique.this,tableauJSON.length() + " données récupérées", Toast.LENGTH_SHORT).show();
1339 
1340  donneeHumiditeExterireure.clear();
1341  for(int i = 0; i < tableauJSON.length(); i++)
1342  {
1343  valeur = tableauJSON.getJSONObject(i);
1344  //Log.d(TAG, "extraireDonneesHumiditeExterieure() valeur = " + valeur);
1345  /* {
1346  "device_id":"ruche-1-sim",
1347  "humiditeExt":null,
1348  "humiditeInt":null,
1349  "poids":null,
1350  "pression":null,
1351  "temperatureExt":null,
1352  "temperatureInt":24.4,
1353  "time":"2021-05-26T08:26:53.789498119Z"
1354  }
1355  */
1356  if(valeur.getString("device_id").equals(deviceID))
1357  {
1358  if(!valeur.isNull("humiditeInt"))
1359  {
1360  Double humiditeExterieure = valeur.getDouble("humiditeInt");
1361  String time = valeur.getString("time");
1362  //Log.d(TAG, "extraireDonneesHumiditeExterieure() humidité extérieure = " + humiditeExterieure);
1363  //Log.d(TAG, "extraireDonneesHumiditeExterieure() time = " + time);
1364  sdfIn.setTimeZone(TimeZone.getTimeZone("UTC"));
1365  String heure = "";
1366  try
1367  {
1368  date = sdfIn.parse(time);
1369  sdfOutHeure.setTimeZone(TimeZone.getDefault());
1370  heure = sdfOutHeure.format(date);
1371  }
1372  catch (ParseException e)
1373  {
1374  e.printStackTrace();
1375  Log.d(TAG, "extraireDonneesHumiditeExterieure() Erreur !");
1376  }
1377  List<String> donnees = new ArrayList<>();
1378  donnees.add(heure);
1379  donnees.add(humiditeExterieure.toString());
1380  donneeHumiditeExterireure.add(donnees);
1381  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - humiditeExterieure = " + humiditeExterieure + " [" + time + "]");
1382  //Log.d(TAG, "extraireDonnees() heure = " + heure + " - humiditeExterieure = " + humiditeExterieure);
1383  //Log.d(TAG, "extraireDonnees() donnees = " + donnees);
1384  }
1385  }
1386  }
1387  //Log.d(TAG,"extraireDonneesHumiditeExterieure() humiditeInterieure = " + donneehumiditeInterieure);
1388  //Log.d(TAG,"extraireDonneesHumiditeExterieure() Nb mesures de l'humidité extérieure = " + donneeHumiditeExeterieure.size());
1389  Toast.makeText(IHMGraphique.this,donneeHumiditeExterireure.size() + " données de l'humidité extérieure récupérées", Toast.LENGTH_SHORT).show();
1390  }
1391  catch (JSONException e)
1392  {
1393  e.printStackTrace();
1394  }
1395 
1396  traiterDonneesHumiditeExterieure();
1397 
1398  afficherDonneesHumiditeExterieure();
1399  }
1400  });
1401  }
1402 
1407  {
1408  double somme24h = 0.;
1409  double somme = 0.;
1410  int nbMesures24h = 0;
1411  int nbMesures = 0;
1412 
1413  /*if(humiditeInterieure.size() < 1)
1414  return;*/
1415 
1416  //Log.d(TAG,"traiterDonneesHumiditeExterieure() Nb mesures de l'humidité intérieure = " + donneeHumiditeExterieure.size());
1417  mesuresHumiditeExterireure.clear();
1418  boolean initMinMax = false;
1419  Date date = new Date();
1420  for(int heure = 0; heure < date.getHours(); heure++)
1421  {
1422  somme = 0.;
1423  nbMesures = 0;
1424  for (List<String> donnees : donneeHumiditeExterireure)
1425  {
1426  if(Integer.parseInt(donnees.get(0)) == heure)
1427  {
1428  //Log.d(TAG, "traiterDonneesHumiditeExterieure() heure = " + donnees.get(0) + " - humiditeExterieure = " + donnees.get(1));
1429  somme += Double.parseDouble(donnees.get(1));
1430  nbMesures++;
1431  }
1432  }
1433 
1434  if(nbMesures > 0)
1435  {
1436  //Log.d(TAG,"traiterDonneesHumiditeExterieure() heure = " + heure + " - Nb mesures = " + nbMesures + " - somme = " + somme + " - moyenne = " + (somme/(double)nbMesures));
1437  double valeur = (somme/(double)nbMesures);
1438  mesuresHumiditeExterireure.add(heure, valeur);
1439  // Première mesure -> initialise les min/max
1440  if(!initMinMax)
1441  {
1442  humiditeExterireureMax = valeur;
1443  humiditeExterireureMin = valeur;
1444  initMinMax = true;
1445  }
1446  somme24h += valeur;
1447  nbMesures24h++;
1448  humiditeExterireureCourante = valeur;
1449  if(valeur > humiditeExterireureMax)
1450  humiditeExterireureMax = valeur;
1451  if(valeur < humiditeExterireureMin)
1452  humiditeExterireureMin = valeur;
1453  }
1454  else
1455  {
1456  mesuresHumiditeExterireure.add(heure, 0.);
1457  }
1458  }
1459 
1460  humiditeExterireureMoyenne = (somme24h/(double)nbMesures24h);
1461  // Cet humiditeExterieureMoyenne peut être supérieur à humiditeExterieureMax (moyenne sur une heure)
1462  }
1463 
1468  {
1469  DataPoint[] dataPoints = new DataPoint[mesuresHumiditeExterireure.size()];
1470  for (int i = 0; i < mesuresHumiditeExterireure.size(); i++)
1471  {
1472  dataPoints[i] = new DataPoint(i, mesuresHumiditeExterireure.get(i));
1473  }
1474 
1475  seriesHumiditeExterieure = new LineGraphSeries<DataPoint>(dataPoints);
1476 
1477  graphique.addSeries(seriesHumiditeExterieure);
1478  seriesHumiditeExterieure.setColor(Color.BLUE);
1479  seriesHumiditeExterieure.setTitle("%");
1480 
1481  valeurCourante.setText("Dernière valeur : " + String.valueOf(arrondir(humiditeExterireureCourante, 2)) + " %");
1482  donneesMin.setText(String.valueOf(arrondir(humiditeExterireureMin, 1)) + " %");
1483  donneesMax.setText(String.valueOf(arrondir(humiditeExterireureMax, 1)) + " %");
1484  donneesMoyenne.setText(String.valueOf(arrondir(humiditeExterireureMoyenne, 1)) + " %");
1485  }
1486 
1490  public static double arrondir(double nombre, double nbApresVirgule)
1491  {
1492  return (double)((int)(nombre * Math.pow(10, nbApresVirgule) + .5)) / Math.pow(10, nbApresVirgule);
1493  }
1494 
1495 }
com.example.bee_honeyt.IHMGraphique.donneeHumiditeExterireure
Vector< List< String > > donneeHumiditeExterireure
Toutes les mesures récupérées dans l'historique pour l'humidite extérieure (dernières 24h)
Definition: IHMGraphique.java:117
com.example.bee_honeyt.IHMGraphique.choixGraphique
int choixGraphique
Le numéro de graphique à afficher (par défaut)
Definition: IHMGraphique.java:80
com.example.bee_honeyt.IHMGraphique.mesuresTemperatureExterireure
List< Double > mesuresTemperatureExterireure
Les mesures moyennées par heure pour la température extérieure.
Definition: IHMGraphique.java:111
com.example.bee_honeyt.IHMGraphique.temperatureExterireureMin
Double temperatureExterireureMin
Definition: IHMGraphique.java:113
com.example.bee_honeyt.IHMGraphique.deviceID
String deviceID
Le deviceId de la ruche.
Definition: IHMGraphique.java:79
com.example.bee_honeyt.IHMGraphique.extraireDonneesPoids
void extraireDonneesPoids()
Extraire les données de poids de l'historique.
Definition: IHMGraphique.java:466
com.example.bee_honeyt.IHMGraphique.MAX_PRESSION
static final int MAX_PRESSION
En hPA.
Definition: IHMGraphique.java:67
com.example.bee_honeyt.IHMGraphique.MAX_POIDS
static final int MAX_POIDS
En kg.
Definition: IHMGraphique.java:69
com.example.bee_honeyt.IHMGraphique.CHOIX_GRAPHE_HUMIDITE_EXTERIEURE
static final int CHOIX_GRAPHE_HUMIDITE_EXTERIEURE
Definition: IHMGraphique.java:56
com.example.bee_honeyt.TimeAsXAxisLabelFormatter
Definition: TimeAsXAxisLabelFormatter.java:7
com.example.bee_honeyt.IHMGraphique
L'activité pour afficher les graphiques.
Definition: IHMGraphique.java:46
com.example.bee_honeyt.IHMGraphique.afficherDonneesHumiditeExterieure
void afficherDonneesHumiditeExterieure()
Afficher les données de l'humidité extérieure dans le graphique.
Definition: IHMGraphique.java:1467
com.example.bee_honeyt.IHMGraphique.deselectionnerChoix
void deselectionnerChoix(int choix)
Désélectionne la couleur de fond de l'ancien choix.
Definition: IHMGraphique.java:404
com.example.bee_honeyt.IHMGraphique.donneeHumiditeInterieure
Vector< List< String > > donneeHumiditeInterieure
Toutes les mesures récupérées dans l'historique pour l'humidite intérieure (dernières 24h)
Definition: IHMGraphique.java:103
com.example.bee_honeyt.IHMGraphique.MIN_TEMPERATURE_EXTERIEURE
static final int MIN_TEMPERATURE_EXTERIEURE
En °C.
Definition: IHMGraphique.java:64
com.example.bee_honeyt.IHMGraphique.initialiserIHM
void initialiserIHM()
Initialiser les ressources de l'IHM.
Definition: IHMGraphique.java:254
com.example.bee_honeyt.IHMGraphique.donneeTemperatureExterieure
Vector< List< String > > donneeTemperatureExterieure
Toutes les mesures récupérées dans l'historique pour la température extérieure (dernières 24h)
Definition: IHMGraphique.java:110
com.example.bee_honeyt.IHMGraphique.humiditeInterieureCourante
Double humiditeInterieureCourante
Definition: IHMGraphique.java:105
com.example.bee_honeyt.IHMGraphique.initialiserGraphique
void initialiserGraphique()
Initialiser l'affichage du graphique.
Definition: IHMGraphique.java:432
com.example.bee_honeyt.IHMGraphique.MIN_HUMIDITE_EXTERIEURE
static final int MIN_HUMIDITE_EXTERIEURE
En %.
Definition: IHMGraphique.java:66
com.example.bee_honeyt.IHMGraphique.traiterDonneesTempetatureExterieure
void traiterDonneesTempetatureExterieure()
Traiter les donnes de température extérieure pour l'affichage de graphique.
Definition: IHMGraphique.java:1237
com.example.bee_honeyt.IHMGraphique.temperatureExterireureMoyenne
Double temperatureExterireureMoyenne
Definition: IHMGraphique.java:114
com.example.bee_honeyt.IHMGraphique.traiterDonneesPoids
void traiterDonneesPoids()
Traiter les donnes de poids pour l'affichage de graphique.
Definition: IHMGraphique.java:551
com.example.bee_honeyt.IHMGraphique.afficherDonneesPression
void afficherDonneesPression()
Afficher les données de la pression dans le graphique.
Definition: IHMGraphique.java:791
com.example.bee_honeyt.Historique.setCallback
void setCallback(HistoriqueEventListener callback)
Installe les fonctions de rappel pour les évènements onLoad, ...
Definition: Historique.java:48
com.example.bee_honeyt.IHMGraphique.valeurCourante
TextView valeurCourante
Definition: IHMGraphique.java:141
com.example.bee_honeyt.IHMGraphique.traiterDonneesHumiditeExterieure
void traiterDonneesHumiditeExterieure()
Traiter les donnes de l'humidité extérieure pour l'affichage de graphique.
Definition: IHMGraphique.java:1406
com.example.bee_honeyt.IHMGraphique.pressionMoyenne
Double pressionMoyenne
Definition: IHMGraphique.java:93
com.example.bee_honeyt.IHMGraphique.humiditeExterireureCourante
Double humiditeExterireureCourante
Definition: IHMGraphique.java:119
com.example.bee_honeyt.IHMGraphique.changerChoix
void changerChoix(int choix)
Change le choix de graphique.
Definition: IHMGraphique.java:364
com.example.bee_honeyt.IHMGraphique.poidsMin
Double poidsMin
Definition: IHMGraphique.java:85
com.example.bee_honeyt.IHMGraphique.MAX_TEMPERATURE_EXTERIEURE
static final int MAX_TEMPERATURE_EXTERIEURE
En °C.
Definition: IHMGraphique.java:63
com.example.bee_honeyt.IHMGraphique.boutonPoids
Button boutonPoids
Definition: IHMGraphique.java:139
com.example.bee_honeyt.IHMGraphique.applicationID
String applicationID
L'applicationID pour l'historique Data Storage.
Definition: IHMGraphique.java:77
com.example.bee_honeyt.IHMGraphique.CHOIX_GRAPHE_TEMPERATURE_INTERIEURE
static final int CHOIX_GRAPHE_TEMPERATURE_INTERIEURE
Definition: IHMGraphique.java:53
com.example.bee_honeyt.IHMGraphique.contenuHistorique
String contenuHistorique
Le contenu récupéré de l'historique.
Definition: IHMGraphique.java:76
com.example.bee_honeyt.IHMGraphique.donneesMax
TextView donneesMax
Definition: IHMGraphique.java:144
com.example.bee_honeyt.IHMGraphique.CHOIX_GRAPHE_TEMPERATURE_EXTERIEURE
static final int CHOIX_GRAPHE_TEMPERATURE_EXTERIEURE
Definition: IHMGraphique.java:55
com.example.bee_honeyt.IHMGraphique.pressionMin
Double pressionMin
Definition: IHMGraphique.java:92
com.example.bee_honeyt.IHMGraphique.poidsMax
Double poidsMax
Definition: IHMGraphique.java:87
com.example.bee_honeyt.IHMGraphique.extraireDonneesTemperatureExterieure
void extraireDonneesTemperatureExterieure()
Extraire les données de température extérieure de l'historique.
Definition: IHMGraphique.java:1152
com.example.bee_honeyt.IHMGraphique.seriesTemperatureExterieure
LineGraphSeries< DataPoint > seriesTemperatureExterieure
Definition: IHMGraphique.java:132
com.example.bee_honeyt.IHMGraphique.donneesPoids
Vector< List< String > > donneesPoids
Toutes les mesures récupérées dans l'historique pour le poids (dernières 24h)
Definition: IHMGraphique.java:82
com.example.bee_honeyt.IHMGraphique.key
String key
La clé d'accès pour l'historique Data Storage.
Definition: IHMGraphique.java:78
com.example.bee_honeyt.IHMGraphique.pressionCourant
Double pressionCourant
Definition: IHMGraphique.java:91
com.example.bee_honeyt.IHMGraphique.traiterDonneesPression
void traiterDonneesPression()
Traiter les donnes de la pression pour l'affichage de graphique.
Definition: IHMGraphique.java:727
com.example.bee_honeyt.IHMGraphique.afficherDonneesPoids
void afficherDonneesPoids()
Afficher les données de poids dans le graphique.
Definition: IHMGraphique.java:619
com.example.bee_honeyt.Historique
Déclaration de la classe Historique.
Definition: Historique.java:27
com.example.bee_honeyt.IHMGraphique.afficherDonneesTemperatureExterieure
void afficherDonneesTemperatureExterieure()
Afficher les données de température extérieure dans le graphique.
Definition: IHMGraphique.java:1298
com.example.bee_honeyt.IHMGraphique.arrondir
static double arrondir(double nombre, double nbApresVirgule)
Utilitaire pour arrondir un double.
Definition: IHMGraphique.java:1490
com.example.bee_honeyt.IHMGraphique.CHOIX_GRAPHE_PRESSION
static final int CHOIX_GRAPHE_PRESSION
Definition: IHMGraphique.java:57
com.example.bee_honeyt.IHMGraphique.humiditeExterireureMoyenne
Double humiditeExterireureMoyenne
Definition: IHMGraphique.java:121
com.example.bee_honeyt.IHMGraphique.mesuresTemperatureInterieure
List< Double > mesuresTemperatureInterieure
Les mesures moyennées par heure pour la température intérieure.
Definition: IHMGraphique.java:97
com.example.bee_honeyt.IHMGraphique.pressionMax
Double pressionMax
Definition: IHMGraphique.java:94
com.example.bee_honeyt.IHMGraphique.mesuresHumiditeInterieure
List< Double > mesuresHumiditeInterieure
Les mesures moyennées par heure pour l'humidite intérieure.
Definition: IHMGraphique.java:104
com.example.bee_honeyt.IHMGraphique.humiditeExterireureMax
Double humiditeExterireureMax
Definition: IHMGraphique.java:122
com.example.bee_honeyt.IHMGraphique.extraireDonneesTemperatureInterieure
void extraireDonneesTemperatureInterieure()
Extraire les données de température intérieure de l'historique.
Definition: IHMGraphique.java:814
com.example.bee_honeyt.IHMGraphique.temperatureInterieureMin
Double temperatureInterieureMin
Definition: IHMGraphique.java:99
com.example.bee_honeyt.IHMGraphique.extraireDonneesHumiditeInterieure
void extraireDonneesHumiditeInterieure()
Extraire les données de humidité intérieure de l'historique.
Definition: IHMGraphique.java:983
com.example.bee_honeyt.IHMGraphique.MIN_TEMPERATURE_INTERIEURE
static final int MIN_TEMPERATURE_INTERIEURE
En °C.
Definition: IHMGraphique.java:60
com.example.bee_honeyt.IHMGraphique.afficherDonneesHumiditeInterieure
void afficherDonneesHumiditeInterieure()
Afficher les données de l'humidité intérieure dans le graphique.
Definition: IHMGraphique.java:1129
com.example.bee_honeyt.IHMGraphique.temperatureExterireureMax
Double temperatureExterireureMax
Definition: IHMGraphique.java:115
com.example.bee_honeyt.IHMGraphique.temperatureExterireureCourante
Double temperatureExterireureCourante
Definition: IHMGraphique.java:112
com.example.bee_honeyt.IHMGraphique.seriesTemperatureInterieure
LineGraphSeries< DataPoint > seriesTemperatureInterieure
Definition: IHMGraphique.java:130
com.example.bee_honeyt.IHMGraphique.donneesMoyenne
TextView donneesMoyenne
Definition: IHMGraphique.java:143
com.example.bee_honeyt.IHMGraphique.poidsMoyenne
Double poidsMoyenne
Definition: IHMGraphique.java:86
com.example.bee_honeyt.IHMGraphique.humiditeInterieureMin
Double humiditeInterieureMin
Definition: IHMGraphique.java:106
com.example.bee_honeyt.IHMGraphique.boutonHumInt
Button boutonHumInt
Definition: IHMGraphique.java:137
com.example.bee_honeyt.IHMGraphique.seriesHumiditeInterieure
LineGraphSeries< DataPoint > seriesHumiditeInterieure
Definition: IHMGraphique.java:131
com.example.bee_honeyt.IHMGraphique.seriesHumiditeExterieure
LineGraphSeries< DataPoint > seriesHumiditeExterieure
Definition: IHMGraphique.java:133
com.example.bee_honeyt.IHMGraphique.temperatureInterieureMoyenne
Double temperatureInterieureMoyenne
Definition: IHMGraphique.java:100
com.example.bee_honeyt.IHMGraphique.initialiserHistorique
void initialiserHistorique()
Initialiser l'historique.
Definition: IHMGraphique.java:174
com.example.bee_honeyt.IHMGraphique.humiditeExterireureMin
Double humiditeExterireureMin
Definition: IHMGraphique.java:120
com.example.bee_honeyt.IHMGraphique.afficherDonneesTemperatureInterieure
void afficherDonneesTemperatureInterieure()
Afficher les données de température intérieure dans le graphique.
Definition: IHMGraphique.java:960
com.example.bee_honeyt.IHMGraphique.traiterDonneesHumiditeInteireure
void traiterDonneesHumiditeInteireure()
Traiter les donnes de l'humidité interieure pour l'affichage de graphique.
Definition: IHMGraphique.java:1068
com.example.bee_honeyt.IHMGraphique.seriesPoids
LineGraphSeries< DataPoint > seriesPoids
Definition: IHMGraphique.java:128
com.example.bee_honeyt.IHMGraphique.seriesPression
LineGraphSeries< DataPoint > seriesPression
Definition: IHMGraphique.java:129
com.example.bee_honeyt.IHMGraphique.CHOIX_GRAPHE_POIDS
static final int CHOIX_GRAPHE_POIDS
Definition: IHMGraphique.java:52
com.example.bee_honeyt.IHMGraphique.graphique
GraphView graphique
Definition: IHMGraphique.java:127
com.example.bee_honeyt.IHMGraphique.CHOIX_GRAPHE_HUMIDITE_INTERIEURE
static final int CHOIX_GRAPHE_HUMIDITE_INTERIEURE
Definition: IHMGraphique.java:54
com.example.bee_honeyt.IHMGraphique.donneesMin
TextView donneesMin
Definition: IHMGraphique.java:142
com.example.bee_honeyt.IHMGraphique.mesuresPression
List< Double > mesuresPression
Les mesures moyennées par heure pour le pression.
Definition: IHMGraphique.java:90
com.example.bee_honeyt.IHMGraphique.boutonTempInt
Button boutonTempInt
Definition: IHMGraphique.java:135
com.example.bee_honeyt.IHMGraphique.MAX_TEMPERATURE_INTERIEURE
static final int MAX_TEMPERATURE_INTERIEURE
En °C.
Definition: IHMGraphique.java:59
com.example.bee_honeyt.IHMGraphique.chargerHistorique
void chargerHistorique()
Charge l'historique pour une ruche.
Definition: IHMGraphique.java:219
com.example.bee_honeyt.HistoriqueEventListener
Déclaration de l'interface HistoriqueEventListener.
Definition: HistoriqueEventListener.java:12
com.example.bee_honeyt.IHMGraphique.mesuresHumiditeExterireure
List< Double > mesuresHumiditeExterireure
Les mesures moyennées par heure pour l'humidite extérieure.
Definition: IHMGraphique.java:118
com.example.bee_honeyt.IHMGraphique.boutonPression
Button boutonPression
Definition: IHMGraphique.java:140
com.example.bee_honeyt.IHMGraphique.MIN_HUMIDITE_INTERIEURE
static final int MIN_HUMIDITE_INTERIEURE
En %.
Definition: IHMGraphique.java:62
com.example.bee_honeyt.IHMGraphique.donneeTemperatureInterieure
Vector< List< String > > donneeTemperatureInterieure
Toutes les mesures récupérées dans l'historique pour la température intérieure (dernières 24h)
Definition: IHMGraphique.java:96
com.example.bee_honeyt.IHMGraphique.boutonTempExt
Button boutonTempExt
Definition: IHMGraphique.java:136
com.example.bee_honeyt.IHMGraphique.MIN_PRESSION
static final int MIN_PRESSION
En hPA.
Definition: IHMGraphique.java:68
com
com.example.bee_honeyt.IHMGraphique.humiditeInterieureMoyenne
Double humiditeInterieureMoyenne
Definition: IHMGraphique.java:107
com.example.bee_honeyt.IHMGraphique.boutonHumExt
Button boutonHumExt
Definition: IHMGraphique.java:138
com.example.bee_honeyt.IHMGraphique.traiterDonneesTempetatureInteireure
void traiterDonneesTempetatureInteireure()
Traiter les donnes de température interieure pour l'affichage de graphique.
Definition: IHMGraphique.java:899
com.example.bee_honeyt.IHMGraphique.MAX_HUMIDITE_EXTERIEURE
static final int MAX_HUMIDITE_EXTERIEURE
En %.
Definition: IHMGraphique.java:65
com.example.bee_honeyt.IHMGraphique.poidsCourant
Double poidsCourant
Definition: IHMGraphique.java:84
com.example.bee_honeyt.IHMGraphique.temperatureInterieureCourante
Double temperatureInterieureCourante
Definition: IHMGraphique.java:98
com.example.bee_honeyt.IHMGraphique.selectionnerChoix
void selectionnerChoix(int choix)
Sélectionne la couleur de fond du choix actif.
Definition: IHMGraphique.java:376
com.example.bee_honeyt.IHMGraphique.extraireDonneesHumiditeExterieure
void extraireDonneesHumiditeExterieure()
Extraire les données de l'humidité extérieure de l'historique.
Definition: IHMGraphique.java:1321
com.example.bee_honeyt.IHMGraphique.extraireDonneesPression
void extraireDonneesPression()
Extraire les données de la pression de l'historique.
Definition: IHMGraphique.java:642
com.example.bee_honeyt.IHMGraphique.MAX_HUMIDITE_INTERIEURE
static final int MAX_HUMIDITE_INTERIEURE
En %.
Definition: IHMGraphique.java:61
com.example.bee_honeyt.IHMGraphique.TAG
static final String TAG
TAG pour les logs.
Definition: IHMGraphique.java:51
com.example.bee_honeyt.IHMGraphique.mesuresPoids
List< Double > mesuresPoids
Les mesures moyennées par heure pour le poids.
Definition: IHMGraphique.java:83
com.example.bee_honeyt.IHMGraphique.temperatureInterieureMax
Double temperatureInterieureMax
Definition: IHMGraphique.java:101
com.example.bee_honeyt.IHMGraphique.historique
Historique historique
Relation avec la classe Historique.
Definition: IHMGraphique.java:75
com.example.bee_honeyt.IHMGraphique.MIN_POIDS
static final int MIN_POIDS
En kg.
Definition: IHMGraphique.java:70
com.example.bee_honeyt.IHMGraphique.humiditeInterieureMax
Double humiditeInterieureMax
Definition: IHMGraphique.java:108
com.example.bee_honeyt.Historique.charger
void charger(String strUrl, String key, String deviceID, String duree)
Charge à partir d'une URL vers Data Storage TTN.
Definition: Historique.java:69
com.example.bee_honeyt.IHMGraphique.onCreate
void onCreate(Bundle savedInstanceState)
Definition: IHMGraphique.java:147
com.example.bee_honeyt.IHMGraphique.initialiserDonnees
void initialiserDonnees()
Initialiser les conteneurs.
Definition: IHMGraphique.java:230
com.example.bee_honeyt.IHMGraphique.donneesPression
Vector< List< String > > donneesPression
Toutes les mesures récupérées dans l'historique pour la pression (dernières 24h)
Definition: IHMGraphique.java:89