Содержание статьи
Идея проекта
В стандартной прошивке 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-оболочку нельзя «отправить эту команду с этого пульта», так что придется реализовать это самостоятельно.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее