Skip to content

Plugins CLI

Esta seção documenta como estender o TamanduCLI com plugins Python: novos comandos digitáveis no console, envio/recebimento BLE, listas wire, monitor realtime e interação com arquivos locais.

Um plugin é um módulo Python em src/commands/ cujo nome termina em _handlers.py. Ele é importado automaticamente na inicialização da CLI e registra handlers via decoradores da API.

Exemplos no repositório:

ArquivoComandos
help_handlers.pyhelp
param_list_edit_handlers.pyparam_list, param_edit
map_edit_handlers.pymap_edit
realtime_handlers.pyopen_realtime + variável battery
MóduloUso
api.command_handlersRegistro de comandos, contexto, hooks BLE, dispatch
api.protocol_utilsWireCommand, format_message, parse/format wire
api.incomingIncomingRouter.wait_for — esperar respostas single
api.list_wireColeta de listas, envio em lote com ACK
api.realtime@register_realtime_variable
api.output_pathsPastas output/ e input/
Usuário digita no prompt
→ normalize_cli_input (atalho name → name(s,r,...))
→ dispatch_cli_command
→ seu handler @cli_command(inv, ctx)
→ ctx.send_wire(...) # envia ao dispositivo
→ ctx.incoming.wait_for(...) # espera resposta
→ ctx.log(...) # imprime no terminal

Notificações BLE chegam em paralelo via dispatch_ble_notificationIncomingRouter.record_many.

PáginaConteúdo
Primeiros passosCriar o primeiro módulo *_handlers.py
Registrar comandos@cli_command, nomes, carregamento automático
Ler parâmetrosWireCommand, argumentos do usuário
Enviar wirectx.send_wire, format_message
Receber singlewait_for, @incoming_command
Enviar listasBatch, headers, ACK
Receber listasListWireCollectionSession, capture/try_feed
Realtime@register_realtime_variable
Arquivosoutput/, input/
Interface (prompt_toolkit)Confirmações, menus, painéis