Added MQTT
This commit is contained in:
86
main/plant_mqtt.h
Normal file
86
main/plant_mqtt.h
Normal file
@ -0,0 +1,86 @@
|
||||
#ifndef PLANT_MQTT_H
|
||||
#define PLANT_MQTT_H
|
||||
|
||||
#include "esp_err.h"
|
||||
#include <stdbool.h>
|
||||
|
||||
// MQTT Configuration - These can be overridden by Kconfig
|
||||
#ifndef CONFIG_MQTT_BROKER_URL
|
||||
#define CONFIG_MQTT_BROKER_URL "mqtt://192.168.4.56:1883"
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_MQTT_USERNAME
|
||||
#define CONFIG_MQTT_USERNAME "esp32"
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_MQTT_PASSWORD
|
||||
#define CONFIG_MQTT_PASSWORD "esp32-plant"
|
||||
#endif
|
||||
|
||||
#ifndef MQTT_CLIENT_ID
|
||||
#define MQTT_CLIENT_ID "plant_watering_esp32"
|
||||
#endif
|
||||
|
||||
#define MQTT_KEEPALIVE 60
|
||||
#define MQTT_QOS_0 0
|
||||
#define MQTT_QOS_1 1
|
||||
#define MQTT_RETAIN 1
|
||||
#define MQTT_NO_RETAIN 0
|
||||
|
||||
// MQTT Topics
|
||||
#define TOPIC_STATUS "plant_watering/status"
|
||||
#define TOPIC_MOISTURE_1 "plant_watering/moisture/1"
|
||||
#define TOPIC_MOISTURE_2 "plant_watering/moisture/2"
|
||||
#define TOPIC_PUMP_1_CMD "plant_watering/pump/1/set"
|
||||
#define TOPIC_PUMP_2_CMD "plant_watering/pump/2/set"
|
||||
#define TOPIC_PUMP_1_STATE "plant_watering/pump/1/state"
|
||||
#define TOPIC_PUMP_2_STATE "plant_watering/pump/2/state"
|
||||
#define TOPIC_CONFIG "plant_watering/config"
|
||||
#define TOPIC_WATERING_STATS "plant_watering/stats"
|
||||
#define TOPIC_LAST_WILL "plant_watering/status"
|
||||
|
||||
// Status messages
|
||||
#define STATUS_ONLINE "online"
|
||||
#define STATUS_OFFLINE "offline"
|
||||
|
||||
// MQTT States
|
||||
typedef enum {
|
||||
MQTT_STATE_DISCONNECTED,
|
||||
MQTT_STATE_CONNECTING,
|
||||
MQTT_STATE_CONNECTED,
|
||||
MQTT_STATE_ERROR
|
||||
} mqtt_state_t;
|
||||
|
||||
// Callbacks
|
||||
typedef void (*mqtt_connected_callback_t)(void);
|
||||
typedef void (*mqtt_disconnected_callback_t)(void);
|
||||
typedef void (*mqtt_data_callback_t)(const char* topic, const char* data, int data_len);
|
||||
|
||||
// MQTT client functions
|
||||
esp_err_t mqtt_client_init(void);
|
||||
esp_err_t mqtt_client_start(void);
|
||||
esp_err_t mqtt_client_stop(void);
|
||||
esp_err_t mqtt_client_publish(const char* topic, const char* data, int qos, int retain);
|
||||
esp_err_t mqtt_client_subscribe(const char* topic, int qos);
|
||||
esp_err_t mqtt_client_unsubscribe(const char* topic);
|
||||
bool mqtt_client_is_connected(void);
|
||||
mqtt_state_t mqtt_client_get_state(void);
|
||||
|
||||
// Callback registration
|
||||
void mqtt_client_register_callbacks(mqtt_connected_callback_t on_connected,
|
||||
mqtt_disconnected_callback_t on_disconnected,
|
||||
mqtt_data_callback_t on_data);
|
||||
|
||||
// Configuration management
|
||||
esp_err_t mqtt_client_set_broker_url(const char* url);
|
||||
esp_err_t mqtt_client_set_credentials(const char* username, const char* password);
|
||||
esp_err_t mqtt_client_get_config(char* url, size_t url_len,
|
||||
char* username, size_t username_len,
|
||||
char* password, size_t password_len);
|
||||
|
||||
// Utility functions for common publishes
|
||||
esp_err_t mqtt_publish_status(const char* status);
|
||||
esp_err_t mqtt_publish_moisture(int sensor_id, int value);
|
||||
esp_err_t mqtt_publish_pump_state(int pump_id, bool state);
|
||||
|
||||
#endif // PLANT_MQTT_H
|
||||
Reference in New Issue
Block a user