PiControl

Изображение заголовка PiControl

PiControl - это мощное приложение, позволяющее удаленно управлять Raspberry Pi через любой веб-браузер.

На этой странице представлен обзор приложения PiControl.

PiControl

Вы заметите, что по умолчанию три команды включены и сразу доступны для вашего Raspberry Pi. А именно, с помощью PiControl вы можете выключить Raspberry Pi, перезагрузить Raspberry Pi и обновить PiCockpit Client.

Настройка PiControl

Что делает PiControl особенно полезным, так это то, что его можно настраивать.

Вы можете легко и безопасно определять свои собственные команды, редактируя JSON-файлы на вашем Raspberry Pi.

Поэтому здесь приведены инструкции для пользователей, не имеющих опыта работы с командной строкой.

Если вы умеете работать с командной строкой, вам будет проще и быстрее просто создать файл и отредактировать его с помощью Nano или Vim.

Если нет, то мы пройдем через все шаги здесь.

Сначала нужно открыть файловый браузер в режиме суперпользователя (этот шаг обеспечивает безопасность конфигурационных файлов PiCockpit PiControl от любого пользователя или приложения, желающего их подделать).

Щелкните на меню Raspberry Pi OS, а затем выберите команду "Выполнить...":

Появится окно с текстом "Введите команду, которую нужно выполнить:". Введите sudo pcmanfm и нажмите OK.

Откроется новое окно, в котором будет показано содержимое каталога /home/:

Символ предупреждения в левом верхнем углу экрана указывает на то, что вы находитесь в режиме Суперпользователя. В правом верхнем углу вы хотите перейти в следующую директорию:

/etc/picockpit-client/apps/com.picockpit/picontrol/modules

Щелкните правой кнопкой мыши в пустой области рядом с существующими файлами и выберите "Новый файл...".

Назовите новый файл ssh-server.json:

Теперь необходимо щелкнуть правой кнопкой мыши на новом файле, чтобы вызвать контекстное меню. Выберите пункт "Geany":

Теперь вы можете увидеть новый файл, который мы только что создали. Однако в данный момент он пуст.

Давайте создадим две новые команды: одну для выключения службы SSH-сервера, а другую для ее запуска. Введите в текстовое поле в Geany следующее:

{
  "name": "SSH commands",
  "icon": "mdi-ssh",
  "handle": "ssh",
  "description": "Control the SSH server",
  "commands": {
    "ssh-stop": {
      "name": "SSH Server off",
      "icon": "mdi-server-minus",
      "description": "Shuts the SSH service down",
      "confirm": true,
      "user": "root",
      "command": ["service", "ssh", "stop"]
    },
    "ssh-start": {
      "name": "SSH Server on",
      "icon": "mdi-server-plus",
      "description": "Starts the SSH service",
      "user": "root",
      "command": ["service", "ssh", "start"]
    }
  }
}

На этом этапе мы должны сохранить файл. Это можно сделать из меню файла Geany, например, выбрав Save или нажав Ctrl + S:

На данный момент наши новые команды еще не появились в веб-интерфейсе.

Для этого необходимо перезапустить PiCockpit Client.

Еще раз нажмите на команду "Выполнить..." в меню Raspberry Pi OS и введите sudo service picockpit-client restart в окно, прежде чем нажать кнопку OK:

Теперь посмотрите на веб-интерфейс PiControl:

Если вы все ввели правильно, появятся новые команды SSH-сервера. I

Если вы допустили ошибку в JSON-файле (например, забыли фигурную скобку), PiCockpit просто проигнорирует "сломанный" файл.

Теперь вы можете попробовать выполнить команды.

Поздравляем! Вы только что создали свой собственный набор команд, которые можно запускать из веб-интерфейса.

Оставайтесь на странице во время выполнения команд. Статус будет очищен, если вы перейдете на другую страницу. Чтобы определить, запущен ли SSH-сервер, вы можете создать тест на нашем приложении PiDoctor.

PiControl предназначен исключительно для выполнения удаленных действий на вашем Raspberry Pi.

Не забывайте перезапускать PiCockpit Client при добавлении новых или обновлении команд.

Вы также можете удалить команды, которые вам не нужны. Например, если вы хотите удалить возможность удаленного выключения Raspberry Pi, вы можете отредактировать файл core.json.

Синтаксис .JSON в PiControl

