Files
iot_skeleton/esp32/main/sender_task.cpp
eugene-admin 4100931deb - websocket client on ESP32
- telemetry protocol builder
- server-side message handling
- database migrations
- telemetry persistence
2026-04-14 16:09:18 +03:00

64 lines
1.3 KiB
C++

#include "sender_task.h"
#include "sampler_task.h"
#include "ringbuf.h"
#include "protocol.h"
#include <stdio.h>
#include <time.h>
#include "ws.h"
extern "C" {
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
}
static uint32_t msg_id = 1;
static void sender_task(void *arg) {
int data[RINGBUF_SIZE];
while (1) {
vTaskDelay(pdMS_TO_TICKS(1000)); // 1 Гц
char buf[512];
ringbuf_t *rb = sampler_get_buffer();
ringbuf_copy(rb, data);
time_t now = time(NULL);
int len = build_telemetry(
buf,
sizeof(buf),
msg_id++,
now,
1, // device_id (пока захардкожен)
"v", // metric
"adc35", // source
"raw", // unit
data,
RINGBUF_SIZE
);
if (len > 0) {
if (ws_is_connected()) {
ws_send(buf);
} else {
printf("%s\n", buf); // fallback
}
} else {
printf("build_telemetry failed\n");
}
}
}
void sender_task_start() {
xTaskCreate(
sender_task,
"sender",
4096,
NULL,
5,
NULL
);
}