Стартовая страница › Форумы › Разработка и интеграция › Длинная строка в MQTT
- В этой теме 6 ответов, 3 участника, последнее обновление 5 месяцев, 3 недели назад сделано
Mikhail.
-
АвторСообщения
-
13.06.2025 в 12:38 #38891
manjey73УчастникСобственно по топику MQTT будет приходить строка с данными.
1. Длина не фиксируемая и достаточно длинная
2. Содержимое строки это либо json либо csv (пока не определились) с набором данных за прошедшее время нескольких параметров с дискретностью менее секунды.Устройство на базе ESP будет собирать данные 4-5 каналов и отправлять в топик массивом.
Задача эту строку парсить и раскладывать по каналам данных.
p.s. Делать массивы строк не предлагать 🙂 так как длина строки может быть вариативной в процессе. ТО есть сейчас отправка 4*4, а потом 4*5 или 4*10
Будет зависеть от шага измерения, возможно от качества линии связи и т.д.
Устройство самодельное, на данный момент человек делает прошивку.Тут возникают вопросы:
1. Как перехватить строку до попадания в канал? тем более массив каналов строкового типа тут не подходит из-за вариативности (вот опять сталкиваемся с тем, что нужна строковая БД, куда бы скидывать поступающие данные перед обработкой и передачей данных в каналы)
2. штатная БД не может писать с шагом менее 1 сек, а данные, которые будут поступать будут с шагом 50-200 мс.
3. Штатные БД не поддерживают запись по изменению
4. А БД Postgre требует ручного создания для прошлых срезов, или в рамках скажем после создания БД этой проблемы уже не будет?Ну и это должно работать на Сервере, а не на WEB.
13.06.2025 в 12:42 #38892
manjey73УчастникПравильнее массив массивов. ТО есть 4 параметра в количестве Х
13.06.2025 в 14:25 #38893
a80808УчастникВ 5 версии штатно шла библиотека для патсинга json
13.06.2025 в 14:41 #38894
manjey73УчастникПроблема не в парсинге json, а в том, что это не текущие данные в одном экземпляре, а набор данных на разные метки времени, которые надо разложить с учетом временных меток.
Временные метки в миллисекундах к тому же.
Ну и это должно работать на Сервере, а не в web. Не помню, там в 5-й версии парсинг json был на js насколько помню.16.06.2025 в 14:47 #38933
MikhailМодераторУчитывая постановку задачи, проще написать отдельный драйвер, который будет использовать канал связи MQTT-клиент. Таким образом, вы получите уже готовую строку для дальнейшей обработки.
На мой взгляд, было бы лучше передавать данные в структурированном виде JSON. Но если мощность контроллера не позволяет, то придётся парсить строку.
-
Ответ изменён 5 месяцев, 3 недели назад пользователем
Mikhail.
16.06.2025 в 15:00 #38941
manjey73Участникну там вариант json или csv, но посылка то через топик mqtt как ни крути.
Пока вообще на собственный сервер все посылается, переделали. Но я бы делал под Scada, чтобы много лишнего не писать.17.06.2025 в 11:53 #38968
MikhailМодераторВ канале связи MQTT-клиент приём данных уже реализован, поэтому драйвер должен быть проще, чем писать с нуля.
-
Ответ изменён 5 месяцев, 3 недели назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.