Этот файл конфигурирует новый модуль для PiControl.

Как уже упоминалось, он имеет синтаксис .JSON. Поэтому вам нужно убедиться, что вы открываете и завершаете фигурные скобки правильным образом, как показано в примере выше.

Есть голова, которая настраивает сам модуль, и команды (в разделе "commands"). У них есть несколько общих записей:

имя

Записи "имя" - это человекочитаемые имена, которые отображаются в веб-интерфейсе.

икона

Записи "icon" являются необязательными для украшения ваших кнопок и модуля. Это имена значков Material Design, например, "mdi-ssh".

Вы можете проверить полный список иконок Material Design здесь. Просто скопируйте имя значка (включая mdi- в начале).

описание

Записи "description" являются необязательными и позволяют добавить немного больше информации о команде или модуле.

ручка

Запись "handle" является явной для модуля и должна быть уникальной среди модулей. В случае с командами handle является неявным. "ssh-stop" и "ssh-start" - это две ручки, которые я использовал для команд в моем примере.

Вы можете выбрать что угодно в качестве ручки, если она не включает символы "/", "+", "$", "*". Я рекомендую придерживаться основных символов ASCII в нижнем регистре и использовать "-". Ручка требуется.

Кстати, ваш файл может иметь имя, отличное от имени дескриптора - я рекомендую вам использовать как минимум родственные имена для имени файла и дескриптора, чтобы вы могли легко идентифицировать файл модуля .JSON на вашем жестком диске.

Команды поступают в "команды" блок, и имеют дополнительные возможности конфигурации:

подтвердить

Если "подтвердить" присутствует и имеет значение true, то перед выполнением команды в веб-интерфейсе PiControl будет отображаться диалог подтверждения. Это полезно для того, чтобы исключить выполнение "опасных" команд при случайном нажатии или щелчке.

пользователь

Если "пользователь" присутствует, то команда будет выполняться от имени этого конкретного пользователя (как корень в нашем примере, чтобы убедиться, что у нас достаточно привилегий).

PiControl будет выполнять команды от имени пользователя "pi" по умолчанию. Вы также можете установить его для других пользователей с меньшими привилегиями, чем "pi“.

Если вы пытаетесь выполнять команды GPIO или воспроизводить видео с помощью omxplayer, вам, возможно, придется предоставить новому пользователю дополнительные возможности. Пользователь pi имеет эти необходимые привилегии по умолчанию. Обычно эти привилегии устанавливаются путем добавления пользователя в специальную группу.

команда

Это фактическая команда, которую необходимо выполнить на Raspberry Pi. Обратите внимание, что пробелы в команде нужно заменить на те, которые вы бы запустили в командной строке. Например,

запуск службы ssh

следует записать как:

["service", "ssh", "start"].

PiControl также поддерживает цепочку последовательности команд (например, обычную последовательность apt-get update, apt-get upgrade). Посмотрите в core.json пример того, как это делается.

Заключение

Если у вас возникнут вопросы или проблемы, не стесняйтесь обращаться к нам, и мы поможем вам запустить PiControl!

