mirror of
https://github.com/Lemonochrme/clover.git
synced 2025-06-08 08:40:50 +02:00
Moisture notifying. Proper json formatting. Need to fix infinite loop display bug.
This commit is contained in:
parent
7e1d7f1526
commit
1bd5306cd6
3 changed files with 58 additions and 10 deletions
|
@ -18,8 +18,28 @@ String DataHandler::getJsonData() {
|
||||||
|
|
||||||
String DataHandler::buildJson() {
|
String DataHandler::buildJson() {
|
||||||
StaticJsonDocument<200> document; // Taille = 200
|
StaticJsonDocument<200> document; // Taille = 200
|
||||||
document["temperature"] = temperature;
|
|
||||||
document["humidity"] = humidity;
|
String MoistureSensorStatus;
|
||||||
|
if (humidity > 10) {
|
||||||
|
MoistureSensorStatus = "active";
|
||||||
|
} else {
|
||||||
|
MoistureSensorStatus = "inactive";
|
||||||
|
}
|
||||||
|
|
||||||
|
String soilMoistureLevel;
|
||||||
|
if (humidity < 550) {
|
||||||
|
soilMoistureLevel = "dry";
|
||||||
|
} else if (humidity >= 550 && humidity <= 680) {
|
||||||
|
soilMoistureLevel = "moist";
|
||||||
|
} else {
|
||||||
|
soilMoistureLevel = "wet";
|
||||||
|
}
|
||||||
|
|
||||||
|
document["device"]["device_id"] = "clv_0001";
|
||||||
|
document["device"]["moisture_sensor_status"] = MoistureSensorStatus;
|
||||||
|
document["raw_sensor_data"]["temperature"] = temperature;
|
||||||
|
document["raw_sensor_data"]["soil_humidity"] = humidity;
|
||||||
|
document["plant_management"]["soil_moisture"] = soilMoistureLevel;
|
||||||
|
|
||||||
String jsonFormattedData;
|
String jsonFormattedData;
|
||||||
serializeJson(document, jsonFormattedData);
|
serializeJson(document, jsonFormattedData);
|
||||||
|
|
|
@ -11,11 +11,12 @@ public:
|
||||||
static DataHandler instance;
|
static DataHandler instance;
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Public functions
|
// Public functions
|
||||||
String getJsonData();
|
String getJsonData();
|
||||||
void updateTemperatureData(float temperature);
|
void updateTemperatureData(float temperature);
|
||||||
void updateHumidityData(float humidity);
|
void updateHumidityData(float humidity);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Singleton
|
// Singleton
|
||||||
DataHandler();
|
DataHandler();
|
||||||
|
|
|
@ -15,11 +15,20 @@
|
||||||
|
|
||||||
Component humidity(ComponentType::Analog, PIN_A0);
|
Component humidity(ComponentType::Analog, PIN_A0);
|
||||||
|
|
||||||
|
float SoilHumidity;
|
||||||
|
float Temperature;
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
Serial.begin(9600);
|
Serial.begin(9600);
|
||||||
Display::Screen::GetInstance().Setup(const_cast<uint8_t*>(u8g2_font_busdisplay8x5_tr));
|
Display::Screen::GetInstance().Setup(const_cast<uint8_t*>(u8g2_font_busdisplay8x5_tr));
|
||||||
ServerHandler::GetInstance().setup(ssid, pswd);
|
ServerHandler::GetInstance().setup(ssid, pswd);
|
||||||
|
|
||||||
|
Serial.print("Connected to WiFi. IP address: ");
|
||||||
|
Serial.println(WiFi.localIP());
|
||||||
|
|
||||||
|
pinMode(D5, OUTPUT);
|
||||||
|
digitalWrite(D5, LOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
|
@ -36,15 +45,33 @@ void loop()
|
||||||
}
|
}
|
||||||
|
|
||||||
// If serverHandler finished showing ip.
|
// If serverHandler finished showing ip.
|
||||||
if (serverHandler.showNext())
|
if (serverHandler.showNext()) {
|
||||||
screen.loop();
|
//screen.loop(); -> Cause des problèmes
|
||||||
|
}
|
||||||
|
|
||||||
|
SoilHumidity = static_cast<float>(std::any_cast<int>(humidity.getValue()));
|
||||||
|
Temperature = random(1800, 2200) / 100.0;
|
||||||
|
|
||||||
|
dataHandler.updateTemperatureData(Temperature);
|
||||||
|
dataHandler.updateHumidityData(SoilHumidity);
|
||||||
|
|
||||||
|
if (SoilHumidity < 550) {
|
||||||
|
Serial.println("Soil humidity low. Please water the plant.");
|
||||||
|
digitalWrite(D5, HIGH);
|
||||||
|
} else if (SoilHumidity >= 550 && SoilHumidity <= 680) {
|
||||||
|
Serial.println("Perfect soil moisture condition. Idle...");
|
||||||
|
digitalWrite(D5, LOW);
|
||||||
|
} else {
|
||||||
|
Serial.println("Soil too wet.");
|
||||||
|
digitalWrite(D5, LOW);
|
||||||
|
delay(400);
|
||||||
|
digitalWrite(D5, HIGH);
|
||||||
|
delay(400);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dataHandler.updateTemperatureData(random(1800, 2200) / 100.0);
|
|
||||||
// 0 -> air(0), 0-300 -> dry(20), 300-700 -> humid (580), 700-950 -> water(940)
|
|
||||||
dataHandler.updateHumidityData(static_cast<float>(std::any_cast<int>(humidity.getValue())));
|
|
||||||
Serial.println(dataHandler.getJsonData());
|
|
||||||
// When showing IP, delay is faster.
|
// When showing IP, delay is faster.
|
||||||
delay(serverHandler.showNext() ? 1000 : 250);
|
delay(serverHandler.showNext() ? 1000 : 250);
|
||||||
|
|
||||||
serverHandler.loop();
|
serverHandler.loop();
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue