fix: RM-all-todo #49

Merged
Clement merged 6 commits from fix-RM-all-todo into master 2023-05-14 21:26:54 +00:00
11 changed files with 46 additions and 50 deletions

View File

@ -3,4 +3,6 @@
## setup : ## setup :
rename `secrets.ini.example` to `secrets.ini` renomé `secrets.ini.example` to `secrets.ini` et le remplir
compiler avec Platform.io

View File

@ -45,7 +45,9 @@ build_flags =
-D API_HOST=\"iot.epi.cb85.software\" -D API_HOST=\"iot.epi.cb85.software\"
;---CAPTEUR FULL CONFIG--- ;---CAPTEUR FULL CONFIG---
;valFull/valReset
-D ULTRA_SOUND_FULL=\"10\" -D ULTRA_SOUND_FULL=\"5/10\"
;tempmin:tempmax/hummin:humax
-D DHT_FULL=\"20:30/60:80\" -D DHT_FULL=\"20:30/60:80\"
;poid max
-D POID_FULL=\"100\" -D POID_FULL=\"100\"

View File

@ -41,7 +41,7 @@ class Balance{
+ tar(val: int = 0): bool + tar(val: int = 0): bool
} }
class Ultrason{ class HumiTemp{
- capteur: DHT* - capteur: DHT*
+ HumiTemp(pin: int, type: String, fullVal: String) + HumiTemp(pin: int, type: String, fullVal: String)
+ read(): String + read(): String
@ -53,6 +53,15 @@ class Ultrason{
+ read(): String + read(): String
} }
class OledScreen{
- display: Adafruit_SSD1306*
+ OledScreen(screenWidth: int, screenHeight: int, oledResetPin: int = -1)
+ welcome(): void
+ clear(): void
+ wifiWaiting(): void
+ printVal(distance: String, poid: String, humitemp: String): void
}
Balance --|> Capteur Balance --|> Capteur
Ultrason --|> Capteur Ultrason --|> Capteur
HumiTemp --|> Capteur HumiTemp --|> Capteur
@ -62,5 +71,8 @@ Program <-- Balance
Program <-- Ultrason Program <-- Ultrason
Program <-- HumiTemp Program <-- HumiTemp
Program <- API
OledScreen -> Program
@enduml @enduml

View File

@ -49,8 +49,6 @@ public:
*/ */
bool connect(); bool connect();
//TODO :: Check wifibegin avant
private: private:
@ -89,7 +87,11 @@ private:
*/ */
String token; String token;
/**
* @brief wifi démmaré
*
*/
bool init;
}; };

View File