22 комментариев

  1. Max Май 12, 2021 в 5:30 пп

    Здравствуйте!
    Я хочу запустить следующую команду с помощью кнопки picontrol: cd /home/pi/Sensoren ; python3 SCRIPT.py
    Я сделал все, как описано, и я могу нажать кнопку, но команда не выполняется, а также процесс не может быть остановлен.
    Посоветуйте что-нибудь?
    Спасибо

    • raspi berry Июль 1, 2021 в 5:22 пп

      помните, что picontrol не является оболочкой - все команды выполняются независимо. вы должны использовать абсолютные пути (cd - change directory - бесполезен в контексте picontrol).

  2. Alex Август 16, 2021 в 6:34 пп

    Запуск сценария python работает нормально, например:
    "command": ["python3", "/home/pi/do_something.pyc"].
    Но у меня возникают проблемы, если скрипт позже запускает приложение с графическим интерфейсом, например Chromium, или если Chromium запускается напрямую:
    "command": ["chromium-browser"] приводит к "Unable to open X display. ".

    Как запустить сценарии или приложения, для которых требуется дисплей X?

    • PiCaptain Август 19, 2021 в 5:08 пп

      Подробнее об этом я писал здесь:
      https://pi3g.com/2020/05/19/chromium-exit-code-5/

      В основном, вам нужно указать приложению, какой дисплей X использовать.
      В случае с Chromium это делается с помощью флага

      chromium-browser -display=:0 -kiosk https://picockpit.com

      обратите внимание, -kiosk запускает браузер в режиме киоска. Просто добавляю это в качестве дополнительной информации.
      Примечание II: это два тире для параметров - WordPress меняет их на одно длинное тире, как я полагаю.

      Для других приложений вам потребуется проверка. Часто это делается путем установки переменной окружения.
      Возможно, для PiCockpit вам потребуется написать сценарий bash, который устанавливает переменную, а затем запускает приложение.
      Затем запустите сценарий bash.

      Если у вас есть какие-либо успехи в этом, пожалуйста, поделитесь с нами.

      Макс

    • PiCaptain Август 19, 2021 в 5:11 пп

      Также смотрите эти две ссылки для получения дополнительной информации о переключателях командной строки для Chromium:

      http://peter.sh/experiments/chromium-command-line-switches/
      https://www.chromium.org/developers/how-tos/run-chromium-with-flags

  3. Sri Октябрь 13, 2021 в 1:23 пп

    Привет, только что создал команду, используя ваше программное обеспечение и инфраструктуру, и это потрясающе! Большое спасибо за это простое и легкое в использовании программное обеспечение. Я хотел бы получить небольшой совет, если вы свободны. В принципе, у меня есть Pi, настроенный на пробуждение моего ПК от сна, и ваше программное обеспечение, позволяющее через простой веб-интерфейс пробудить ПК с помощью команды etherwake, работает, однако я хотел бы получить более быстрый способ немедленного выполнения этой одной команды. Как вы думаете, есть ли способ сделать это возможным? В настоящее время, чтобы просто разбудить компьютер, мне нужно войти в систему, затем перейти к команде и выбрать кнопку во всплывающем окне, но если бы существовал api или ярлык для выполнения команды в один клик, это было бы полезно. В любом случае, спасибо вам большое за это. Очень здорово 🙂

    • PiCaptain Октябрь 23, 2021 в 1:41 пп

      Спасибо за предложение о функции, я добавил ее. Мы планируем когда-нибудь сделать приложение wake on lan, возможно, это будет немного удобнее.

  4. Hager Март 31, 2022 в 12:26 пп

    Привет,
    как можно сделать так, чтобы при нажатии на "Y" сценарий (Вы хотите продолжить? [Y/n]) он становился лучше?

    Спасибо!

    • Hanno Апрель 20, 2022 в 7:30 дп

      Здравствуйте, герр Хагер,

      это очень интересный вопрос! Einige Kommandozeilen Programme wie zum etwa apt-get haben eine bereits integrierte -assume-yes Опция, которая позволяет использовать ее в ничем не задействованном модусе. Das wird etwa gerne in Skripten ausgenutzt, die ohne Bestätigungen per Hand laufen sollen. Альтернативой может служить классический Unix 'да' Programm mit Sie das selbe Ergebnis erzielen können. Beispielsweise mit:
      yes | sudo apt upgrade
      В зависимости от моего конкретного случая использования вы можете предложить вам один из этих двух способов решения проблемы. Ansonsten können Sie uns gerne noch einmal schreiben!

  5. Jaka Март 30, 2023 в 7:32 дп

    Здравствуйте, можете ли вы использовать терминал RPi из picockpit?

    • raspi berry Апрель 19, 2023 в 7:48 пп

      пока нет, планируется в будущем релизе. (по состоянию на 19.4.2023)

  6. DGDodo Апрель 25, 2023 в 10:09 пп

    Не все иконки с указанного сайта доступны/работают.
    Как использовать более новые иконки, чем в версии 4.9.95, например, 'mdi-lamps-outline'?

    • PiCaptain Май 10, 2023 в 12:33 пп

      мы находимся в процессе обновления кода фронтенда. Я передам ваш комментарий нашему разработчику, возможно, они смогут рассмотреть этот вопрос до следующего обновления, чтобы привести иконки к самой последней версии.

    • PiCaptain Май 19, 2023 в 11:54 дп

      Здравствуйте, мы обновили фронтенд, а это значит, что теперь вы можете использовать все иконки вплоть до самой новой версии Material Design Icons. Мы также будем обновлять версию шрифта в будущем.

  7. [...] НАЖМИТЕ ЗДЕСЬ: Узнайте, как можно задать собственные команды в PiControl. [...]

  8. Expanding PiCockpit to 64 Bit Pi OS Август 28, 2023 в 9:32 дп

    [...] Все административные инструменты, помогающие управлять Pi, работают. К ним относятся приложения GPIO, PiControl, PiDoctor и PiStats. Может быть, настроить новую 64-разрядную систему с помощью простого способа переключения SSH-сервера? Или запустить и остановить медиацентр, который вы установили? Отправить сообщение WoL? Ознакомиться с возможностями нашего программного обеспечения можно здесь. [...]

  9. chris l Сентябрь 4, 2023 в 11:11 дп

    apt-get -just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "ПАКЕТ: $1 УСТАНОВЛЕН: $2 ДОСТУПЕН: $3\n"}'

    Приведенная выше команда прекрасно работает с SSH, но PiControl испытывает проблемы и сообщает об этом:
    (100) E: Опция командной строки 'n' [из -ne] не понимается в сочетании с другими опциями.

    Я считаю, что я правильно экранировал свой JSON, поскольку отображаемая команда в PiControl - это та же самая команда, которую я экранировал и разделил пробелами на отдельные строки.

    JSON:
    {
    "name": "Команды обновления CISO",
    "icon": "mdi-update",
    "handle": "CISO",
    "описание": "CISO установить все обновления",
    "commands": {
    "ciso-updates": {
    "name": "CISO Updates",
    "icon": "mdi-server-minus",
    "description": "Обновляет список всех пакетов в репозитории и обновляет все установленные пакеты",
    "подтвердить": true,
    "user": "root",
    "command": [
    [
    "apt-get",
    "обновление"
    ],
    [
    "apt-get",
    "обновление",
    "-y"
    ],
    [
    "apt-get",
    "-just-print",
    "обновление",
    "2>&1",
    “|”,
    "perl",
    "-ne",
    "'if",
    “(/Inst\\s([\\w,\\-,\\d,\\.,~,:,\\+]+)\\s\\[([\\w,\\-,\\d,\\.,~,:,\\+]+)\\]\\s\\(([\\w,\\-,\\d,\\.,~,:,\\+]+)\\)?”,
    "/i)",
    "{print},
    "\"PACKAGE:",
    “$1”,
    "INSTALLED:",
    “$2”,
    "AVAILABLE:",
    "$3\\n\"}''
    ]
    ]
    }
    }
    }

  10. Bruchpilot Октябрь 8, 2023 в 12:28 пп

    Привет,
    Я пробую сделать первые шаги с помощью picockpit. но мне кажется, что это не тот случай, когда можно обойтись без Fernsteuerung zu öffnen. z.B. chromium-browser, dillo, geany
    При использовании Eingabe на терминале можно напрямую подключить Anwendungen

    "geany": {
    "name": "EditorG",
    "icon": "mdi-application-edit-outline",
    "description": "Текстовый редактор",
    "подтвердить": true,
    "notermination": true,
    "user": "root",
    "command": ["geany"].
    },

    • Adam Январь 25, 2024 в 4:28 пп

      Hallo, der folgende Befehl muss hinzugefügt werden: "-display=:0"

      Это так здорово:
      {
      "name": "Geany Opener",
      "icon": "mdi-application-edit-outline",
      "handle": "open-geany",
      "Описание": "Запуск Geany",
      "commands": {
      "open-geany": {
      "name": "Open Geany",
      "icon": "mdi-application-edit-outline",
      "Описание": "Launches Geany",
      "подтвердить": true,
      "user": "“,
      "command": ["geany", "-display=:0"].
      }
      }
      }

  11. 10 Uses for a Raspberry Pi in Manufacturing | PiCockpit Январь 24, 2024 в 4:20 пп

    [...] Raspberry Pi можно интегрировать в системы управления запасами, чтобы контролировать уровень запасов, отслеживать активы и автоматизировать процессы повторных заказов. Если вы хотите найти способы разработки индивидуальной системы управления запасами, вы можете разработать скрипты, которые затем можно запустить с помощью нашего приложения PiControl App через PiCockpit. [...]

  12. [...] делает создание сценариев для вашего Raspberry Pi интуитивно понятным и простым в управлении. С помощью нашего приложения PiControl вы можете легко написать сценарий и создать кнопку для его запуска из любой точки [...].

Комментировать