HB, OTA etc

This commit is contained in:
2026-04-22 20:11:55 +03:00
parent 4100931deb
commit cb1014c950
76 changed files with 3157 additions and 232 deletions

View File

@@ -5,54 +5,88 @@
#include <stdio.h>
#include <time.h>
#include "ws.h"
extern "C" {
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_timer.h"
}
static uint32_t msg_id = 1;
static uint32_t last_send_ms = 0;
static int64_t last_send_ts = 0;
static void sender_task(void *arg) {
int data[RINGBUF_SIZE];
static void sender_task(void* arg)
{
ringbuf_t* rb = sampler_get_buffer();
while (1) {
vTaskDelay(pdMS_TO_TICKS(1000)); // 1 Гц
last_send_ts = time(NULL);
last_send_ms = esp_timer_get_time() / 1000;
while (1)
{
vTaskDelay(pdMS_TO_TICKS(50000)); // 1 мин^-1
char buf[512];
uint32_t now_ms = esp_timer_get_time() / 1000;
time_t now_ts = time(NULL);
ringbuf_t *rb = sampler_get_buffer();
ringbuf_copy(rb, data);
sample_t tmp[RINGBUF_SIZE];
ringbuf_copy(rb, tmp);
time_t now = time(NULL);
int out_values[RINGBUF_SIZE * 2];
int count = 0;
for (int i = 0; i < RINGBUF_SIZE; i++)
{
if (tmp[i].ts_ms >= last_send_ms)
{
uint32_t delta = tmp[i].ts_ms - last_send_ms;
// кладём delta + value
out_values[count * 2 + 0] = delta;
out_values[count * 2 + 1] = tmp[i].value;
count++;
}
}
int len = build_telemetry(
buf,
sizeof(buf),
msg_id++,
now,
1, // device_id (пока захардкожен)
"v", // metric
"adc35", // source
"raw", // unit
data,
RINGBUF_SIZE
last_send_ts,
1, // device_id (пока захардкожен)
"t", // metric
"ds18b20", // source
"c_x100", // unit
out_values,
count
);
if (len > 0) {
if (ws_is_connected()) {
if (len > 0)
{
if (ws_is_connected())
{
ws_send(buf);
} else {
printf("%s\n", buf); // fallback
}
} else {
else
{
printf("%s\n", buf); // fallback
}
}
else
{
printf("build_telemetry failed\n");
}
last_send_ms = now_ms;
last_send_ts = now_ts;
}
}
void sender_task_start() {
void sender_task_start()
{
xTaskCreate(
sender_task,
"sender",
@@ -61,4 +95,4 @@ void sender_task_start() {
5,
NULL
);
}
}