Pylci — внешний интерфейс для raspberry pi и других linux-устройств

Pylci — внешний интерфейс для raspberry pi и других linux-устройств

Привет! Сейчас я желаю продемонстрировать вам проект, над которым я трудился последние несколько лет и наконец произвожу первую пригодную для применения версию. Это pyLCI — Python-based Linux Control Interface, внешний интерфейс для компьютеров с Linux, что разрешает взаимодействовать с совокупностью при помощи кнопок и символьных дисплеев.

Посредством написанных под данный интерфейс приложений возможно делать много задач, которые связаны с настройкой и администрированием совокупности, и запускать разные скрипты и делать команды. И всё это — не завися от монитора с клавиатурой!
Смотрите кроме этого: Raspberry Pi 3 поступил в продажу

Ровно через четыре года по окончании начала продаж самой первой версии Raspberry Pi Model B, в тот же сутки 29 февраля, вышла модель Raspberry Pi 3 Model B. Цена Raspberry Pi 3 — $35, ровно столько же, сколько Raspberry Pi 2.Процессор: 4-ядерный 64-битный ARM Cortex-A53 на 1,2 ГГц (~10x производительности Raspberry Pi 1)Память: 1 GB LPDDR2-900 SDRAMВстроенные 802.11b/g/n и Bluetooth 4.1Полная совместимость с Raspberry Pi 1 и 2Специально для Raspberry Pi 3 компания Broadcom выпустила новый SoC BCM2837.

А ещё мой интерфейс:

  • Недорогой
  • Несложный
  • Легко расширяемый
  • Универсальный

Заинтересованы? Прошу под кат.Про К^W^W Как всё начиналосьВ моей самой первой статье на Хабре я собирался выпустить цикл статей о конфигурировании разных сервисов под Linux на примере EEE Pc 701 с разбитым экраном, что я тогда приобрёл (и удачно использую до сих пор для ответа разных задач). Мне не удалось завершить тот цикл, по большей части из-за неорганизованности, но ещё и вследствие того что передо мной остро поднялась неприятность отсутствия обычного интерфейса для упрощения всех моих задач.

Я начал писать собственную панель управления с web-интерфейсом, что вылилось в пара месяцев экспериментирования, каковые закончились из-за изначально неверной архитектуры моего творения, как и из-за нехватки знаний о лучших ответах о её выборе (ну и ограниченность денежных средств, дабы приобрести дополнительное железо для некоторых главных функций). Однако, мысль на долгое время засела у меня в голове и я медлено присматривался к уже существующим ответам.Через год-два я наконец-таки смог начать трудиться с Raspberry Pi.

Это было весьма интересно, и я придумал для себя новый проект — устройство с Raspberry Pi и множеством дополнений, каковые бы превращали её в более-менее аналогичный по функционалу компьютер. Его планировалось вставлять в отсек 5.25 ПК, вывести провода на заднюю панель, подключить HDMI-кабелем к монитору и применять как плеер/лёгкий браузер/т.п. Довести проект до победного конца не получилось — не хватало лёгкого интерфейса управления этим добром.

Были бесплодные попытки подключить экран от Нокии 3310 для вывода хоть чего-то, но одного только экрана всё равняется не хватало…Что ж, не вышло — так не вышло. Через какое-то время я заинтересовался носимыми компьютерами. Не в последнюю очередь из-за Fallout с извечным Pip-Boy, в интерфейсе которого я тогда проводил большое количество времени 😉 Pip-Boy меня заинтересовал, но не только тем, что с его помощью возможно было вылечиться перед очередной перестрелкой.

Я уже какое-то время ощущал, сколько скрытого потенциала имеется в Linux-устройствах — Android тому примером. Неприятности начинаются около UI. UI — одна из неприятностей, в результате которой я закинул собственную панель управления. UI с нуля определять не так и просто — необходимо знать, где дать свободу, а где сократить пользователя твоего UI и того, кто будет на его базе создавать приложения. А ещё UI на данный момент по большей части приспособлены под графические дисплеи. Каковые огромны, неудобны и легко бьются, ну и без того потом.

Везёт, в случае если имеется тачскрин. В случае если нет — вози мышкой. Возвращаясь к носимым компьютерам — какая, к линии, носимость с огромным дисплеем? Через какое-то время я всецело погряз в Raspberry Pi. на данный момент у меня в помещении под различные задачи приспособлены 4 штуки, ещё 2 свободны. Неприятности с их настройкой — необходимо или по сети лезть, или по UART. По сети — какой в том месте IP? Он по большому счету взят?

В противном случае что-то роутер молчит… UART? Ага, в случае если лишь он не отключен. Был случай, в то время, когда было нужно монтировать SD-карту под другим компьютером и править параметры загрузчика… Как по мне, через чур сложно. Неоправданно сложно.Что делать? Где брать воодушевление для ответа всех этих неприятностей?Вот тут.Да, в ветхих сотовых телефонах.

Максимально простые совокупности меню для конфигурации, каковые мы применяли в куче и мобильниках вторых устройств задолго до появления Raspberry Pi, но почему-то не перенесли дальше, в том направлении, где их на данный момент не достаточно.Для чего возможно применять данный интерфейс?

  • Подключение к беспроводным и проводным сетям, получение информации о сетевых подключениях и их настройка
  • Подключение Bluetooth-устройств
  • Управление медиаплеерами и настройка звука
  • Сканирование/печать документов, съёмка фото с помощьюкамеры
  • Управление запущенными сервисами
  • Резервное копирование данных
  • GPS и навигация
  • Пентестинг

