Оглавление:

Как работать с JSON в Node-RED: 13 шагов
Как работать с JSON в Node-RED: 13 шагов

Видео: Как работать с JSON в Node-RED: 13 шагов

Видео: Как работать с JSON в Node-RED: 13 шагов
Видео: #1 Уроки Node.js - Как установить Node.js и начать работать с Node.js 2024, Июль
Anonim
Как работать с JSON в Node-RED
Как работать с JSON в Node-RED

Это руководство научит вас работать с JSON в node-RED. Я покажу вам, как управлять сетевыми розетками с передачей файлов json через http get и post. И вы можете использовать эти знания позже для управления любым устройством, поддерживающим протокол JSON.

В учебных целях я буду использовать сетевую розетку NETIO 4All, но не волнуйтесь, вам не нужно ничего покупать. У NETIO есть потрясающая онлайн-демонстрация 4All, которую вы можете использовать.

Запасы

NETIO 4All networked powersocket или 4All онлайн-демонстрация:

Узел-КРАСНЫЙ

Шаг 1. Протокол REST JSON Http (s)

Протокол REST JSON Http (s)
Протокол REST JSON Http (s)

Эта часть немного техническая, но, пожалуйста, потерпите меня. Если бы я не объяснил эту часть, у вас были бы проблемы с пониманием значений в файлах json, которые мы будем отправлять в node-RED.

Действия, применимые к каждому выходу (электрическая розетка):

Во всех протоколах M2M розетки NETIO используют те же действия, которые можно применить к отдельным выходам. Например, на любой выход может быть записано действие Toggle или Short Off.

Однако переменная Action может использоваться только для записи значений, ее нельзя использовать для чтения текущего состояния розетки.

Вот действия, которые вы можете применить к каждому выходу:

0 = выход выключен (выкл.)

1 = Выход включен (Вкл.)

2 = Выход отключен на короткое время (короткое время выключено)

3 = Выход включен на короткое время (кратковременно включен)

4 = Выход переключен из одного состояния в другое (переключение)

5 = Состояние выхода не изменилось (без изменений)

6 = игнорируется

Пример - файл JSON для переключения выходного номера. 1:

{

«Выходы»: [{

«ID»: 1, «Действие»: 4

}]

}

ID - это число указывает, какой вывод мы будем использовать

Действие - эта часть представляет собой действие, которое будет выполнять выход (например, 1 (включить выход))

Шаг 2: поток

Поток
Поток

А теперь основная часть. Так выглядит среда node-RED.

Мы импортировали поток URL API (проект, который вы видите. Позже я покажу вам, как импортировать потоки и этот проект). Этот проект состоит из двух частей:

  1. NETIO AN30 (JSON REST API) поток
  2. Панель управления (графический интерфейс, с помощью которого вы можете управлять своей программой)

Шаг 3: Панель управления

Щиток приборов
Щиток приборов

Вот как выглядит дашборд в node-RED для этого инструктажа. Вы можете настроить его по своему вкусу.

Дашборд этого проекта разделен на 4 части:

  1. Состояние устройства - показывает информацию об устройстве, такую как модель, MAC-адрес или версия прошивки.
  2. (POST) Управляющий выход 1 - содержит 5 кнопок, управляющих выходом 1. Каждая кнопка выполняет различное действие.
  3. (GET) O1 - O4 Output States - Эта часть показывает текущее состояние каждого выхода вашего устройства.
  4. Управление устройством - в этой части вы можете найти всевозможные графики и датчики, которые показывают текущие измеренные значения с устройства NETIO 4Aall.

Шаг 4: Импорт потока (проект, скрипт и т. Д.)

Поток импорта (проект, скрипт и т. Д.)
Поток импорта (проект, скрипт и т. Д.)

В меню (правый верхний угол) выберите «Импорт», а затем «Буфер обмена».

Затем скопируйте приведенный ниже текст в указанное поле и нажмите «Импорт».

