49 lines
1.8 KiB
C
49 lines
1.8 KiB
C
#pragma once
|
|
|
|
#include "esp_err.h"
|
|
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/event_groups.h"
|
|
#include <stdint.h>
|
|
|
|
/* Event bits set by the MQTT publisher into the shared event group */
|
|
#define MQTT_CONNECTED_BIT BIT0
|
|
#define MQTT_CALIBRATE_START BIT1
|
|
#define MQTT_CALIBRATE_STOP BIT2
|
|
#define MQTT_SELECTED_BIT BIT3
|
|
#define MQTT_DESELECTED_BIT BIT4
|
|
#define MQTT_FACTORY_RESET_BIT BIT5
|
|
#define MQTT_RECONFIGURE_SETTINGS_BIT BIT6
|
|
|
|
/* Populated by handle_cmd() before MQTT_RECONFIGURE_SETTINGS_BIT is set.
|
|
* All fields are optional — empty string means "not provided, leave unchanged". */
|
|
typedef struct {
|
|
char ssid[32];
|
|
char password[64];
|
|
char mqtt_host[128];
|
|
uint16_t mqtt_port;
|
|
} mqtt_reconfigure_data_t;
|
|
|
|
/** Returns a pointer to the last parsed reconfigure payload. Valid only after
|
|
* MQTT_RECONFIGURE_SETTINGS_BIT fires; must be read before the next MQTT event. */
|
|
const mqtt_reconfigure_data_t *mqtt_publisher_get_reconfigure_data(void);
|
|
|
|
/**
|
|
* Initialise and connect the MQTT client.
|
|
*
|
|
* sensor_id — stable anchor ID string (e.g. "anchor_a1b2c3")
|
|
* broker_uri — e.g. "mqtt://192.168.1.100:1883"
|
|
* evt_group — FreeRTOS event group; publisher sets bits above on events
|
|
*/
|
|
esp_err_t mqtt_publisher_init(const char *sensor_id,
|
|
const char *broker_uri,
|
|
EventGroupHandle_t evt_group);
|
|
|
|
/** Publish an RSSI reading. Non-blocking (QoS 1). */
|
|
void mqtt_publisher_send_rssi(const char *tag_id, int8_t rssi);
|
|
|
|
/** Publish a parsed beacon reading with type, id, tx_power and rssi. Non-blocking (QoS 1). */
|
|
void mqtt_publisher_send_beacon(const char *type, const char *id, int8_t tx_power, int8_t rssi);
|
|
|
|
/** Publish the announce message (empty payload). */
|
|
void mqtt_publisher_announce(void);
|