Где возможно применять данный интерфейс?

  • Raspberry Pi и другие SBC под Linux. Превосходная вещь, поскольку отпадает необходимость во втором компьютере для множества рутинных и иногда недоступных в противном случае задач. Подключиться к WiFi без UART и клавиатуры? Без неприятностей. Выполнить команду shutdown чтобы не попортить SD-карту? Также. Запустить какой-то скрипт? Да пожалуйста.
  • Домащние сервера и роутеры. Просматривать перечень DHCP-клиентов на таком достаточно комфортно. Отключить точку доступа WiFi либо же запросить новый адрес по DHCP? Для чего для этого лезть в web-интерфейс? Ещё, например, возможно легко блокировать на роутере сайты по перечню, в то время, когда садишься трудиться. А ещё возможно бекапить внешние носители по команде, сканировать документы, да куча всего — лишь сделай pyLCI-обёртку для собственных скриптов.
  • HTPC. Комфортно, дабы скоро поменять громкость музыки, промотать/перевести трек, приостановить воспроизведение, ну либо подключить Bluetooth-колонки.
  • Стационарные компьютеры. Особенно в случае если в качестве стационарного компьютера употребляется Raspberry Pi =) Кроме того в случае если нет, это в полной мере себе хорошее дополнение для трансформации настроек совокупности.
  • планшеты и Ноутбуки под Линукс… Не, ну никто не запрещает 😉

Сравнительно не так давно я решил сделать pyLCI более дешёвым для общего применения, и, как следствие моей работы, представляю вам версию 1.0. Что она может из коробки?

  • Подключаться к беспроводным сетям (больше информации тут)
  • Просматривать IP/MAC адреса интерфейсов
  • Поменять громкость
  • Переключать треки в консольном плеере (как пример, я использую MOCP).
  • Сканировать I2C шину на наличие девайсов
  • Выключать и перезагружать компьютер

До тех пор пока это достаточно мелкий перечень, но его весьма легко пополнять. pyLCI — это собственного рода фреймворк, что легко расширяем «приложениями» на Python для добавления в него той либо другой функции. Этим приложениям он предоставляет устройства ввода-вывода, каковые возможно применять для общения с пользователем, как и комплект главных элементов UI — наподобие элемента меню.

Так, при написании приложения возможно не концентрироваться на железе либо логике UI и всецело посвятить себя ответу главной цели =)Какое железо необходимо для начала применения?Нужен HD44780-совместимый дисплей. Типа для того чтобы:Постоянный житель всяческих starter kits, сам ценой около 2$ (eBay).Ещё необходимы кнопки. Типа таких:Либо кроме того в составе этого:Ещё 1-5$.

Кроме того применяя I2C-экспандеры (1$ вещь), реально уложиться в 7-10$/набор.В случае если правильнее, на данный момент поддерживаются по большей части GPIO-подключённые устройства (для Raspberry Pi) и I2C-GPIO экспандеры, как и USB HID устройства ввода. В замыслах:

  • Помощь комбинации Arduino + LCDbutton shield для несложного устройства ввода-вывода, подключающегося по USB. Делов-то — firmware для Arduino и соответствующий драйвер.
  • Создание беспроводного терминала с LCD и кнопками для управления без тянущихся везде проводов (ESP8266?).

Всем заинтересованным предлагаю ознакомиться с документацией, ну и инструкцией по установке. Интересует разработка собственного приложения? У меня имеется небольшой crash course и примеры в качестве кода уже написанных приложений. Из недочётов:

  1. Вся совокупность сейчас — это один процесс, включая и приложения. Вследствие этого и вероятным числом настроек, каковые совокупность должна иметь возможность поменять, среднестатистическому пользователю её легче запустить под рутом, чем настраивать все нужные пермишены. В случае если имеется необходимость, могу перечислить, какие конкретно groups/permissions необходимы для способов подключения и конкретных приложений IO.
  2. Я написал скрипты установки лишь для Debian/Raspbian. Буду признателен, в случае если кто-то сможет оказать помощь с добавлением помощи вторых дистрибутивов в install.sh, config.sh и update.sh.
  3. Кроме этого нет скрипта для sysvinit — сейчас всё заточено под systemd. В случае если у кого имеется подходящий проверенный скрипт для переделки, прошу поделиться =)
  4. В случае если давать pyLCI клавиатуру, оно захватывает её всю. Это безрадосно, поскольку было бы сильно применять одну клавиатуру и для X, и для pyLCI — применять стрелки нумпада (активны, в то время, когда отключён NumLock) для навигации и поставить рядом экранчик. Думаю не так долго осталось ждать добавить возможность «выбрасывать» обратно в совокупность неиспользуемые активным приложением коды клавиш, в случае если употребляется драйвер HID =)

Пожалуй, на этом на сегодня закончу. Меня весьма интересует ваше вывод о моей идее/реализации, как да и то, заинтересованы ли вы её применять для собственных Linux-устройств. Тут возможно оценить замыслы на ближайшее будущее совокупности, как и примерный перечень приложений, каковые будут добавлены в стандартную поставку в будущем.

Случайная статья:

06 Raspberry Pi GPIO Doorbell Home Automation Linux Tutorial


Похожие статьи:

Комментирование и размещение ссылок запрещено.

Обсуждение закрыто.