В этой статье я покажу, как сде­лать из Flipper Zero пульт для умно­го дома, тран­сли­рующий коман­ды, при­сыла­емые ему через Telegram. Что­бы под­клю­чить Flipper к Telegram, нам понадо­бит­ся допол­нитель­ное устрой­ство — я для это­го взял Raspberry Pi.
 

Идея проекта

В стан­дар­тной про­шив­ке Flipper Zero есть клас­сная фун­кция, которая поз­воля­ет соз­давать вир­туаль­ные копии ИК‑пуль­тов. У меня дома нес­коль­ко устрой­ств, которые управля­ются имен­но ими: про­ектор и LED-свеч­ки c Aliexpress. Ког­да я дома, нет проб­лем взять в руки сам Flipper, выб­рать пульт и нажать на кноп­ку или сде­лать все то же самое из при­ложе­ния, которое управля­ет девай­сом с телефо­на.

Но оба этих спо­соба тре­буют находить­ся непос­редс­твен­но вбли­зи от управля­емо­го устрой­ства, пос­коль­ку телефон под­клю­чает­ся к «Флип­перу» по Bluetooth. Было при­нято решение под­клю­чить Flipper к Raspberry Pi и иметь воз­можность управлять им через пос­ледова­тель­ный порт.

 

Копирование пультов

Что­бы исполь­зовать Flipper вмес­то какого‑нибудь проп­риетар­ного пуль­та, нам понадо­бит­ся ско­пиро­вать сиг­налы. Для это­го в основном меню выбирай при­ложе­ние Infrared, затем Learn New Remote, а потом под­неси пульт и нажимай нуж­ные кноп­ки, что­бы ско­пиро­вать их.

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

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

Каж­дый пульт — это по сути файл с рас­ширени­ем .ir, где хра­нит­ся информа­ция о про­токо­ле, адре­се и коман­дах, которые необ­ходимо отпра­вить.

Filetype: IR signals file
Version: 1
#
name: On
type: parsed
protocol: NEC
address: 00 00 00 00
command: 5E 00 00 00
#
name: Off
type: parsed
protocol: NEC
address: 00 00 00 00
command: 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, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии