Содержание статьи
Идея проекта
В стандартной прошивке Flipper Zero есть классная функция, которая позволяет создавать виртуальные копии ИК‑пультов. У меня дома несколько устройств, которые управляются именно ими: проектор и LED-свечки c Aliexpress. Когда я дома, нет проблем взять в руки сам Flipper, выбрать пульт и нажать на кнопку или сделать все то же самое из приложения, которое управляет девайсом с телефона.
Но оба этих способа требуют находиться непосредственно вблизи от управляемого устройства, поскольку телефон подключается к «Флипперу» по Bluetooth. Было принято решение подключить Flipper к Raspberry Pi и иметь возможность управлять им через последовательный порт.
Копирование пультов
Чтобы использовать Flipper вместо какого‑нибудь проприетарного пульта, нам понадобится скопировать сигналы. Для этого в основном меню выбирай приложение Infrared, затем Learn New Remote, а потом поднеси пульт и нажимай нужные кнопки, чтобы скопировать их.

В результате после копирования всех пультов на вкладке Saved Remotes можно увидеть список наших пультов.

А выбрав один из них, видим список доступных кнопок.

Каждый пульт — это по сути файл с расширением .
, где хранится информация о протоколе, адресе и командах, которые необходимо отправить.
Filetype: IR signals fileVersion: 1#name: Ontype: parsedprotocol: NECaddress: 00 00 00 00command: 5E 00 00 00#name: Offtype: parsedprotocol: NECaddress: 00 00 00 00command: 0C 00 00 00
Command Line Interface
Разработчики Flipper Zero создали набор команд для управления девайсом с компьютера из командной строки. Согласно описанию на официальном сайте, через CLI можно читать и эмулировать сигналы, запускать программы, управлять файлами и делать другие вещи. Также приложение предоставляет функции вроде чтения логов, передачи данных на другие Flipper Zero и прочих интересных трюков.
www
Полный обзор всех доступных команд есть в документации.
Можно отправлять команды напрямую, используя какой‑нибудь монитор последовательного порта, Termius, PuTTY или вкладку CLI в фирменном приложении Flipper Lab.

Чтобы управлять нашим «Флиппером» с помощью Python, можно использовать уже готовую библиотеку PyFlipper. Однако при работе с ней я заметил, что некоторые методы устарели. Пришлось смастерить небольшой фикс, так что дальше я буду использовать мой форк этой же библиотеки. Поскольку он не добавлен в PyPi, при установке нужно будет явно указывать ссылку на репозиторий:
pip install git+https://github.com/AviPaperno/pyFlipper.git
Создаем интерфейс для управления «Флиппером»
Для удобства создадим собственный интерфейс — надстройку над упомянутой библиотекой. Дело в том, что через стандартную CLI-оболочку нельзя «отправить эту команду с этого пульта», так что придется реализовать это самостоятельно.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»