1 package com.example.bee_honeyt;
3 import androidx.appcompat.app.AlertDialog;
4 import androidx.appcompat.app.AppCompatActivity;
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;
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;
37 import org.json.JSONException;
38 import org.json.JSONObject;
60 private static final String
TAG =
"_IHMMobile";
142 super.onCreate(savedInstanceState);
143 setContentView(R.layout.activity_main);
144 Log.d(
TAG,
"onCreate()");
146 getSupportActionBar().setTitle(getString(R.string.app_name) +
" v" + BuildConfig.VERSION_NAME);
207 Log.d(
TAG,
"onStart()");
217 Log.d(
TAG,
"onResume()");
227 Log.d(
TAG,
"onPause()");
237 Log.d(
TAG,
"onStop()");
247 Log.d(
TAG,
"onDestroy()");
261 alertePoids = (TextView) findViewById(R.id.alertePoids);
276 ruchePoidsBas = (ImageView) findViewById(R.id.ruchePoidsTropFaible);
347 for (
int i = 0; i <
rucher.size(); i++)
353 adapterRuche.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
356 listeRuches.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener()
359 public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
361 Log.d(TAG,
"listeRuches onItemSelected()");
362 for (int i = 0; i < rucher.size(); i++)
364 if (rucher.get(i).getNom().equals(listeNomsRuches.get(position)))
366 Log.d(TAG,
"Sélection : " + rucher.get(i).getNom() +
" - indexRucheSelectionnee = " + indexRucheSelectionnee);
368 ((TextView) parent.getChildAt(0)).setTextColor(Color.BLACK);
369 ((TextView) parent.getChildAt(0)).setTextSize(22);
371 int indexRucheSelectionneePrecedente = indexRucheSelectionnee;
373 if(indexRucheSelectionnee != -1)
375 rucher.set(indexRucheSelectionnee, rucheSelectionnee);
379 rucheSelectionnee = rucher.get(i);
380 indexRucheSelectionnee = i;
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();
394 double poids = rucheSelectionnee.getMesureRuche().getPoids();
395 afficherPoids(poids);
396 remettreAZeroAlertes();
397 initialiserImageAlertes();
399 int pression = rucheSelectionnee.getMesureRuche().getPression();
400 afficherPression(pression);
402 String horodatage = rucheSelectionnee.getHorodatage();
403 afficherHorodatage(horodatage);
409 public void onNothingSelected(AdapterView<?> parent)
422 afficheTemperatureInterieur = (TextView) findViewById(R.id.afficheTemperatureInterieure);
423 afficheTemperatureInterieur.setText(temperatureInterieure +
" °C");
432 afficheTemperatureExterieur = (TextView) findViewById(R.id.afficheTemperatureExterieure);
433 afficheTemperatureExterieur.setText(temperatureExterieure +
" °C");
442 afficheHumiditeInterieur = (TextView) findViewById(R.id.afficheHumiditeInterieure);
443 afficheHumiditeInterieur.setText(humiditeInterieure +
" %");
452 afficheHumiditeExterieur = (TextView) findViewById(R.id.afficheHumiditeExterieure);
453 afficheHumiditeExterieur.setText(humiditeExterieure +
" %");
462 affichePoids = (TextView) findViewById(R.id.affichePoids);
463 affichePoids.setText(poids +
" Kg");
472 affichePression = (TextView) findViewById(R.id.affichePression);
473 affichePression.setText(pression +
" hPa");
482 afficheHorodatage = (TextView) findViewById(R.id.afficheHorodatage);
483 afficheHorodatage.setText(horodatage);
492 afficheConnexion = (TextView) findViewById(R.id.etatConnexion);
493 afficheConnexion.setText(message);
502 afficheDeconnexion = (TextView) findViewById(R.id.etatConnexion);
503 afficheDeconnexion.setText(message);
509 final private Handler handler =
new Handler()
512 public void handleMessage(Message msg)
514 super.handleMessage(msg);
516 Bundle bundle = msg.getData();
518 switch(bundle.getInt(
"etat"))
521 Log.d(TAG,
"handleMessage() TTN connecté");
522 afficherConnexion(
"Connectée");
526 Log.d(TAG,
"handleMessage() TTN déconnecté");
527 afficherDeconnexion(
"Déconnecté");
530 communicationMQTT.connecter();
535 Log.d(TAG,
"handleMessage() TTN topic = " + bundle.getString(
"topic") +
" message = " + bundle.getString(
"message"));
536 String topic = bundle.getString(
"topic");
539 String deviceId = extraireDeviceId(topic);
542 Log.d(TAG,
"handleMessage() deviceId = " + deviceId +
" ? " + rucheSelectionnee.getDeviceID());
543 if(deviceId.equals(rucheSelectionnee.getDeviceID()))
545 Log.d(TAG,
"handleMessage() Données pour la ruche = " + rucheSelectionnee.getNom() +
" !!!");
546 String message = bundle.getString(
"message");
547 traiterMessage(message);
560 int port = extrairePort(message);
561 String payloadFields = extraireDonneeMessage(message);
562 String metaData = extraireHorodatageMessage(message);
566 case EXTRAIRE_DONNEE_POIDS:
567 double poids = extrairePoids(payloadFields);
568 rucheSelectionnee.getMesureRuche().setPoids(poids);
569 afficherPoids(poids);
570 afficherAlertePoids();
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();
595 String horodatage = extraireHorodatage(metaData);
596 rucheSelectionnee.setHorodatage(horodatage);
597 afficherHorodatage(horodatage);
605 afficherAlerteTemperatureInterieure();
606 afficherAlerteTemperatureExterieure();
607 afficherAlerteHumiditeInterieure();
608 afficherAlerteHumiditeExterieure();
609 afficherAlertePression();
624 JSONObject json =
null;
625 Iterator<String> it =
null;
626 json =
new JSONObject(payloadFields);
632 pression = json.getInt(
"pression");
633 Log.d(TAG,
"extrairePression() pression = " + pression);
635 catch (JSONException e)
651 int humiditeExterieure = 0;
655 JSONObject json =
null;
656 Iterator<String> it =
null;
657 json =
new JSONObject(payloadFields);
663 humiditeExterieure = json.getInt(
"humiditeExt");
664 Log.d(TAG,
"extraireHumiditeExterieure() Humidite exterieure = " + humiditeExterieure);
666 catch (JSONException e)
671 return humiditeExterieure;
682 int humiditeInterieure = 0;
686 JSONObject json =
null;
687 Iterator<String> it =
null;
688 json =
new JSONObject(payloadFields);
694 humiditeInterieure = json.getInt(
"humiditeInt");
695 Log.d(TAG,
"extraireHumiditeInterieure() Humidite interieure = " + humiditeInterieure);
697 catch (JSONException e)
702 return humiditeInterieure;
713 double temperatureExterieure = 0.0;
717 JSONObject json =
null;
718 Iterator<String> it =
null;
719 json =
new JSONObject(payloadFields);
725 temperatureExterieure = json.getDouble(
"temperatureExt");
726 Log.d(TAG,
"extraireTemperatureExterieure() Temperature exterieure = " + temperatureExterieure);
728 catch (JSONException e)
733 return temperatureExterieure;
744 double temperatureInterieure = 0.0;
748 JSONObject json =
null;
749 Iterator<String> it =
null;
750 json =
new JSONObject(payloadFields);
756 temperatureInterieure = json.getDouble(
"temperatureInt");
757 Log.d(TAG,
"extraireTemperatureInterieure() Temperature interieure = " + temperatureInterieure);
759 catch (JSONException e)
764 return temperatureInterieure;
779 JSONObject json =
null;
780 json =
new JSONObject(message);
783 port = json.getInt(
"port");
784 Log.d(TAG,
"extrairePort() port = " + port);
786 catch (JSONException e)
800 for (
int i = 0; i < rucher.size(); i++)
802 communicationMQTT.souscrireTopic(rucher.get(i).getDeviceID());
812 for (
int i = 0; i < rucher.size(); i++)
814 communicationMQTT.unsubscribe(rucher.get(i).getDeviceID());
824 Log.d(TAG,
"extraireTopic() topic = " + topic);
832 if (topic.startsWith(APPLICATION_ID))
834 String[] champs = topic.split(
"/");
836 for (
int i = 0; i < champs.length; i++)
838 Log.d(TAG,
"champs = " + champs[i]);
863 String payloadFields =
null;
867 JSONObject json =
null;
868 Iterator<String> it =
null;
870 json =
new JSONObject(message);
875 String cle = it.next();
878 if (cle.equals(
"payload_fields"))
880 payloadFields = json.getString(cle);
881 Log.d(TAG,
"extraireDonneeMessage() payload_fields = " + payloadFields);
885 catch (JSONException e)
890 return payloadFields;
908 String metaData =
null;
912 JSONObject json =
null;
913 Iterator<String> it =
null;
915 json =
new JSONObject(message);
920 String cle = it.next();
922 if (cle.equals(
"metadata"))
924 metaData = json.getString(cle);
928 catch (JSONException e)
943 String horodatageFormate =
"";
947 Log.d(TAG,
"extraireHorodatage() metadata = " + metaData);
948 JSONObject json =
null;
949 json =
new JSONObject(metaData);
955 String time = json.getString(
"time");
956 Log.d(TAG,
"extraireHorodatage() time = " + time);
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);
961 sdfIn.setTimeZone(TimeZone.getTimeZone(
"UTC"));
966 date = sdfIn.parse(time);
967 sdfOut.setTimeZone(TimeZone.getDefault());
968 horodatageFormate = sdfOut.format(date);
970 catch (ParseException e)
974 Log.d(TAG,
"extraireHorodatage() horodatageFormate = " + horodatageFormate);
976 catch (JSONException e)
981 return horodatageFormate;
991 Log.d(TAG,
"extraireDeviceId() topic = " + topic);
992 String deviceId =
"";
995 Pattern topicPattern = Pattern.compile(
"/(.+?)/(.+?)/");
996 String contenueTopic = topic;
998 Matcher topicMatcher = topicPattern.matcher( contenueTopic );
999 if (topicMatcher.find())
1001 Log.d( TAG,
" Device ID = " + topicMatcher.group(2));
1002 deviceId = topicMatcher.group(2);
1019 JSONObject json =
null;
1020 Iterator<String> it =
null;
1021 json =
new JSONObject(payloadFields);
1023 poids = json.getDouble(
"poids");
1024 Log.d(TAG,
"extrairePoids() poids = " + poids);
1026 catch (JSONException e)
1028 e.printStackTrace();
1040 if(indexRucheSelectionnee == -1)
1043 AlertDialog.Builder alert =
new AlertDialog.Builder(
this );
1046 alert.setTitle(
"Supprimer une ruche");
1047 alert.setMessage(
"Etes-vous sur de vouloir supprimer " + rucheSelectionnee.getNom() +
" ?");
1048 alert.setPositiveButton(oui,
new DialogInterface.OnClickListener()
1051 public void onClick(DialogInterface dialog, int which)
1053 Toast.makeText(IHMMobile.this,
"Votre ruche a bien été supprimée",Toast.LENGTH_LONG).show();
1054 supprimerRuche(rucheSelectionnee);
1057 alert.setNegativeButton(non,
new DialogInterface.OnClickListener()
1060 public void onClick(DialogInterface dialog, int which)
1065 alert.create().show();
1074 AlertDialog.Builder alert =
new AlertDialog.Builder(
this );
1075 String ajout =
"Ajouter";
1076 String annule =
"Annuler";
1078 alert.setTitle(
"Ajouter une ruche");
1081 LinearLayout layout =
new LinearLayout(
IHMMobile.this);
1082 layout.setOrientation(LinearLayout.VERTICAL);
1084 final TextView labelNom =
new TextView(
IHMMobile.this);
1085 labelNom.setText(
" Nom :");
1086 layout.addView(labelNom);
1088 final EditText nom =
new EditText(
IHMMobile.this);
1089 layout.addView(nom);
1090 nom.setInputType(InputType.TYPE_CLASS_TEXT);
1092 final TextView labelDeviceID =
new TextView(
IHMMobile.this);
1093 labelDeviceID.setText(
" DeviceID :");
1094 layout.addView(labelDeviceID);
1096 final EditText deviceID =
new EditText((
IHMMobile.this));
1097 layout.addView(deviceID);
1098 deviceID.setInputType(InputType.TYPE_CLASS_TEXT);
1100 alert.setView(layout);
1102 alert.setPositiveButton(ajout,
new DialogInterface.OnClickListener()
1105 public void onClick(DialogInterface dialog, int which)
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();
1113 alert.setNegativeButton(annule,
new DialogInterface.OnClickListener()
1116 public void onClick(DialogInterface dialog, int which)
1122 alert.create().show();
1132 rucher.add(
new Ruche(nom, deviceID));
1133 stockage.editerRuche(nom,deviceID);
1134 adapterRuche.add(nom);
1145 for (
int i = 0; i < rucher.size(); i++)
1149 if(rucher.get(i).getNom() == ruche.
getNom() )
1151 listeNomsRuches.remove(rucher.get(i).getNom());
1153 stockage.supprimerAlertes(ruche.
getNom());
1154 adapterRuche.remove(ruche.
getNom());
1165 if(indexRucheSelectionnee == -1)
1168 AlertDialog.Builder alert =
new AlertDialog.Builder(
this );
1169 String ajout =
"Ajouter";
1170 String annule =
"Annuler";
1172 alert.setTitle(
"Paramétrer les seuils d'alerte");
1174 LinearLayout layout =
new LinearLayout(
IHMMobile.this);
1175 layout.setOrientation(LinearLayout.VERTICAL);
1177 final TextView labelTemperatureInterieureMax =
new TextView(
IHMMobile.this);
1178 labelTemperatureInterieureMax.setText(
" Température intérieure maximale :");
1179 layout.addView(labelTemperatureInterieureMax);
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);
1186 final TextView labelTemperatureInterieureMin =
new TextView(
IHMMobile.this);
1187 labelTemperatureInterieureMin.setText(
" Température intérieure minimale:");
1188 layout.addView(labelTemperatureInterieureMin);
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);
1195 final TextView labelTemperatureExterieureMax =
new TextView(
IHMMobile.this);
1196 labelTemperatureExterieureMax.setText(
" Température extérieure maximale :");
1197 layout.addView(labelTemperatureExterieureMax);
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);
1204 final TextView labelTemperatureExterieureMin =
new TextView(
IHMMobile.this);
1205 labelTemperatureExterieureMin.setText(
" Température extérieure minimale :");
1206 layout.addView(labelTemperatureExterieureMin);
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);
1213 final TextView labelHumiditeInterieureMax =
new TextView(
IHMMobile.this);
1214 labelHumiditeInterieureMax.setText(
" Humidité intérieure maximale :");
1215 layout.addView(labelHumiditeInterieureMax);
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);
1222 final TextView labelHumiditeInterieureMin =
new TextView(
IHMMobile.this);
1223 labelHumiditeInterieureMin.setText(
" Humidité intérieure minimale :");
1224 layout.addView(labelHumiditeInterieureMin);
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);
1231 final TextView labelHumiditeExterieureMax =
new TextView(
IHMMobile.this);
1232 labelHumiditeExterieureMax.setText(
" Humidité extérieure maximale :");
1233 layout.addView(labelHumiditeExterieureMax);
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);
1240 final TextView labelHumiditeExterieureMin =
new TextView(
IHMMobile.this);
1241 labelHumiditeExterieureMin.setText(
" Humidité extérieure minimale :");
1242 layout.addView(labelHumiditeExterieureMin);
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);
1249 final TextView labelPoidsMax =
new TextView(
IHMMobile.this);
1250 labelPoidsMax.setText(
" Poids maximal :");
1251 layout.addView(labelPoidsMax);
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);
1258 final TextView labelPoidsMin =
new TextView(
IHMMobile.this);
1259 labelPoidsMin.setText(
" Poids minimal :");
1260 layout.addView(labelPoidsMin);
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);
1267 final TextView labelPressionMax =
new TextView(
IHMMobile.this);
1268 labelPressionMax.setText(
" Pression maximal :");
1269 layout.addView(labelPressionMax);
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);
1276 final TextView labelPressionMin =
new TextView(
IHMMobile.this);
1277 labelPressionMin.setText(
" Pression minimal :");
1278 layout.addView(labelPressionMin);
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);
1286 alert.setPositiveButton(ajout,
new DialogInterface.OnClickListener()
1289 public void onClick(DialogInterface dialog, int which)
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();
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();
1308 afficherAlertesEnvironnement();
1309 afficherAlertePoids();
1312 alert.setNegativeButton(annule,
new DialogInterface.OnClickListener()
1315 public void onClick(DialogInterface dialog, int which)
1321 alert.create().show();
1330 if(indexRucheSelectionnee != -1)
1333 intent.putExtra(
"application", communicationMQTT.getUsername());
1334 intent.putExtra(
"key", communicationMQTT.getPassword());
1335 intent.putExtra(
"device", rucher.get(indexRucheSelectionnee).getDeviceID());
1336 startActivity(intent);
1346 if(communicationMQTT !=
null)
1348 intent.putExtra(
"application", communicationMQTT.getUsername());
1349 intent.putExtra(
"key", communicationMQTT.getPassword());
1353 intent.putExtra(
"application",
"");
1354 intent.putExtra(
"key",
"");
1358 startActivityForResult(intent, ACTIVITE_CONNEXION);
1367 super.onActivityResult(requestCode, resultCode, intent);
1368 Log.d(TAG,
"onActivityResult() resultCode : " + resultCode);
1370 if(requestCode == ACTIVITE_CONNEXION)
1372 if(resultCode == RESULT_OK)
1374 applicationID = intent.getStringExtra(
"application");
1375 key = intent.getStringExtra(
"key");
1376 Log.d(TAG,
"onActivityResult() applicationID = " + applicationID +
" - key = " + key);
1378 stockerParametreConnexion();
1380 communicationMQTT.setUsername(applicationID);
1381 communicationMQTT.setPassword(key);
1385 communicationMQTT.deconnecter();
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)
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);
1405 stockage.editerConnexionTTN(applicationID, key);
1410 applicationID = stockage.obtenir(
"application");
1411 key = stockage.obtenir(
"key");
1412 Log.d(TAG,
"recupererParametreConnexion() applicationID = " + applicationID +
" - key = " + key);
1420 Log.d(TAG,
"afficherAlerteTemperatureInterieure()");
1421 if(rucheSelectionnee.getMesureRuche().getTemperatureInterieure() > rucheSelectionnee.getAlerteRuche().getTemperatureInterieurMax())
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);
1430 else if(rucheSelectionnee.getMesureRuche().getTemperatureInterieure() < rucheSelectionnee.getAlerteRuche().getTemperatureInterieurMin())
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);
1440 alerteTemperatureInterieure.setText(
"");
1441 rucheTemperatureInterieureChaud.setVisibility(View.INVISIBLE);
1442 rucheTemperatureInterieureFroid.setVisibility(View.INVISIBLE);
1443 rucheTemperatureInterieureNormale.setVisibility(View.VISIBLE);
1452 if(rucheSelectionnee.getMesureRuche().getTemperatureExterieure() > rucheSelectionnee.getAlerteRuche().getTemperatureExterieurMax())
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);
1460 else if(rucheSelectionnee.getMesureRuche().getTemperatureExterieure() < rucheSelectionnee.getAlerteRuche().getTemperatureExterieurMin())
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);
1470 alerteTemperatureExterieure.setText(
"");
1471 rucheTemperatureExterieureChaud.setVisibility(View.INVISIBLE);
1472 rucheTemperatureExterieureFroid.setVisibility(View.INVISIBLE);
1473 rucheTemperatureExterieureNormale.setVisibility(View.VISIBLE);
1482 if(rucheSelectionnee.getMesureRuche().getHumiditeInterieure() > rucheSelectionnee.getAlerteRuche().getHumiditeInterieurMax())
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);
1490 else if(rucheSelectionnee.getMesureRuche().getHumiditeInterieure() < rucheSelectionnee.getAlerteRuche().getHumiditeInterieurMin())
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);
1500 alerteHumiditeInterieure.setText(
"");
1501 rucheHumiditeInterieureHaute.setVisibility(View.INVISIBLE);
1502 rucheHumiditeInterieureBasse.setVisibility(View.INVISIBLE);
1503 rucheHumiditeInterieureNormale.setVisibility(View.VISIBLE);
1512 if(rucheSelectionnee.getMesureRuche().getHumiditeExterieure() > rucheSelectionnee.getAlerteRuche().getHumiditeExterieurMax())
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);
1520 else if(rucheSelectionnee.getMesureRuche().getHumiditeExterieure() < rucheSelectionnee.getAlerteRuche().getHumiditeExterieurMin())
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);
1530 alerteHumiditeExterieure.setText(
"");
1531 rucheHumiditeExterieureHaute.setVisibility(View.INVISIBLE);
1532 rucheHumiditeExterieureBasse.setVisibility(View.INVISIBLE);
1533 rucheHumiditeExterieureNormale.setVisibility(View.VISIBLE);
1542 if(rucheSelectionnee.getMesureRuche().getPoids() > rucheSelectionnee.getAlerteRuche().getPoidsMax())
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);
1551 else if(rucheSelectionnee.getMesureRuche().getPoids() < rucheSelectionnee.getAlerteRuche().getPoidsMin())
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);
1561 alertePoids.setText(
"");
1562 ruchePoidsHaute.setVisibility(View.INVISIBLE);
1563 ruchePoidsBas.setVisibility(View.INVISIBLE);
1564 ruchePoidsNormale.setVisibility(View.VISIBLE);
1570 if(rucheSelectionnee.getMesureRuche().getPression() > rucheSelectionnee.getAlerteRuche().getPressionMax())
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);
1579 else if(rucheSelectionnee.getMesureRuche().getPression() < rucheSelectionnee.getAlerteRuche().getPressionMin())
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);
1589 alertePression.setText(
"");
1590 ruchePressionHaute.setVisibility(View.INVISIBLE);
1591 ruchePressionBasse.setVisibility(View.INVISIBLE);
1592 ruchePressionNormale.setVisibility(View.VISIBLE);