From ebf8dc2f5ae06d89380e507faf3a883f79ec965b Mon Sep 17 00:00:00 2001 From: Dimitris Date: Wed, 13 May 2026 15:56:42 +0200 Subject: [PATCH] Kefalovryso Master --- .gitignore | 6 ++++ platformio.ini | 24 +++++++++++++++ src/main.cpp | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 .gitignore create mode 100644 platformio.ini create mode 100644 src/main.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..beaaf8a --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch +.vscode/extensions.json diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..5f7b76e --- /dev/null +++ b/platformio.ini @@ -0,0 +1,24 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Temperatur messen und an MQTT senden + +[env:dfrobot_firebeetle2_esp32e] +platform = espressif32 +board = dfrobot_firebeetle2_esp32e +framework = arduino +monitor_speed = 115200 +monitor_filters = + default + time +lib_deps = + bblanchon/ArduinoJson@^7.2.0 + ropg/ezTime@^0.8.3 + hasenradball/AM2302-Sensor@^1.4.0 + symlink:///home/kouros/work/workspace/micro/libraries/LocalNetworkManager + tzapu/WiFiManager@^2.0.17 + 256dpi/MQTT@^2.5.2 diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..16ce5ad --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,82 @@ +#include +#include +#include "LocalNetworkManager.h" + +#define uS_TO_S_FACTOR 1000000ULL /* Conversion factor for micro seconds to seconds */ +#define SLEEP 300 // Sleep time in seconds + +constexpr unsigned int SENSOR_PIN{ D3 }; +AM2302::AM2302_Sensor am2302{ SENSOR_PIN }; + +typedef struct { + char dateTime[9]; + int humidity; + float temperature; + float voltage; +} sensor_data_t; + +sensor_data_t sensorData; + +WiFiClient wifi; + +LocalNetworkManager nm; + + +void prepareMqtt() { + nm.connectMqtt(); +} + +void initAM2302() { + if (!am2302.begin()) { + Serial.println("Could not find a valid AM2302 sensor, check wiring!"); + while (100); + } +} + +void readSensor() { + am2302.read(); + // Read temperature as Celsius (the default) + float temp = am2302.get_Temperature(); + // Read humidity + float hum = am2302.get_Humidity(); + Serial.printf("Sensor: Temperature: %.1f Humidity: %.1f", temp, hum); + Serial.println(); + sensorData.temperature = temp; + sensorData.humidity = hum; + if (temp > 0) { + char tempString[8]; + dtostrf(sensorData.temperature, 1, 1, tempString); + nm.publishMessage("kefalovryso/temperature", tempString); + dtostrf(sensorData.humidity, 1, 1, tempString); + nm.publishMessage("kefalovryso/humidity", tempString); + } +} + +void setup() { + Serial.begin(115200); // Initialize the serial port + + Serial.println(""); + + // Init AM3202 Sensor + initAM2302(); + + //Set device in AP_STA mode + WiFi.mode(WIFI_AP_STA); + if (nm.LocalNetworkManagerInit()) { + if (WiFi.status() == WL_CONNECTED) { + nm.initNTPTime("CET"); + prepareMqtt(); + } + } + readSensor(); + delay(200); + Serial.printf("Deep Sleep for %d seconds", SLEEP); + esp_sleep_enable_timer_wakeup((uint64_t)SLEEP * uS_TO_S_FACTOR); + esp_deep_sleep_start(); +} + +void loop() { + + +} +