feat: parse and filter ibeacon/altbeacon/eddystone ble advertisements

This commit is contained in:
2026-05-16 20:52:50 +02:00
parent 163a0de93a
commit 8992e311ba
5 changed files with 182 additions and 14 deletions
@@ -41,5 +41,8 @@ esp_err_t mqtt_publisher_init(const char *sensor_id,
/** 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);
@@ -139,3 +139,14 @@ void mqtt_publisher_send_rssi(const char *tag_id, int8_t rssi)
"{\"tag_id\":\"%s\",\"rssi\":%d}", tag_id, (int)rssi);
esp_mqtt_client_publish(s_client, s_topic_rssi, payload, len, 1, 0);
}
void mqtt_publisher_send_beacon(const char *type, const char *id, int8_t tx_power, int8_t rssi)
{
if (!s_client) return;
char payload[128];
int len = snprintf(payload, sizeof(payload),
"{\"type\":\"%s\",\"id\":\"%s\",\"tx_power\":%d,\"rssi\":%d}",
type, id, (int)tx_power, (int)rssi);
esp_mqtt_client_publish(s_client, s_topic_rssi, payload, len, 1, 0);
}