JSON MQTT v6

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Записи
  • #27001
    wadim
    Участник

    Всех приветствую. Осваиваю Scada впервые, так что за простые вопросы сильно не пинайте. Приходит JSON вида:
    {«ModbusReceived»:{«DeviceAddress»:17,»FunctionCode»:3,»StartAddress»:295,»Length»:7,»Count»:1,»Values»:[216]}}
    Обрабатываю его javascriptом:
    log(«Hello from JS. Topic: » + topic);

    let data = JSON.parse(payload);
    setValue(0, data.ModbusReceived.Values);

    Получаю https://drive.google.com/file/d/1Gfr39HyWaneks3JDKpgJEMGBmmFKg1v-/view?usp=sharing

    Если в JSON Values без квадратных скобок, то все работает.

    https://drive.google.com/file/d/1_M6ZPXg_2E2cNvyCdfXiZFh3G4iN4u9C/view?usp=sharing
    https://drive.google.com/file/d/1A8R6qMI-CJA1DfdL43-BVKz7kaG2X5Fw/view?usp=sharing

    Как заставить работать с квадратными скобками?

    #27003
    manjey73
    Участник

    Квадратные скобки это массив, в данном случае с одним элементом

    #27007
    wadim
    Участник

    Как заставить JavaScript обработать этот массив?

    #27009
    manjey73
    Участник

    ну тут не подскажу, я из кода C# при помощи json сериализатора просто читал, создавая классы.

    https://msiter.ru/tutorials/javascript/js_json_arrays

    Может тут что-то нароете

    • Ответ изменён 3 года, 9 месяцев назад пользователем manjey73.
    #27012
    Romiros
    Участник

    Можно по индексу обращаться к массиву:
    setValue(0, data.ModbusReceived.Values[0]);

    Если переменных будет несколько, то нужно добавить дочерние параметры в настройках драйвера и также присваивать значения по индексу.

    #27013
    wadim
    Участник

    Благодарю за помощь. Работает и с несколькими переменными.

    #27014
    wadim
    Участник

    Что бы отправлять команды по MQTT, допустим раз в 1 минуту, необходимо приобрести модуль автоматического управления?

    #27015
    manjey73
    Участник

    Да, все, что без участия оператора требует Модуль. Независимо от времени.

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

    Что бы отправлять команды по MQTT, допустим раз в 1 минуту, необходимо приобрести модуль автоматического управления?

    Смотря какая задача. Например, есть драйвер MQTT-публикаций, который отправляет значения выбранных каналов при их изменении.

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