К содержимому
BlueTraktor

Рабочее место и стартер

Что подготовить до первой сборки и какие данные выбрать на стенде.

Инструменты автора

  • Публичный SDK + Starter из загрузки выше; доступ к закрытому репозиторию не требуется.
  • Rust 1.91.0 или новее через rustup, Cargo и C toolchain.
  • Python 3.11+ (tomllib) и zstd. Для дополнительного осмотра ELF: file и readelf или llvm-readelf.
  • Для cross-сборки по умолчанию: cross и работающий локальный Docker. Первой сборке нужна сеть для публичных зависимостей и toolchain images.
bash
rustc --version
cargo --version
python3 --version
zstd --version
docker info
# Если cross еще не установлен:
cargo install cross --locked

Расположение проекта

Проверьте SHA-256 скачанного архива командой shasum -a 256 (или sha256sum в Linux) и сравните с разделом обзора. Распакуйте в новый каталог вне закрытого репозитория. Сохраняйте взаимное расположение crates/, starter/ и инструментов.

Команды ниже создают отдельный проект с вашим ID. Прикладной код находится в starter/src/main.rs, manifest и схемы - в starter/package. Внешних path-зависимостей и тестов закрытого менеджера здесь нет. Cargo запускает код зависимостей и тестов: работайте только с доверенными исходниками.

bash
tar -xzf bluetraktor-plugin-sdk-source-1.2.1.tar.gz
cd bluetraktor-plugin-sdk-source-1.2.1
cargo test --workspace --locked
python3 -m unittest test_build.py test_btp.py
python3 btp.py doctor
python3 btp.py new ../temperature-plugin --id io.example.temperature
cd ../temperature-plugin

Тестовая установка

  • Linux/systemd и согласованные версии BlueTraktor с работающим менеджером плагинов.
  • Действующая лицензия с вашим plugin ID, когда требуется лицензионный контроль.
  • Зарегистрированные серверы источника и MQTT-получателя.
  • Один безопасный числовой лист USEPI и отдельный MQTT-топик без потребителей команд.

Права пользователя

Нужны plugins.view, plugins.install, plugins.configure, plugins.control и plugins.logs. Для диагностики требуется plugins.diagnostics, для удаления пакетов - plugins.remove. Доступ к списку серверов и USEPI проверяется отдельно. Учетные данные администратора не передаются процессу плагина.

bash
sudo bluetraktor doctor
sudo bluetraktor plugins status
sudo bluetraktor license status

До упаковки

  • Оставьте config-bound capabilities из стартера. Настоящие внутренние ID серверов и пути выбираются при настройке экземпляра, а не встраиваются в пакет.
  • Выберите канонический числовой лист USEPI и отдельный безопасный MQTT-топик. config.example.json содержит только учебные данные и не входит в BTP.
  • Выберите точный platform ID целевой установки.
  • btp.py new согласует plugin.id и PLUGIN_ID. Версия в starter/Cargo.toml и manifest должна совпадать.