
Wrapper CLI Python para Flipper Zero
Wrapper Python para CLI do Flipper Zero

Esta versão alinha o wrapper com a CLI atual do Flipper Zero (validado em hardware real, firmware unlshd-089e):
info: flipper.info.device_info() / power_info() / power_debug_info() (os comandos modernos info device / info power).power info → info power: flipper.power.info() continua funcionando e agora lê info power internamente. Adicionado flipper.power.otg_on()/otg_off().date: use flipper.date.datetime(); a análise foi corrigida para o formato de saída atual.KB quanto KiB, read() agora retorna o conteúdo completo do arquivo em várias linhas, e cartões exFAT / sem rótulo são analisados corretamente (corrige #21).NECext, Kaseikyo, RCA, Pioneer, … são suportados automaticamente (corrige #15). Novo flipper.ir.protocols().debug → sysctl debug, subghz tx/rx ganhou o argumento device obrigatório, bt hci_info inalterado.scan, dump, emulate, field, apdu, raw, mfu) com auxiliares de cache de chave Mifare Classic por UID (import_nfc_keys, write_key_cache).ps (→ top), music_player, nfc detect.$ pip install pyflipper
unlshd-089e)from pyflipper import PyFlipper
# Local serial port
flipper = PyFlipper(com="/dev/ttyACM0")
# OR
# Remote serial2websocket server
flipper = PyFlipper(ws="ws://192.168.1.5:1337")
# TCP
flipper = PyFlipper(tcp='192.168.89.222:22170')
# Informações (no firmware atual, isto lê `info power` internamente)
info = flipper.power.info()
# Desligar
flipper.power.off()
# Reiniciar
flipper.power.reboot()
# Reiniciar no modo DFU
flipper.power.reboot2dfu()
# Alternar o pino OTG de 5V no cabeçalho GPIO
flipper.power.otg_on()
flipper.power.otg_off()
# Instalar atualização de arquivo .fuf
flipper.update.install(fuf_file="/ext/update.fuf")
# Fazer backup do Flipper para arquivo .tar
flipper.update.backup(dest_tar_file="/ext/backup.tar")
# Restaurar Flipper do arquivo .tar de backup
flipper.update.restore(bak_tar_file="/ext/backup.tar")
# Listar aplicativos instalados
apps = flipper.loader.list()
# Abrir aplicativo
flipper.loader.open(app_name="Clock")
# Obter data do flipper (objeto datetime)
date = flipper.date.datetime()
# Obter timestamp do flipper
timestamp = flipper.date.timestamp()
# Obter dicionário de informações do dispositivo (firmware atual `info device`, chaves separadas por ponto)
device_info = flipper.info.device_info()
# Obter dicionário de informações de energia (firmware atual `info power`)
power_info = flipper.info.power_info()
# Informações estendidas de depuração de energia/medidor
power_debug = flipper.info.power_debug_info()
# Comando legado `device_info` (chaves separadas por sublinhado, ainda suportado)
legacy_info = flipper.device_info.info()
# Obter dicionário de informações de heap
heap = flipper.free.info()
# Obter string free_blocks
free_blocks = flipper.free.blocks()
# Obter informações do Bluetooth
bt_info = flipper.bt.info()
Compatibilidade de firmware. Esta biblioteca agora tem como alvo a CLI atual do Flipper Zero (firmware 1.x, verificado contra Unleashed
unlshd-089e). Alguns comandos legados foram removidos do firmware oficial e, portanto, não estão mais disponíveis:ps(substituído pelotopinterativo),music_playerenfc detect(NFC agora é um sub-shell interativo).power infofoi movido parainfo power,debugfoi movido parasysctl debugestorageagora relata tamanhos emKiB— tudo tratado de forma transparente pelos wrappers acima.
# Obter informações do sistema de arquivos de armazenamento
ext_info = flipper.storage.info(fs="/ext")
# Obter dicionário do armazenamento /ext
ext_list = flipper.storage.list(path="/ext")
# Obter dicionário da árvore do armazenamento /ext
ext_tree = flipper.storage.tree(path="/ext")
# Obter informações do arquivo
file_info = flipper.storage.stat(file="/ext/foo/bar.txt")
# Criar diretório
flipper.storage.mkdir(new_dir="/ext/foo")
# Ler arquivo
plain_text = flipper.storage.read(file="/ext/foo/bar.txt")
# Remover arquivo
flipper.storage.remove(file="/ext/foo/bar.txt")
# Copiar arquivo
flipper.storage.copy(src="/ext/foo/source.txt", dest="/ext/bar/destination.txt")
# Renomear arquivo
flipper.storage.rename(file="/ext/foo/bar.txt", new_file="/ext/foo/rab.txt")
# Arquivo de hash MD5
md5_hash = flipper.storage.md5(file="/ext/foo/bar.txt")
# Escrever arquivo de uma vez
file = "/ext/bar.txt"
text = """There are many variations of passages of Lorem Ipsum available,
but the majority have suffered alteration in some form, by injected humour,
or randomised words which don't look even slightly believable.
If you are going to use a passage of Lorem Ipsum,
you need to be sure there isn't anything embarrassing hidden in the middle of text.
"""
flipper.storage.write.file(path=file, text=text)
# Escrever arquivo usando um listener
file = "/ext/foo.txt"
text_one = """There are many variations of passages of Lorem Ipsum available,
but the majority have suffered alteration in some form, by injected humour,
or randomised words which don't look even slightly believable.
If you are going to use a passage of Lorem Ipsum,
you need to be sure there isn't anything embarrassing hidden in the middle of text.
"""
flipper.storage.write.start(file)
time.sleep(2)
flipper.storage.write.send(text_one)
text_two = """All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as
necessary, making this the first true generator on the Internet.
It uses a dictionary of over 200 Latin words, combined with a handful of
model sentence structures, to generate Lorem Ipsum which looks reasonable.
The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.
"""
flipper.storage.write.send(text_two)
time.sleep(3)
# Don't forget to stop
flipper.storage.write.stop()
# Definir led genérico ligado (r,b,g,bl)
flipper.led.set(led='r', value=255)
# Desligar led azul
flipper.led.blue(value=0)
# Definir valor do led verde
flipper.led.green(value=175)
# Ligar retroiluminação
flipper.led.backlight_on()
# Desligar retroiluminação
flipper.led.backlight_off()
# Desligar led
flipper.led.off()
# Definir vibro Verdadeiro ou Falso
flipper.vibro.set(True)
# Ligar vibro
flipper.vibro.on()
# Desligar vibro
flipper.vibro.off()