Длинная строка в MQTT

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Автор
    Сообщения
  • #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.

    #38892
    manjey73
    Участник

    Правильнее массив массивов. ТО есть 4 параметра в количестве Х

    #38893
    a80808
    Участник

    В 5 версии штатно шла библиотека для патсинга json

    #38894
    manjey73
    Участник

    Проблема не в парсинге json, а в том, что это не текущие данные в одном экземпляре, а набор данных на разные метки времени, которые надо разложить с учетом временных меток.

    Временные метки в миллисекундах к тому же.
    Ну и это должно работать на Сервере, а не в web. Не помню, там в 5-й версии парсинг json был на js насколько помню.

    #38933
    Mikhail
    Модератор

    Учитывая постановку задачи, проще написать отдельный драйвер, который будет использовать канал связи MQTT-клиент. Таким образом, вы получите уже готовую строку для дальнейшей обработки.

    На мой взгляд, было бы лучше передавать данные в структурированном виде JSON. Но если мощность контроллера не позволяет, то придётся парсить строку.

    • Ответ изменён 5 месяцев, 3 недели назад пользователем Mikhail.
    #38941
    manjey73
    Участник

    ну там вариант json или csv, но посылка то через топик mqtt как ни крути.
    Пока вообще на собственный сервер все посылается, переделали. Но я бы делал под Scada, чтобы много лишнего не писать.

    #38968
    Mikhail
    Модератор

    В канале связи MQTT-клиент приём данных уже реализован, поэтому драйвер должен быть проще, чем писать с нуля.

Просмотр 7 сообщений - с 1 по 7 (из 7 всего)
  • Для ответа в этой теме необходимо авторизоваться.