Установка недостающих узлов

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

Если отсутствуют узлы, выберите в меню «Управление палитрой», нажмите «Установить» и найдите и установите недостающие узлы.

Импортировать текст:

[{"id": "56b9510c.98c6f", "type": "tab", "label": "NETIO AN30 (REST JSON)", "disabled": false, "info": ""}, {"id ":" 6a66b637.da1558 "," type ":" http-запрос "," z ":" 56b9510c.98c6f "," name ":" HTTP-запрос (POST) "," method ":" POST "," ret ": "txt", "url": "https://netio-4All.netio-products.com:8080/netio.json", "tls": "", "x": 430, "y": 100, "провода":

Шаг 5: как все это работает вместе

Как все это работает вместе
Как все это работает вместе

В основном поток делится на две части: POST и GET.

POST: запись в O1

  • Пять кнопок, созданных на панели инструментов в потоке, отображаются на панели инструментов.
  • После нажатия кнопки «Выход 1 = ВКЛ» на панели управления полезная нагрузка устанавливается в файл netio.json, который определяет выходные данные и действие (определенные для каждой из кнопок).
  • Блок HTTP-запроса (POST) отправляет файл netio.json в виде запроса на IP-адрес.
  • Ответ сервера (статус) возвращается в качестве вывода.
  • Блок Msg.payload отображает результат HTTP-запроса (POST).

GET: чтение из O1 - O4

  • Блок 1 Second Repeat активирует с периодом в одну секунду блок HTTP-запроса (GET), который, в свою очередь, отправляет netio.json как запрос GET и возвращает полный файл JSON со статусом сокета, полученным от сервера.
  • Блок JSON Parse преобразует файл JSON из блока HTTP-запроса (GET) в объект JSON, чтобы можно было управлять свойствами в файле JSON.
  • Функциональный блок принимает отдельные части объекта JSON и преобразует их в свойства объекта msg для дальнейшего использования.
  • Блок Current Chart устанавливает msg.payload в свойство msg. TotalCurrent объекта msg, поскольку последующий блок Current Chart (Device) может отображать только значение msg.payload.
  • Затем следуют различные узлы вывода, чтобы отобразить выбранные свойства объекта msg, взятые из объекта JSON, на панели мониторинга.

Объект msg и msg.payload

Простое и краткое объяснение см. Здесь:

www.steves-internet-guide.com/node-red-mess…

Шаг 6: HTTP POST и GET

HTTP POST и GET
HTTP POST и GET
HTTP POST и GET
HTTP POST и GET

HTTP-запрос (POST)

Этот узел отправляет командный файл netio.json в виде HTTP-запроса (POST) для управления устройством NETIO 4All.

HTTP-запрос (GET)

Этот узел отправляет HTTP-запрос (GET) и возвращает статусный ответ.

Предварительно заполненный адрес указывает на онлайн-демонстрацию NETIO 4All, где вы можете проверить соединение, не имея устройства NETIO на рабочем месте.

netio-4all.netio-products.com

В этих узлах можно установить свой собственный IP-адрес; однако IP-адрес необходимо изменить как в узлах HTTP-запроса, так и в POST, а также в GET.

Шаг 7: Кнопочные узлы

Кнопочные узлы
Кнопочные узлы
Кнопочные узлы
Кнопочные узлы

При нажатии на кнопку-узел генерируется сообщение, содержащее файл netio.json (изображение справа), которое затем отправляется через http-узел в интеллектуальную розетку netio.

Шаг 8: Функциональный узел

Функциональный узел
Функциональный узел
Функциональный узел
Функциональный узел

Узел функции - это специальный узел, который позволяет писать пользовательскую функцию JavaScript.

В этом руководстве функция выбирает значения из проанализированного файла JSON (теперь объект JSON) и назначает их свойствам объекта msg.

Код разделен на четыре части:

  1. Присвоение значений из объекта JSON отдельным свойствам объекта msg
  2. Обработка ошибок в случае, если сетевая розетка не поддерживает глобальные измерения

    Если сетевая розетка не поддерживает измерение глобальных значений, Node-RED будет отображать ошибки, потому что эта функция не может найти соответствующее свойство, например msg.payload. GlobalMeasure. Voltage, поскольку он не будет присутствовать в объекте JSON. В этом случае свойство объекта msg, например msg. Voltage устанавливается в 0, и ошибка перехватывается и обрабатывается.

  3. Назначение значений состояния выхода
  4. Установка цветов отображаемых значений состояния вывода в соответствии с состояниями вывода

Шаг 9: узел JSON и узел внедрения

Узел JSON и узел ввода
Узел JSON и узел ввода
Узел JSON и узел ввода
Узел JSON и узел ввода

Узел JSON

Узел JSON анализирует файл JSON и преобразует его в объект JSON.

В качестве ответа сервера на запрос GET узел HTTP-запроса возвращает файл JSON, содержащий текущий статус устройства NETIO 4x, но это просто текстовый файл, поэтому для работы с данными файл JSON должен для синтаксического анализа в объект JSON.

Ввести узел

Каждую секунду этот узел активирует узел HTTP-запроса, который отправляет запрос GET.

В результате значения на панели инструментов обновляются с периодом в одну секунду.

Шаг 10: узел текста и узел отладки

Текстовый узел и узел отладки
Текстовый узел и узел отладки
Текстовый узел и узел отладки
Текстовый узел и узел отладки

Текстовый узел

Отображает текстовое поле на панели инструментов. В этом руководстве текстовые узлы отображают ток, напряжение, модель, версию прошивки или версию JSON.

Метка отображается на панели мониторинга, а имя - это имя узла, отображаемое в потоке в Node-RED.

Узел отладки

Отображает msg.payload.

Шаг 11: узел диаграммы

Узел диаграммы
Узел диаграммы
Узел диаграммы
Узел диаграммы

Этот узел отображает текущую диаграмму на панели инструментов в соответствии со значением полезной нагрузки.

Этот узел может строить графики только в соответствии со значением полезной нагрузки.

По этой причине функциональный узел используется для установки msg.payload в значение, которое необходимо отобразить.

msg.payload = msg. TotalCurrent;

Шаг 12: узел измерения и узлы связи

Узел измерения и узлы связи
Узел измерения и узлы связи
Узел измерения и узлы связи
Узел измерения и узлы связи

Узел датчика

Этот узел добавляет виджет датчика на панель инструментов.

В этом руководстве каждый датчик визуализирует одно свойство объекта msg: напряжение [В], ток [A], частота [Гц] и общий истинный коэффициент мощности (TPF).

Связать узлы

Узлы подключения и выхода работают как туннель. Msg.payload поступает в узел ссылки в узле и выходит из узла ссылки.

Я использовал его, чтобы сделать текст более четким и читаемым.

Шаг 13: Спасибо, что прочитали мою инструкцию

Надеюсь, вам понравились мои инструкции и, надеюсь, вы узнали что-то новое.

Это руководство является лишь сокращенной версией другого руководства, которое я сделал

Первоначальное руководство длиннее, содержит больше деталей и, как правило, лучше структурировано. Если вы чего-то не поняли или думаете, что я что-то упустил или недостаточно объяснил, то вы определенно можете найти это там.

Я обещаю, ты не будешь разочарован

Оригинал:

Также есть похожие руководства о различных способах использования node-RED, так что если вам интересно, не стесняйтесь изучить:

Работа с REST URL API в node-RED

www.netio-products.com/en/application-notes/an29-node-red-example-of-url-api-communication-with-netio-4x

Работа с REST XML в node-RED

www.netio-products.com/en/application-notes/an31-node-red-example-of-rest-xml-communication-with-netio-4x

Работа с TCP / Modbus в node-RED

Скоро будет:)

Рекомендуемые: