Документация Engee

Программное управление РИТМ

Чтобы работать с функциями программного управления КПМ «РИТМ» в Engee, установите пакет поддержки оборудования, как указано в статье. После установки импортируйте модуль и добавьте машину РИТМ:

using Main.EngeeDeviceManager.Targets: RITM_API

if !RITM_API.isMachineExists("RITM 1")
    RITM_API.addMachine("RITM 1", "192.168.56.3")
end

Замените имя и IP-адрес в примере значениями своей машины РИТМ либо используйте уже зарегистрированную машину.

На этой странице представлены все доступные функции программного управления КПМ «РИТМ» в Engee.

Методы RITM_API

У большинства функций первым аргументом является name::String — имя или IP-адрес машины, сохраненной в Engee (например "RITM 1", "192.168.56.3"). Машину нужно предварительно добавить через RITM_API.addMachine или в приложении РИТМ.Управление машинами ritm icon. Если машина выключена или клиентская программа Engee.Интеграции не подключена к Engee, вызов вернет ошибку с описанием причины либо исключение.

RITM_API.addMachine(name, ip; port="8000", is_default=false)::Nothing

Добавляет машину в список известных в Engee.

В случае успешного добавления возвращает nothing и выводит сообщение об успешном добавлении.

Аргументы

  • name::String: имя машины.

  • ip::String: IP-адрес машины.

  • port::String: порт машины. Этот аргумент передается как именованный (port="..."). Значение по умолчанию — "8000".

  • is_default::Bool: пометка машины как используемой по умолчанию. Этот аргумент передается как именованный (is_default=true). Значение по умолчанию — false. Если is_default=true, новая машина становится машиной по умолчанию, в том числе в приложении «РИТМ.Управление машинами».

Примеры

RITM_API.addMachine("RITM 2", "192.168.56.4")
RITM_API.addMachine("RITM 3", "192.168.56.5"; is_default=true)
RITM_API.buildModel(name, model, is_interactive_mode::Bool=false)::Nothing

Собирает и подготавливает модель для запуска на РИТМе.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • model::EngeeModel: структура модели.

  • is_interactive_mode::Bool: определяет режим выполнения модели: true — модель выполняется в интерактивном режиме; false (по умолчанию) — модель выполняется в независимом режиме.

Примеры

# Собираем и запускаем на РИТМе открытую на холсте standalone-модель:

model = engee.gcm()
RITM_API.buildModel("RITM 1", model)
RITM_API.runModel("RITM 1", model; is_interactive_mode=false)
RITM_API.changeParam(name, block_key, param, data)

Изменяет параметр модели, запущенной в интерактивном режиме, во время выполнения модели.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • block_key::Union{String, UUID}: путь к блоку в модели (например, "model_name/Block Name") или UUID блока.

  • param::String: имя параметра.

  • data::Union{Bool, Float64, Int64, Vector{Bool}, Vector{Float64}, Vector{Int64}}: новое значение параметра; приводится к типу, объявленному в модели.

Примеры

RITM_API.changeParam("RITM 1", "my_model/Gain", "Gain", 2.5)
RITM_API.disableAutostart(name)

Удаляет модель из автозапуска.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.disableAutostart("RITM 1")
RITM_API.downloadFile(name, filename; from="/home/ritm", to=pwd())::Nothing

Скачивает указанный файл filename из директории на РИТМе в директорию Engee.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • filename::String: имя файла для скачивания.

  • from::String: путь до директории на РИТМе. Этот аргумент передается как именованный (from="..."). Значение по умолчанию — "/home/ritm".

  • to::String: путь до директории на Engee. Этот аргумент передается как именованный (to="..."). Значение по умолчанию — текущая директория.

Примеры

RITM_API.downloadFile("RITM 1", "example_ritm_extmodel_profile.txt"; from="/home/ritm/build/example_ritm_extmodel/")
RITM_API.getAutostart(name)::Vector{String}

Возвращает вектор имен моделей, находящихся в автозапуске, или пустой вектор, если автозапуск не настроен.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.getAutostart("RITM 1")
RITM_API.getDiagnostic(name)::Nothing

Загружает диагностический архив ritm_diagnostic.zip в текущую директорию Engee.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.getDiagnostic("RITM 1")
RITM_API.getIPByName(name)::Union{String, Nothing}

Возвращает IP-адрес машины РИТМ по ее имени. Возвращает nothing, если машины с таким именем нет.

Аргументы

  • name::String: имя машины.

Примеры

RITM_API.getIPByName("RITM 1")
RITM_API.getLog(name, num)::String

Возвращает последние num строк логов выполнения модели на РИТМе.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • num::Int64: число выводимых строк из логов.

Примеры

RITM_API.getLog("RITM 1", 10)
RITM_API.getMachines()::Vector{Dict{String, Any}}

Список машин, сохраненных в Engee.

Возвращает вектор словарей с ключами "name", "ip", "port" и "default".

"default" означает отображаемую по умолчанию машину в «РИТМ.Управление машинами».

Примеры

RITM_API.getMachines()
RITM_API.getNameByIP(ip)::Vector{String}

Возвращает имена всех машин РИТМ с заданным IP-адресом.

Аргументы

  • ip::String: IP-адрес машины.

Примеры

RITM_API.getNameByIP("192.168.56.3")
RITM_API.getProfileData(name, model_name; engee_location="/user/", in_file=false)::Union{String, Nothing}

Возвращает в виде строки или записывает в файл результаты профилирования модели на РИТМе.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • model_name::String: имя модели.

  • engee_location::String: директория Engee для записи файла, если in_file=true. Этот аргумент передается как именованный (engee_location="..."). Значение по умолчанию — "/user/".

  • in_file::Bool: записать в файл, если задано true, вернуть строку, если задано false (по умолчанию). Этот аргумент передается как именованный (in_file=true).

Примеры

data = RITM_API.getProfileData("RITM 1", "my_model")
RITM_API.getProfileData("RITM 1", "my_model"; engee_location="/user/", in_file=true)
RITM_API.getPtpSettings(name)::Vector{String}

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

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.getPtpSettings("RITM 1")
RITM_API.getPtpState(name)::Vector{String}

Возвращает текущее состояние PTP: запущен или остановлен, а также интерфейс и роль, если PTP запущен.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.getPtpState("RITM 1")
RITM_API.getScreenshot(name, filename)::String

Создает скриншот на целевой платформе РИТМ и загружает его в файловую систему Engee.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • filename::String: имя файла, в который будет сохранен скриншот, по умолчанию "screenshot.png".

Примеры

path = RITM_API.getScreenshot("RITM 1", "example.png")
RITM_API.isConnected(name)::Bool

Проверяет доступность машины РИТМ. Возвращает true, если машина РИТМ доступна, и false в противном случае.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.isConnected("RITM 1")
RITM_API.isMachineExists(name::String)::Bool

Проверяет, существует ли машина РИТМ с заданным именем в Engee.

Возвращает true, если машина существует, и false в противном случае.

Аргументы

  • name::String: имя машины.

Примеры

RITM_API.isMachineExists("RITM 1")
RITM_API.isRunning(name, model_name)::Bool

Проверяет состояние запуска модели на РИТМе. Возвращает true, если модель с заданным именем в данный момент в процессе выполнения на машине РИТМ, и false, если не выполняется.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • model_name::String: имя модели, состояние которой необходимо проверить.

Примеры

RITM_API.isRunning("RITM 1", "newmodel_1")
RITM_API.listFiles(name, path)::Vector{String}

Возвращает список файлов в указанной директории.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • path::String: путь до интересующей директории.

Примеры

RITM_API.listFiles("RITM 1", "/home/ritm")
RITM_API.memInfo(name, model_name)::Union{Vector{Int64}, Int64}

Возвращает информацию о потребляемой моделью памяти.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • model_name::Union{String, Nothing}: имя модели. Если этот аргумент не указан или задан пустой строкой, возвращается результат профилирования системы в виде [total, used, free]. Если указано имя модели — количество байт памяти, потребляемой моделью.

Примеры

RITM_API.memInfo("RITM 1", "newmodel_1")
RITM_API.poweroff(name)

Выключает машину.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.poweroff("RITM 1")
RITM_API.readFile(name, filename; path="/home/ritm")::String

Возвращает содержимое указанного файла на машине РИТМ.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • filename::String: имя интересующего файла.

  • path::String: путь до интересующей директории. Этот аргумент передается

как именованный (path="..."). Значение по умолчанию — "/home/ritm".

Примеры

RITM_API.readFile("RITM 1", "install_manifest.txt"; path="/home/ritm/build/newmodel_1/build/")
RITM_API.reboot(name)

Перезагружает машину.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.reboot("RITM 1")
RITM_API.removeFile(name, path)

Удаляет файл по указанному пути на РИТМе.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • path::String: путь к удаляемому файлу на РИТМе.

Примеры

RITM_API.removeFile("RITM 1", "/home/ritm/newmodel_1.engee")
RITM_API.removeMachine(name)::Nothing

Удаляет машину по точному имени из списка известных в Engee.

В случае успешного удаления возвращает nothing и выводит сообщение об успешном удалении.

Аргументы

  • name::String: имя машины.

Примеры

RITM_API.removeMachine("RITM 1")
RITM_API.resetPtpSettings(name)::Dict{String, Union{String, Int64, Bool, Nothing}}

Сбрасывает сохраненные настройки PTP на РИТМе. Возвращает словарь с результатом операции: статус и сообщение об ошибке (если есть).

После сброса перед запуском PTP заново настройте интерфейс через setupEthPtp.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.resetPtpSettings("RITM 1")
RITM_API.runModel(name, model; is_interactive_mode=false)

Запускает на РИТМе ранее собранную модель.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • model::EngeeModel: структура модели.

  • is_interactive_mode::Bool: режим запуска, должен совпадать с режимом сборки: true — модель выполняется в интерактивном режиме; false (по умолчанию) — модель выполняется в независимом режиме.

Примеры

RITM_API.runModel("RITM 1", model; is_interactive_mode=false)
RITM_API.setAutostart(name, model_name::String)

Помещает модель в автозапуск.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • model_name::String: имя модели.

Примеры

RITM_API.setAutostart("RITM 1", "my_model")
RITM_API.setupEthPtp(
    name,
    eth_number,
    role;
    delay_mech="E2E",
    network_tr="UDPv4",
    priority1=128,
    priority2=128,
    clock_class=248,
    clock_accuracy=254,
)::Dict{String, Union{String, Int64, Bool, Nothing}}

Настраивает PTP на выбранном Ethernet-интерфейсе РИТМа. Возвращает словарь с результатом операции: статус и сообщение об ошибке (если есть).

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • eth_number::Union{Int64, String}: номер Ethernet-интерфейса. Может быть задан в виде строки "HostTarget" или в виде целого числа от 1 до максимального количества интерфейсов Ethernet.

  • role::String: задает роль локальных часов PTP: "Master" или "Slave".

  • delay_mech: режим работы PTP. Возможные значения "E2E", "P2P" или "Auto". Значение по умолчанию "E2E".

  • network_tr: сетевой протокол. Возможные значения "UDPv4", "UDPv6" и "L2". Значение по умолчанию "UDPv4".

  • priority1: атрибут локальных часов "Priority 1". Возможный диапазон от 0 до 255. Значение по умолчанию 128.

  • priority2: атрибут локальных часов "Priority 2". Возможный диапазон от 0 до 255. Значение по умолчанию 128.

  • clock_class: атрибут локальных часов "Class". Возможный диапазон от 0 до 255. Значение по умолчанию 248.

  • clock_accuracy: атрибут локальных часов "Accuracy". Возможный диапазон от 0 до 255. Значение по умолчанию 254.

RITM_API.setupEthernet(name, interface_id, ip, mask)

Настраивает Ethernet-интерфейс машины.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • interface_id::Int64: идентификатор Ethernet-интерфейса.

  • ip::String: IP-адрес интерфейса.

  • mask::Int64: маска сети.

Примеры

RITM_API.setupEthernet("RITM 1", 0, "192.168.0.10", 24)
RITM_API.startPtp(name, eth_number)::Dict{String, Union{String, Int64, Bool, Nothing}}

Запускает PTP на выбранном Ethernet-интерфейсе РИТМа. Возвращает словарь с результатом операции: статус и сообщение об ошибке (если есть).

Перед запуском PTP необходимо настроить интерфейс через setupEthPtp.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • eth_number::Union{Int64, String}: номер Ethernet-интерфейса. Может быть задан в виде строки "HostTarget" или в виде целого числа от 1 до максимального количества интерфейсов Ethernet.

Примеры

RITM_API.startPtp("RITM 1", 1)
RITM_API.stopModel(name)::Nothing

Останавливает модель на РИТМе.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.stopModel("RITM 1")
RITM_API.stopPtp(name, eth_number)::Dict{String, Union{String, Int64, Bool, Nothing}}

Останавливает PTP на выбранном Ethernet-интерфейсе РИТМа. Возвращает словарь с результатом операции: статус и сообщение об ошибке (если есть).

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • eth_number::Union{Int64, String}: номер Ethernet-интерфейса. Может быть задан в виде строки "HostTarget" или в виде целого числа от 1 до максимального количества интерфейсов Ethernet.

Примеры

RITM_API.stopPtp("RITM 1", 1)
RITM_API.uploadFile(name, filename; from=pwd(), to="/home/ritm")

Загружает файл из Engee на РИТМ.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

  • filename::String: имя загружаемого на РИТМ файла.

  • from::String: путь в Engee к директории, где расположен загружаемый файл (по умолчанию — текущая директория).

  • to::String: путь на РИТМе, куда будет загружен файл (по умолчанию — "/home/ritm").

Примеры

RITM_API.uploadFile("RITM 1", "my_file.txt"; from="/user/", to="/home/ritm")
RITM_API.version(name)::Dict{String, String}

Версии прошивки и пакета поддержки РИТМ. Возвращает словарь с ключами:

  • firmware::String — версия прошивки.

  • support_package::String — версия пакета поддержки.

Аргументы

  • name::String: имя или IP-адрес машины РИТМ.

Примеры

RITM_API.version("RITM 1")