@ -8,15 +8,16 @@ API::API(String user, String password, String host, bool https){
this->https = https; this->https = https;
this->token = ""; this->token = "";
this->client = new WiFiEspClient(); this->client = new WiFiEspClient();
this->init = false;
} }
bool API::wifiBegin(String wifiId, String wifiPass, Stream* espSerial){ bool API::wifiBegin(String wifiId, String wifiPass, Stream* espSerial){
WiFi.init(espSerial); WiFi.init(espSerial);
this->init = true;
// check for the presence of the shield // check for the presence of the shield
if (WiFi.status() == WL_NO_SHIELD) { if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present"); // FIXME: rm debug
return false; return false;
} }
@ -28,6 +29,7 @@ bool API::wifiBegin(String wifiId, String wifiPass, Stream* espSerial){
return true; return true;
} }
bool API::connect(){ bool API::connect(){
if(!this->init)return false;
this->client->stop(); this->client->stop();
bool sortie = false; bool sortie = false;
@ -119,6 +121,5 @@ bool API::sendValue(String val, String poubelleID, String valUnit, bool full){
this->client->println("Connection: close"); this->client->println("Connection: close");
this->client->println(); this->client->println();
this->token = "";//XXX: on rm le token a chaque fois car on sais pas si la requet a bien aboutie et donc si il y est encore bon
return true; return true;
} }

View File

@ -11,8 +11,16 @@ String HumiTemp::read(){
int hum = this->capteur->readHumidity(true); int hum = this->capteur->readHumidity(true);
int temp = this->capteur->readTemperature(false,true); int temp = this->capteur->readTemperature(false,true);
String stemp = this->fullVall.substring(0, this->fullVall.indexOf("/"));
String shum = this->fullVall.substring(this->fullVall.indexOf("/")+1, this->fullVall.length());
int mintemp = stemp.substring(0, stemp.indexOf(":")).toInt();
int maxtemp = stemp.substring(stemp.indexOf(":")+1, stemp.length()).toInt();
int minhum = shum.substring(0, shum.indexOf(":")).toInt();
int maxhum = shum.substring(shum.indexOf(":")+1, shum.length()).toInt();
//valeur pour un élevage d'astico de pèche selon chatGPT //valeur pour un élevage d'astico de pèche selon chatGPT
if((temp > 20 && temp < 30) && (hum > 60 && hum < 80)){//TODO: passer les valeurs en config if((temp > mintemp && temp < maxtemp) && (hum > minhum && hum < maxhum)){
this->full = true; this->full = true;
}else{ }else{
this->full = false; this->full = false;

View File

@ -9,11 +9,11 @@ Ultrason::Ultrason(int trigeur, int echo, String fullVall):
String Ultrason::read(){ String Ultrason::read(){
int sortie = this->capteur->read(); int sortie = this->capteur->read();
if (sortie < this->fullVall.toInt()) if (sortie < this->fullVall.substring(0, this->fullVall.indexOf("/")).toInt())
{ {
this->full = true; this->full = true;
}else{ }else if (sortie > this->fullVall.substring(this->fullVall.indexOf("/")+1, this->fullVall.length()).toInt()){
this->full = false; this->full = false;
} }
return String(sortie); return String(sortie);
}//TODO: faire en sorte que full se reset avec une autre val }

View File

@ -21,13 +21,6 @@ public:
*/ */
void welcome(); void welcome();
/**
* @brief print the total amount on the screen
*
* @param amount The total amount to print in centimes
*/
void printAmount(int amount);
/** /**
* @brief Clear the screen * @brief Clear the screen

View File

@ -40,26 +40,6 @@ void OledScreen::printVal(String distance, String poid, String humitemp){
void OledScreen::printAmount(int amount) {
this->display->clearDisplay();
this->display->setCursor(0, 0);
this->display->setTextSize(2);
this->display->setTextColor(WHITE);
this->display->println(F(" Total: "));
this->display->println();
this->display->print(amount / 100);
this->display->print(F(","));
int centimes = amount % 100;
if (centimes < 10) {
this->display->print(F("0"));
}
this->display->println(centimes);
this->display->print(F(" EUR"));
this->display->display();
}
void OledScreen::wifiWaiting() { void OledScreen::wifiWaiting() {
this->clear(); this->clear();
this->display->setCursor(0, 0); this->display->setCursor(0, 0);

View File

@ -33,18 +33,16 @@ void Program::loop(){
this->screen->printVal(distance, poid, humitemp); this->screen->printVal(distance, poid, humitemp);
this->api->sendValue(distance, TRASHCAN_ONE, this->ultrasonic->getValType(), this->ultrasonic->isFull()); this->api->sendValue(distance, TRASHCAN_ONE, this->ultrasonic->getValType(), this->ultrasonic->isFull());
Serial.print("Distance in CM = " + distance);
Serial.println(this->ultrasonic->isFull()?" true":" false"); Serial.println(this->ultrasonic->isFull()?" true":" false");
Serial.println("humiTemp = " + humitemp);
this->api->sendValue(humitemp, TRASHCAN_TWO, this->dht->getValType(), this->dht->isFull()); this->api->sendValue(humitemp, TRASHCAN_TWO, this->dht->getValType(), this->dht->isFull());
Serial.print("humiTemp = " + humitemp);
Serial.println(this->dht->isFull()?" true":" false"); Serial.println(this->dht->isFull()?" true":" false");
Serial.println("poid = " + poid);
this->api->sendValue(poid, TRASHCAN_THREE, this->balance->getValType(), this->balance->isFull()); this->api->sendValue(poid, TRASHCAN_THREE, this->balance->getValType(), this->balance->isFull());
Serial.print("poid = " + poid);
Serial.println(this->balance->isFull()?" true":" false"); Serial.println(this->balance->isFull()?" true":" false");
Serial.println(); Serial.println();
delay(1000);
} }

View File

@ -1,12 +1,10 @@
# Depot IOT VR # Depot IOT VR
Lien du Gitea : (depot principale + gestion de projet) Lien du Gitea : (depot principale + gestion de projet)
https://gitea.cb85.software/Epitech-T-DEV-811/T-DEV-811 https://git.lab-ouest.org/Epitech-T-DEV-811/T-DEV-811
Lien de la CAO : https://cad.onshape.com/documents/d370ee863400195afb23d026/w/1a94981b6a6f71d70b075e30/e/d0feb75fc5a122c54598349b?renderMode=0&uiState=6422993bab4d903a51186392 Lien de la CAO : https://cad.onshape.com/documents/d370ee863400195afb23d026/w/1a94981b6a6f71d70b075e30/e/d0feb75fc5a122c54598349b?renderMode=0&uiState=6422993bab4d903a51186392
### Mobile/Unity ### Mobile/Unity
Pour gérer l'AR, nous avons décider d'utiliser Unity et pour résoudre le souci de multi target en AR, nous avons utilisé Vuforia. Pour gérer l'AR, nous avons décider d'utiliser Unity et pour résoudre le souci de multi target en AR, nous avons utilisé Vuforia.
@ -21,7 +19,7 @@ coté IoT, les valeurs de chaque capteurs sont envoyé à l'API puis ensuite, l'
le champ 'unit' dans la collection trash correspond au type de capteur que l'IoT va envoyer a l'api. Le mapping suivant a été conventionner: le champ 'unit' dans la collection trash correspond au type de capteur que l'IoT va envoyer a l'api. Le mapping suivant a été conventionner:
| Capteur | Unit | Valeur | | Capteur | Unit | Valeur |
|----------------------|:----:|--------------------------------------| | -------------------- |:----:| ------------------------------------ |
| Temperature/Humidité | T/H | 10.0;50 (10 degré et 50% d'humidité) | | Temperature/Humidité | T/H | 10.0;50 (10 degré et 50% d'humidité) |
| Poids | W | 200 (200 gram) | | Poids | W | 200 (200 gram) |
| Distance | D | 40 (40 cm) | | Distance | D | 40 (40 cm) |