#include <Arduino.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "plant.h"
// ================= CONFIG =================
#define SENSOR_INTERVAL 1000
// ================= DATA STRUCT =================
struct SensorData {
float moisture;
};
// ================= MQTT STUB =================
void mqttPublish(const char* topic, float value)
{
Serial.print("[MQTT] ");
Serial.print(topic);
Serial.print(" -> ");
Serial.println(value);
}
// ================= SENSOR TASK =================
void sensorTask(void *pvParameters)
{
while (true)
{
updatePlant();
Serial.print("Moisture: ");
Serial.println(moisture);
mqttPublish("plant/1/moisture", moisture);
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
// ================= LED TASK =================
void ledTask(void *pvParameters)
{
while (true)
{
Serial.println("LED task running...");
vTaskDelay(pdMS_TO_TICKS(2000));
}
}
// ================= MQTT TASK =================
void mqttTask(void *pvParameters)
{
while (true)
{
Serial.println("MQTT task heartbeat...");
vTaskDelay(pdMS_TO_TICKS(5000));
}
}
// ================= SETUP =================
void setup()
{
Serial.begin(115200);
randomSeed(analogRead(0));
Serial.println("Starting ESP32 FreeRTOS system...");
xTaskCreate(sensorTask, "sensorTask", 4096, NULL, 1, NULL);
xTaskCreate(ledTask, "ledTask", 4096, NULL, 1, NULL);
xTaskCreate(mqttTask, "mqttTask", 4096, NULL, 1, NULL);
}
// ================= LOOP =================
void loop()
{
// FreeRTOS handles everything
}