Kefalovryso Master

This commit is contained in:
Dimitris
2026-05-13 15:56:42 +02:00
commit ebf8dc2f5a
3 changed files with 112 additions and 0 deletions
+6
View File
@@ -0,0 +1,6 @@
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch
.vscode/extensions.json
+24
View File
@@ -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
+82
View File
@@ -0,0 +1,82 @@
#include <WiFi.h>
#include <AM2302-Sensor.h>
#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() {
}