From 138508957afb38ad19ad1122a7a675b3ba9bc00a Mon Sep 17 00:00:00 2001 From: tza Date: Sun, 23 Jun 2024 19:54:40 +0000 Subject: [PATCH] Upload files to "/" --- esp32-weather.ino | 76 +++++++++++++++++++++++++++++++++++++++++++++++ thingProperties.h | 30 +++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 esp32-weather.ino create mode 100644 thingProperties.h diff --git a/esp32-weather.ino b/esp32-weather.ino new file mode 100644 index 0000000..cf292e8 --- /dev/null +++ b/esp32-weather.ino @@ -0,0 +1,76 @@ +#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(); + } +} diff --git a/thingProperties.h b/thingProperties.h new file mode 100644 index 0000000..6c9789c --- /dev/null +++ b/thingProperties.h @@ -0,0 +1,30 @@ +// Code generated by Arduino IoT Cloud, DO NOT EDIT. + +#include +#include + +const char DEVICE_LOGIN_NAME[] = ""; +const char SSID[] = ""; // Network SSID (name) +const char PASS[] = ""; // Network password (use for WPA, or use as key for WEP) +const char DEVICE_KEY[] = ""; // Secret device password + +void onWaterNowChange(); + +CloudTemperatureSensor temperature; +CloudRelativeHumidity humidity; +CloudRelativeHumidity soil_humidity; +bool is_raining; +bool water_now; + +void initProperties(){ + + ArduinoCloud.setBoardId(DEVICE_LOGIN_NAME); + ArduinoCloud.setSecretDeviceKey(DEVICE_KEY); + ArduinoCloud.addProperty(water_now, READWRITE, ON_CHANGE, onWaterNowChange); + ArduinoCloud.addProperty(temperature, READ, 10 * SECONDS, NULL); + ArduinoCloud.addProperty(humidity, READ, 10 * SECONDS, NULL); + ArduinoCloud.addProperty(soil_humidity, READ, 10 * SECONDS, NULL); + ArduinoCloud.addProperty(is_raining, READ, 10 * SECONDS, NULL); +} + +WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS); \ No newline at end of file