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() {
|
||||
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;
|
||||
serializeJson(document, jsonFormattedData);
|
||||
|
|
|
@ -11,6 +11,7 @@ public:
|
|||
static DataHandler instance;
|
||||
return instance;
|
||||
}
|
||||
|
||||
// Public functions
|
||||
String getJsonData();
|
||||
void updateTemperatureData(float temperature);
|
||||
|
|
|
@ -15,11 +15,20 @@
|
|||
|
||||
Component humidity(ComponentType::Analog, PIN_A0);
|
||||
|
||||
float SoilHumidity;
|
||||
float Temperature;
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
Display::Screen::GetInstance().Setup(const_cast<uint8_t*>(u8g2_font_busdisplay8x5_tr));
|
||||
ServerHandler::GetInstance().setup(ssid, pswd);
|
||||
|
||||
Serial.print("Connected to WiFi. IP address: ");
|
||||
Serial.println(WiFi.localIP());
|
||||
|
||||
pinMode(D5, OUTPUT);
|
||||
digitalWrite(D5, LOW);
|
||||
}
|
||||
|
||||
void loop()
|
||||
|
@ -36,15 +45,33 @@ void loop()
|
|||
}
|
||||
|
||||
// If serverHandler finished showing ip.
|
||||
if (serverHandler.showNext())
|
||||
screen.loop();
|
||||
if (serverHandler.showNext()) {
|
||||
//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.
|
||||
delay(serverHandler.showNext() ? 1000 : 250);
|
||||
|
||||
serverHandler.loop();
|
||||
}
|
Loading…
Add table
Reference in a new issue