77 lines
1.9 KiB
C++
77 lines
1.9 KiB
C++
#include "DHT.h"
|
|
#include "thingProperties.h"
|
|
|
|
#define DHTPIN 2
|
|
#define DHTTYPE DHT22
|
|
DHT dht(DHTPIN, DHTTYPE);
|
|
|
|
#define RAINPIN 26
|
|
#define SOILPIN 25
|
|
#define WATERPIN 25
|
|
|
|
unsigned long previousMillis = 0;
|
|
const long interval = 10000;
|
|
|
|
long watering_time = 0;
|
|
int watering_duration = 0;
|
|
bool should_water_if_raining = 0;
|
|
int soil_humidity_watering_threshold = 0;
|
|
|
|
/*void onWateringSettingsChange() {
|
|
JsonDocument doc;
|
|
deserializeJson(doc, watering_settings);
|
|
|
|
watering_time = doc["watering_time"];
|
|
watering_duration = doc["watering_duration"];
|
|
should_water_if_raining = doc["should_water_if_raining"];
|
|
soil_humidity_watering_threshold = doc["soil_humidity_watering_threshold"];
|
|
water_now = doc["water_now"];
|
|
}*/
|
|
|
|
void onWaterNowChange() {
|
|
digitalWrite(WATERPIN, water_now);
|
|
}
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
delay(1500);
|
|
|
|
dht.begin();
|
|
pinMode(RAINPIN, INPUT_PULLUP);
|
|
pinMode(WATERPIN, OUTPUT);
|
|
|
|
initProperties();
|
|
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
|
|
setDebugMessageLevel(4);
|
|
ArduinoCloud.printDebugInfo();
|
|
}
|
|
|
|
void loop() {
|
|
ArduinoCloud.update();
|
|
|
|
unsigned long currentMillis = millis();
|
|
if (currentMillis - previousMillis >= interval) {
|
|
previousMillis = currentMillis;
|
|
|
|
soil_humidity = (100 - (analogRead(A0) / 4095.00) * 100);
|
|
is_raining = !digitalRead(RAINPIN);
|
|
humidity = dht.readHumidity();
|
|
temperature = dht.readTemperature();
|
|
|
|
if (isnan(humidity) || isnan(temperature)) {
|
|
Serial.println(F("Failed to read from DHT sensor!"));
|
|
return;
|
|
}
|
|
|
|
Serial.print(F("Humidity: "));
|
|
Serial.print(humidity);
|
|
Serial.print(F("% Temperature: "));
|
|
Serial.print(temperature);
|
|
Serial.print(F("°C Soil humidity: "));
|
|
Serial.print(soil_humidity);
|
|
Serial.print(is_raining ? F(" - It's raining!") : F(""));
|
|
Serial.print(water_now ? F(" - Watering...") : F(""));
|
|
Serial.println();
|
|
}
|
|
}
|