spruthub-cli
v1.0.4
Published
CLI tool for managing Spruthub smart home devices
Maintainers
Readme
Sprut.hub CLI (Русский)
Инструмент командной строки для управления устройствами умного дома Sprut.hub. Создан с использованием TypeScript и ES-модулей, предоставляет полный доступ ко всем методам API Sprut.hub через динамическую генерацию команд.
Возможности
- Динамическая генерация команд: Все API-методы из spruthub-client автоматически доступны как команды CLI
- Множественные форматы вывода: JSON, YAML и форматированные таблицы
- Безопасное управление учетными данными: Зашифрованное хранение учетных данных с использованием keytar
- Управление профилями: Поддержка нескольких профилей устройств
- Управление скриптами: Push/pull сценариев
- TypeScript: Полная типовая безопасность и современные ES-модули
- Обнаружение методов: Встроенное исследование API и документация
Установка
npm install -g spruthub-cliБыстрый старт
Вход в ваше устройство Sprut.hub:
spruthub-cli loginПроверка статуса подключения:
spruthub-cli statusОбнаружение доступных команд:
spruthub-cli methods listСписок ваших устройств:
spruthub-cli accessory list
Команды
Основные команды
spruthub-cli login- Настройка аутентификации с устройством Sprut.hubspruthub-cli logout- Удаление сохраненных учетных данныхspruthub-cli status- Проверка статуса подключения и информации о профилеspruthub-cli use <profile>- Переключение между профилямиspruthub-cli push <source>- Загрузка сценариев на устройствоspruthub-cli pull [destination]- Скачивание сценариев с устройстваspruthub-cli deploy <scenarioId>- Развертывание сценария: push, запуск и мониторинг ошибокspruthub-cli logs [options]- Просмотр и потоковая передача системных логов с возможностью фильтрации
Динамические API команды
Все методы API spruthub-client доступны как команды, организованные по категориям:
Управление хабом
spruthub-cli hub list- Список всех хабов Sprut.hub в системеspruthub-cli server clientInfo- Установка информации о клиенте для текущего подключения
Управление устройствами
spruthub-cli accessory list- Список всех аксессуаров (умных устройств) с сервисами и характеристикамиspruthub-cli accessory search- Поиск и фильтрация аксессуаров с умной фильтрациейspruthub-cli characteristic update- Обновление значения характеристики устройства
Управление сценариями
spruthub-cli scenario list- Список всех сценариевspruthub-cli scenario get <index>- Получение конкретного сценария по индексуspruthub-cli scenario create- Создание нового сценарияspruthub-cli scenario update <index>- Обновление существующего сценарияspruthub-cli scenario delete <index>- Удаление сценарияspruthub-cli scenario run <index>- Запуск сценария
Управление комнатами
spruthub-cli room list- Список всех комнатspruthub-cli room get <id>- Получение конкретной комнаты по ID
Системная информация
spruthub-cli server version- Получение информации о версии
Управление логами
spruthub-cli log list- Получение системных логов с опциональным ограничением количества
Обнаружение методов
spruthub-cli methods list- Показать все доступные API методыspruthub-cli methods categories- Показать все категории командspruthub-cli methods describe <method>- Показать детальную схему метода
Примеры использования
Умный поиск устройств
# Поиск аксессуаров с умной фильтрацией
spruthub-cli accessory search
# Поиск конкретных устройств
spruthub-cli accessory search --params '{"search":"light"}'
# Фильтрация по комнате или другим критериям
spruthub-cli accessory search --params '{"roomName":"kitchen"}'Форматы вывода
# JSON вывод
spruthub-cli hub list --format json
# YAML вывод
spruthub-cli accessory list --format yaml
# Табличный формат по умолчанию
spruthub-cli scenario listИспользование параметров
# Обновление характеристики устройства
spruthub-cli characteristic update --params '{"aId":"12345","sId":"67890","cId":"switch","control":{"value":{"boolValue":true}}}'
# Запуск сценария
spruthub-cli scenario run 0
# Получение конкретного сценария
spruthub-cli scenario get 0
# Через JSON файл
spruthub-cli scenario create --file scenario.jsonУправление профилями
# Переключение на другой профиль
spruthub-cli use production
# Проверка статуса конкретного профиля
spruthub-cli status --profile development
# Использование конкретного профиля для команд
spruthub-cli hub list --profile productionРабочий процесс развертывания
# Развертывание сценария (push + run + показать логи)
spruthub-cli deploy 0
# Развертывание без показа логов
spruthub-cli deploy 0 --no-logs
# Развертывание с конкретным профилем
spruthub-cli deploy 0 --profile productionУправление логами
# Показать недавние логи
spruthub-cli log list
# Показать определенное количество логов
spruthub-cli log list -n 50
# Фильтрация логов по сценарию
spruthub-cli log list --scenario-id 0
# Отслеживание логов в реальном времени (как tail -f)
spruthub-cli log list --follow
# Отслеживание логов для конкретного сценария
spruthub-cli log list --follow --scenario-id 0 -n 10Конфигурация
Конфигурация и учетные данные хранятся в ~/.spruthub/:
config.json- Конфигурации профилей и настройки- Пароли безопасно хранятся в системной связке ключей через keytar
Разработка
# Клонирование и установка зависимостей
git clone https://github.com/shady2k/spruthub-cli.git
cd spruthub-cli
npm install
# Сборка TypeScript
npm run build
# Запуск в режиме разработки
npm run dev -- --help
# Линтинг кода
npm run lintАрхитектура
- TypeScript + ES Modules: Современный JavaScript с полной типовой безопасностью
- Динамические команды: Автогенерируемые из системы Schema spruthub-client
- Безопасное хранение: Keytar для шифрования учетных данных
- Множественные форматы: JSON, YAML и табличный вывод
- Обертка клиента: Унифицированный интерфейс для spruthub-client с обработкой ошибок
Требования
- Node.js >= 20.0.0
- Система умного дома Sprut.hub
- Сетевой доступ к WebSocket серверу Sprut.hub
Лицензия
MIT
Содействие
- Сделайте форк репозитория
- Создайте ветку функций
- Внесите изменения с правильной типизацией TypeScript
- Добавьте тесты, если применимо
- Отправьте pull request
Поддержка
Sprut.hub CLI (English)
A command-line interface tool for managing Sprut.hub smart home devices. Built with TypeScript and ES modules, providing complete access to all Sprut.hub API methods through dynamic command generation.
Features
- Dynamic Command Generation: All API methods from spruthub-client are automatically available as CLI commands
- Multiple Output Formats: JSON, YAML, and formatted tables
- Secure Credential Management: Encrypted credential storage using keytar
- Profile Management: Support for multiple device profiles
- Script Management: Push/pull scenarios to/from devices
- TypeScript: Full type safety and modern ES modules
- Method Discovery: Built-in API exploration and documentation
Installation
npm install -g spruthub-cliQuick Start
Login to your Sprut.hub device:
spruthub-cli loginCheck connection status:
spruthub-cli statusDiscover available commands:
spruthub-cli methods listList your devices:
spruthub-cli accessory list
Commands
Core Commands
spruthub-cli login- Setup authentication with Sprut.hub devicespruthub-cli logout- Remove saved credentialsspruthub-cli status- Check connection status and profile infospruthub-cli use <profile>- Switch between profilesspruthub-cli push <source>- Upload scenarios/scripts to devicespruthub-cli pull [destination]- Download scenarios from devicespruthub-cli deploy <scenarioId>- Deploy scenario: push, run, and monitor for errorsspruthub-cli logs [options]- View and stream system logs with filtering options
Dynamic API Commands
All spruthub-client API methods are available as commands, organized by category:
Hub Management
spruthub-cli hub list- List all Sprut.hub devices/hubs in the systemspruthub-cli server clientInfo- Set client information for current connection
Device Control
spruthub-cli accessory list- List all accessories (smart devices) with services and characteristicsspruthub-cli accessory search- Search and filter accessories with smart filteringspruthub-cli characteristic update- Update a characteristic value on a device
Scenario Management
spruthub-cli scenario list- List all scenariosspruthub-cli scenario get <index>- Get a specific scenario by indexspruthub-cli scenario create- Create a new scenariospruthub-cli scenario update <index>- Update an existing scenariospruthub-cli scenario delete <index>- Delete a scenariospruthub-cli scenario run <index>- Run/execute a scenario
Room Management
spruthub-cli room list- List all roomsspruthub-cli room get <id>- Get a specific room by ID
System Information
spruthub-cli server version- Get version information
Log Management
spruthub-cli log list- Get system logs with optional count limitspruthub-cli log subscribe- Subscribe to real-time log streaming via WebSocketspruthub-cli log unsubscribe- Unsubscribe from real-time log streaming
Method Discovery
spruthub-cli methods list- Show all available API methodsspruthub-cli methods categories- Show all command categoriesspruthub-cli methods describe <method>- Show detailed method schema
Usage Examples
Smart Device Search
# Search accessories with smart filtering
spruthub-cli accessory search
# Search for specific devices
spruthub-cli accessory search --params '{"search":"light"}'
# Filter by room or other criteria
spruthub-cli accessory search --params '{"roomName":"kitchen"}'Output Formats
# JSON output
spruthub-cli hub list --format json
# YAML output
spruthub-cli accessory list --format yaml
# Default table format
spruthub-cli scenario listUsing Parameters
# Update device characteristic
spruthub-cli characteristic update --params '{"aId":"12345","sId":"67890","cId":"switch","control":{"value":{"boolValue":true}}}'
# Run a scenario
spruthub-cli scenario run --params '{"index":0}'
# Get specific scenario
spruthub-cli scenario get --params '{"index":0}'
# Via JSON file
spruthub-cli scenario create --file scenario.jsonProfile Management
# Switch to different profile
spruthub-cli use production
# Check specific profile status
spruthub-cli status --profile development
# Use specific profile for commands
spruthub-cli hub list --profile productionDeployment Workflow
# Deploy a scenario (push + run + show logs)
spruthub-cli deploy 0
# Deploy without showing logs
spruthub-cli deploy 0 --no-logs
# Deploy with specific profile
spruthub-cli deploy 0 --profile productionLog Management
# Show recent logs
spruthub-cli log list
# Show specific number of logs
spruthub-cli log list -n 50
# Filter logs by scenario
spruthub-cli log list --scenario-id 0
# Follow logs in real-time (like tail -f)
spruthub-cli log list --follow
# Follow logs for specific scenario
spruthub-cli log list --follow --scenario-id 0 -n 10Configuration
Configuration and credentials are stored in ~/.spruthub/:
config.json- Profile configurations and preferences- Passwords are stored securely in the system keychain via keytar
Development
# Clone and install dependencies
git clone https://github.com/shady2k/spruthub-cli.git
cd spruthub-cli
npm install
# Build TypeScript
npm run build
# Run in development
npm run dev -- --help
# Lint code
npm run lintArchitecture
- TypeScript + ES Modules: Modern JavaScript with full type safety
- Dynamic Commands: Auto-generated from spruthub-client Schema system
- Secure Storage: Keytar for credential encryption
- Multiple Formats: JSON, YAML, and table output
- Client Wrapper: Unified interface to spruthub-client with error handling
Requirements
- Node.js >= 20.0.0
- Sprut.hub smart home system
- Network access to Sprut.hub WebSocket server
License
MIT
Contributing
- Fork the repository
- Create a feature branch
- Make changes with proper TypeScript typing
- Add tests if applicable
- Submit a pull request
