Рабочее место и стартер
Что подготовить до первой сборки и какие данные выбрать на стенде.
Инструменты автора
- Публичный 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.
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 запускает код зависимостей и тестов: работайте только с доверенными исходниками.
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 проверяется отдельно. Учетные данные администратора не передаются процессу плагина.
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 должна совпадать.