модели — переработка интерфейса редактора моделей;
объекты — небольшие исправления интерфейса объектов;
обработчики — возможность подключать сторонние библиотеки;
геозоны — добавление настройки прозрачности геозон и их контура;
общий интерфейс — редизайн карточек сущностей и переработка всех меню с табами;
отчеты — добавление информативности для экрана построения отчетов;
протоколы — расширение числа поддерживаемых протоколов, включая возможность передачи данных по протоколу WebSocket.
Было:
Стало:
Переделан интерфейс отображения дерева модели, чтобы упростить навигацию по модели и улучшить визуальное восприятие выделенных и видимых элементов. Основные изменения:
Изменена механика режима видимости узла. При скрытии узла с типом Подсистема данные, которые в нее входят, также скрываются в журнале объекта.
Исправлена проблема, из-за которой в окне с результатом ответа на команду не помещается весь текст полученного сообщения.
Было:
Стало:
Для протоколов, поддерживающих логин и пароль для авторизации (например, MQTT), в объекте есть соответствующие поля для заполнения. Эти данные хранятся в закрытом виде и недоступны для копирования. Поэтому при копировании или импорте объектов с паролем возникала проблема — поле пароль на новом объекте заполнялось некорректным значением. В связи с этим теперь поля логин и пароль очищаются при копировании и импорте объекта.
В одном из прошлых обновлений было добавлено скрытие с карты объектов с невалидными координатами (когда широта и долгота равны 0,0). Для некоторых пользователей это вызывало неудобства при поиске таких объектов на карте. Теперь такие объекты можно найти на карте в точке с координатами 0,0.
Добавлена возможность подключения сторонних модулей по ссылке в коде обработчика. Сам модуль должен быть написан на языке JavaScript и соответствовать спецификации ESM (EcmaScript modules)
Для импорта уже имеющихся библиотек из npm можно воспользоваться сторонними сервисами:
Ограничения на подключаемые библиотеки:
В случае нарушения этих ограничений обработчик не будет сохранен.
Рассмотрим несколько примеров:
import { sum } from "https://raw.githubusercontent.com/rightech/ric-examples/master/handlers/lib/example.js";
function process(a, b) {
const res = sum(a, b);
return { sum: res };
}
В данном примере подключается простой JavaScript модуль из нашего репозитория с примерами
export function sum(a, b) {
return a + b;
}
Использование репозитория GitHub в данном примере необязательно, подойдёт любой интернет-адрес, по которому будет доступно содержимое модуля.
Стоит обратить внимание на то что для импорта файлов из GitHub необходимо, использовать их “raw” версию, т.к. иначе сервер GitHub будет отдавать HTML страницу для просмотра, а не само содержимое файла. Для получения нужного адреса нужно нажать соответствующую кнопку “Raw” в интерфейсе GitHub.
Загрузка и импорт кода библиотеки происходит в момент сохранения обработчика, поэтому желательно сразу указывать её рабочую версию для избежания проблем, связанных с обновлением импортируемого пакета.
import GPS from "https://cdn.skypack.dev/gps@0.6.1";
function process(nmea) {
const gps = new GPS();
let lat = 0;
let lon = 0;
gps.on("data", (parsed) => {
lat = parsed.lat;
lon = parsed.lon;
});
gps.update(nmea);
return { lat, lon };
}
Добавлена возможность настраивать отображение геозон на карте. Для этого в окне редактирования геозоны можно выбрать толщину и непрозрачность линии контура, а также уровень непрозрачности заливки.
При необходимости можно делать геозоны полностью невидимыми. Это может быть полезно, чтобы не отображать большие геозоны, которые мешают визуальному восприятию других геозон и объектов. На автоматы, которые отслеживают события входа и выхода для невидимых геозон, это никак не повлияет.
Была проведена работа над унификацией размеров карточек сущностей в платформе. Из-за разных размеров карточек для некоторых сущностей не было достаточно места под все необходимые элементы (например, описание, иконки уровней и прочее).
Добавлены элементы управления для меню с табами. Раньше при большом числе подменю с табами возникало неудобство, так как не все элементы меню помещались на экран.
Было:
Стало:
Переделан экран построения отчета. Была улучшена информативность и добавлено сообщение о результате построения отчета, если его построить не удалось.
Добавлена возможность передавать данные в платформу с помощью протокола WebSocket. Адрес подключения через HTTP — ws://ws.dev.rightech.io, для подключения через HTTPS — wss://ws.dev.rightech.io. В список шаблонов моделей добавлена модель для протокола WebSocket.
Для авторизации в платформе необходимо указать идентификатор (:id) объекта в UriPath одним из следующих способов:
Например, ws://ws.dev.rightech.io:80/objects/my_object_id/connect или ws://ws.dev.rightech.io:80/api/v1/objects/my_object_id/connect
Данные, передаваемые в WS body, должны быть в формате JSON, например:
{
"stringKey":"value1",
"booleanKey":true,
"doubleKey":3.1415,
"longKey":73
"jsonKey": {
"someNumber": 42,
"someArray": [1,2,3],
"someNestedObject": {"key": "value"}
}
}
Для разбора этих данных в модели в поле источник необходимо указывать ключ из JSON. Например, для данных выше можно указать источники: stringKey с типом данных string, booleanKey с типом данных boolean, jsonKey.someNumber с типом данных number, jsonKey.someNestedObject.key с типом данных string:
Для отправки команд необходимо добавить в модель узел с типом Действие и указать необходимый вам body:
За несколько последних релизов был добавлен ряд протоколов для подключения новых типов оборудования. При возникновении вопросов по подключению конкретного типа оборудования напишите на почту development@rightech.io или через форму обратной связи на сайте Rightech.