Files
Smart-flower-system/main/auto_alerts.h
Wang Beihong fcc2d0825d first commit
2026-03-14 14:19:32 +08:00

49 lines
1.2 KiB
C

#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "auto_ctrl_thresholds.h"
#include "esp_err.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
AUTO_ALERT_METRIC_SOIL_MOISTURE = 1,
AUTO_ALERT_METRIC_LIGHT_INTENSITY = 2,
} auto_alert_metric_t;
typedef enum {
AUTO_ALERT_STATE_NORMAL = 0,
AUTO_ALERT_STATE_ALARM = 1,
} auto_alert_state_t;
typedef struct {
auto_alert_metric_t metric;
auto_alert_state_t state;
float value;
float threshold;
int64_t timestamp_ms;
} auto_alert_event_t;
typedef void (*auto_alert_callback_t)(const auto_alert_event_t *event, void *user_ctx);
// Reset internal state at boot.
void auto_alerts_init(void);
// Register callback sink (e.g. MQTT publisher). Passing NULL clears callback.
esp_err_t auto_alerts_register_callback(auto_alert_callback_t callback, void *user_ctx);
// Evaluate current sensor values and emit edge-triggered alert events.
void auto_alerts_evaluate(bool soil_valid,
float soil_moisture_pct,
bool light_valid,
float light_lux,
const auto_ctrl_thresholds_t *thresholds);
#ifdef __cplusplus
}
#endif