Controle seu Raspberry Pi remotamente usando o PiControl

O PiControl do PiCockpit é uma poderosa funcionalidade que lhe permite controlar o seu Raspberry Pi remotamente a partir de qualquer navegador da Web, bastando para isso clicar nos botões. Você vai ver o estado e a saída do comando. Novos comandos podem ser adicionados simplesmente editando um arquivo JSON no seu Raspberry Pi - vamos mostrar-lhe como fazê-lo, e dar-lhe algumas idéias do que você pode construir usando o PiControl!

Como é que isso se parece?

Por padrão, três comandos estão incluídos e imediatamente disponíveis para o seu Raspi: ( desligar, reiniciar, atualizar cliente)

Comandos básicos para controlar seu Pi remotamente usando uma interface web - a partir de qualquer navegador
Esta captura de tela do PiCockpit PiControl mostra como são os comandos

O que posso fazer com um Raspberry Pi e PiControl?

Aqui estão algumas coisas que você pode construir com ele. Estas ideias irão requerer alguma pesquisa, e possivelmente codificação e/ou conhecimento de hardware da sua parte; Em qualquer caso, o PiControl do PiCockpit irá ajudá-lo com a parte de interface web fácil de usar do seu projecto e poupar-lhe-á toneladas de tempo fazendo com que isto funcione através da Internet 🙂

  • tirar uma foto usando o módulo Raspberry Pi Camera e enviá-la por correio para você
  • inicie o seu servidor Raspberry Pi Minecraft, e pare-o também
  • Reproduzir um vídeo usando o omxplayer (você também pode configurar um loop infinito para o vídeo, e parar o loop do vídeo se você quiser mudar para outro vídeo)
  • criar um controle fácil para uma câmera de animação em stop-motion, usando o módulo de câmera Raspberry Pi
  • acorde um computador local na mesma rede do seu Raspberry Pi com a funcionalidade Wake on LAN
  • tocar um som (como uma partida para o Halloween, por exemplo)
  • abrir uma porta - por exemplo, uma porta de garagem, através da emissão de comandos de controlo adequados através da Onda Z, etc.
  • iniciar o serviço SSH no seu Raspberry Pi, e desligá-lo - uma abordagem "knock to open" para melhorar a segurança
  • modelo de controle de trens
  • ligar e desligar uma relais (requer dois botões, ou pode ser feito usando um botão "toggle")
  • controlar a TV (mudar de canal, mudar de volume, ...) usando um LED IR, por exemplo, para simular atividade enquanto você está viajando
  • Lance um foguete a partir da interface web

Iremos publicar instruções passo a passo para algumas destas ideias de projecto, por isso tem um guia fácil para começar com o PiControl e controlar remotamente o seu Raspberry Pi.

Como posso adicionar botões de comando remoto adicionais para o Raspberry Pi com PiControl?

Você pode definir com facilidade e segurança seus próprios comandos, simplesmente editando arquivos JSON no seu Raspberry Pi. Isto é feito por razões de segurança - eu poderia ter escrito PiCockpit de uma forma que lhe permitiria adicionar comandos a partir da interface web, mas se alguém soubesse a sua senha PiCockpit, poderia criar qualquer comando que desejasse. Portanto, por favor siga estas simples instruções para criar um novo arquivo JSON no seu Pi.

Nota: estas instruções são deliberadamente mantidas de uma forma que os usuários que não têm experiência com a linha de comando podem seguir. Se você sabe como usar a linha de comando, você pode achar mais fácil/rápido criar o arquivo e editá-lo com nano.

Primeiro, você precisará abrir o navegador de arquivos em modo super usuário (este passo mantém os arquivos de configuração do PiCockpit PiControl seguros de qualquer usuário ou aplicativo que deseje mexer neles). Clique em Raspberry Pi OS Menu, e aqui clique no comando "Run ...":

Raspberry Pi OS Menu, mostrando o comando run.
O Menu do SO Raspberry Pi. O comando Run está perto do fundo

Execute pcmanfm como raiz (sudo pcmanfm) digitando "sudo pcmanfm” (sem as aspas) no diálogo que se abre, e clicando em OK:

Executar o diálogo de comando no SO Raspberry Pi
O comando run, preparando-se para executar o pcmanfm como raiz

Uma nova janela se abre, mostrando-lhe o conteúdo do diretório /home/pi:

imagem de tela do pcmanfm com super direitos de usuário
pcmanfm, o gerenciador de arquivos executado como super usuário

Nota: você deve ver este ícone, logo abaixo do menu "Arquivo". Ele indica que você está usando o pcmanfm como usuário root, e portanto deve ser extra cuidadoso (já que root pode editar / apagar / mover qualquer arquivo! até mesmo arquivos que são críticos para uma operação normal do sistema).

Indicador do modo Raiz

Não se preocupe, só vamos tocar nos arquivos que você precisa aqui 🙂

Abra o seguinte diretório no seu Raspberry Pi:

/etc/picockpit-cliente/apps/com.picockpit/picontrol/módulos

Mostrando o diretório de configuração do PiCockpit's PiControl. Nota, se você tiver uma nova instalação do PiCockpit, você verá apenas o core.json. Os outros módulos foram criados por mim para fins de teste e demonstração (experimentos com controle remoto).

Dica: você também pode copiar e colar o caminho que eu dei acima, e pressionar a tecla enter para navegar até o diretório.

As dicas úteis de Raspi Berry Raspberry Pi

clique com o botão direito do mouse na área vazia ao lado dos arquivos existentes, e selecione "Novo arquivo...".

Criando um novo arquivo com o sistema operacional Raspbian
Raspberry Pi OS menu para um clique com o botão direito do mouse para criar um novo arquivo

Chame o novo arquivo ssh-server.json:

Um diálogo pede o nome para o novo arquivo.
criando um novo arquivo como usuário root com o pcmanfm
ssh-server.json é agora criado nesta pasta.

clique com o botão direito do mouse no novo arquivo, para abrir o menu de contexto. Escolha "Geany":

Menu de contexto mostrando Geany o editor do programador no Raspberry Pi OS
Geany é um editor com o qual você pode editar o arquivo
Captura de tela do editor de programação Geany
Geany mostra o arquivo ssh-server.json - ainda nada nele

Agora você pode ver o novo arquivo que acabamos de criar. Está vazio até agora.

Vamos criar dois novos comandos, um para desligar o serviço do servidor SSH e outro para o iniciar. Digite o seguinte no campo de texto que Geany lhe mostra:

{
  "nome": "Comandos SSH",
  "ícone": "mdi-ssh",
  "Punho": "ssh",
  "descrição": "Controlar o servidor SSH",
  "Comandos": {
    "ssh-stop": {
      "nome": "Servidor SSH desligado",
      "ícone": "mdi-server-minus",
      "descrição": "Desliga o serviço SSH",
      "confirmar": é verdade,
      "Utilizador": "raiz",
      "comando": ["serviço", "ssh", "stop"]
    },
    "ssh-start": {
      "nome": "Servidor SSH ligado",
      "ícone": "mdi-server-plus",
      "descrição": "Inicia o serviço SSH",
      "Utilizador": "raiz",
      "comando": ["serviço", "ssh", "iniciar"]
    }
  }
}
Adicionando o texto em Geany. Preste atenção aos parênteses e à estrutura do documento e as palavras têm de ser soletradas correctamente para que funcione.

Neste momento, devemos salvar o arquivo. Você pode fazer isso no menu de arquivos do Geany, por exemplo, selecionando Salvar. (Ou use Ctrl + S):

Menu de arquivos do Geany

Neste ponto, nossos novos comandos ainda não apareceram na interface web. Para isso, precisamos reiniciar o picockpit-cliente. Clique no comando "Run ..." no menu do Raspberry Pi OS, e digite "sudo service picockpit reinício do cliente" para a janela antes de clicar em OK:

reiniciar o serviço picockpit-cliente usando o diálogo de execução
reiniciar um serviço a partir do diálogo Executar

Agora dê uma olhada na sua interface web do PiControl:

Interface web PiControl para captura de tela de controle remoto
Apareceu um novo botão para saltar rapidamente para os novos comandos SSH
Os novos comandos (botões) que adicionamos à interface web para executar comandos remotos no Raspi!

Se você digitou tudo corretamente, os novos comandos aparecerão. Se você cometeu um erro no seu arquivo JSON (por exemplo, esqueceu um parêntese encaracolado), o PiCockpit simplesmente ignorará o arquivo "quebrado".

Agora você pode tentar os comandos. Se clicar no botão SSH SERVER OFF, ser-lhe-á perguntado se quer realmente executar o comando. Clique em ssh server off aqui também, para realmente executar o comando (ou clique em cancelar se você não quiser afinal de contas).

Uma salvaguarda para evitar que você execute comandos perigosos, clicando acidentalmente neles

PiCockpit agora vai executar o comando, você verá informações de progresso - e depois de terminar de executar, você verá o seguinte indicador de sucesso:

PiControl tem executado com sucesso "service ssh stop" no seu Pi.

Se você tentar se conectar ao seu Pi agora usando SSH, a conexão será recusada:

PuTTYNG mostrando um erro fatal.
Erro de rede: conexão recusada

Inicie o backup do servidor SSH clicando em "SSH SERVER ON". Agora uma conexão será possível novamente.

Parabéns! Você acabou de criar o seu próprio conjunto de comandos que você pode executar a partir da interface web.

Fique na página enquanto executa comandos - o estado será apagado no momento se você navegar para longe. Para determinar se o servidor SSH está rodando, você poderia construir um teste PiDoctor - PiControl é simplesmente para executar ações remotas no seu Pi.

As dicas úteis de Raspi Berry Raspberry Pi (e PiCockpit)

Lembre-se de reiniciar o picockpit-cliente quando adicionar novos comandos, ou atualizar comandos. Você também pode remover comandos que você não quer ter, por exemplo, se você quiser remover a capacidade de desligar o seu Raspberry Pi remotamente.

Explicação da sintaxe do comando remoto

O arquivo configura um novo módulo para o PiControl. Ele tem uma sintaxe .JSON, por favor certifique-se de que você abra e termine com o aparelho curly braces de uma forma correta, como apresentado no meu exemplo.

Há uma cabeça, que configura o próprio módulo, e os comandos (na parte "comandos"). Eles compartilham algumas entradas comuns:

nome

As entradas "nome" são nomes legíveis por humanos que lhe são mostrados na interface web

ícone

As entradas "ícone" são opcionais para decorar os seus botões e módulo. Estes são nomes de ícones de desenho de material, por exemplo "mdi-ssh".

Você pode verificar um lista completa de ícones de design de materiais aqui. Basta copiar o nome do ícone (incluindo o mdi- no início).

As dicas úteis de Raspi Berry Raspberry Pi (e PiCockpit)

descrição

As entradas de "descrição" são opcionais e permitem adicionar um pouco mais de informação para o comando ou módulo.

manípulo

A entrada "handle" é explícita para o módulo, e tem de ser única entre os módulos. No caso dos comandos, o handle está implícito. “ssh-stop" e "ssh-start"são as duas pegas que usei para os comandos no meu exemplo.

Você pode escolher qualquer coisa como cabo, desde que não inclua os caracteres "/", "+", "$", "*". Eu recomendo que se mantenha os caracteres ASCII básicos do downcase, e que use o "-". O manípulo é necessário.

Seu arquivo pode, por sinal, ter um nome de arquivo diferente do handle - eu o encorajo a usar pelo menos nomes relacionados para o nome do arquivo e o handle, para que você possa identificar facilmente o arquivo .JSON do módulo no seu disco rígido.

As dicas úteis de Raspi Berry Raspberry Pi (e PiCockpit)

Os comandos vão para o "comandos"bloco, e têm possibilidades de configuração adicionais:

confirmar

Se "confirmar" está presente, e definido para true, a interface web do PiControl mostrará um diálogo de confirmação antes de realmente executar o comando. Isto é útil para garantir que comandos "perigosos" não sejam executados por um toque ou clique acidental.

usuário

Se "usuário" está presente, o comando será executado como este usuário em particular (como raiz no nosso exemplo, para garantir que temos privilégios suficientes).

PiControl irá executar comandos como usuário "pi"por omissão. Você também pode defini-lo para outros usuários com menos privilégios do que "pi“.

Se você tentar executar comandos GPIO, ou reproduzir vídeos usando o omxplayer, você pode ter que dar ao seu novo usuário capacidades adicionais. O usuário pi tem estes privilégios requeridos por defeito. Normalmente estes privilégios são definidos adicionando o usuário a um grupo especial.

As dicas úteis de Raspi Berry Raspberry Pi (e PiCockpit)

comando

Este é o verdadeiro comando que deve ser executado no seu Raspberry Pi. Note que você tem que substituir os espaços no comando comparado com o que você executaria na linha de comando. Por exemplo,

início do serviço ssh

deve ser escrito como:

["serviço", "ssh", "começar"]

O PiControl também suporta encadear uma sequência de comandos (por exemplo, o habitual apt-get update, apt-get upgrade sequence). Confira core.json para um exemplo de como isso está sendo feito.

As dicas úteis de Raspi Berry Raspberry Pi (e PiCockpit)

Conclusão: PiControl para as suas necessidades de controle remoto Raspberry Pi

Usando PiCockpit e PiControl, é realmente fácil adicionar qualquer comando remoto que você queira executar no seu Raspi, e ser capaz de controlar o seu Pi a partir de uma interface web. Para que isto funcione o Raspberry Pi só precisa de uma ligação à Internet - não precisa de estar na mesma rede.

O que você gostaria de construir usando PiCockpit e PiControl? Comente abaixo, e eu vou tentar ajudá-lo com o seu projeto 🙂

Captura de tela do PiControl mostrando botões para controlar remotamente o omxplayer e controlar o webbrowser Chrome usando a interface web
Esta captura de tela do PiControl mostra um módulo personalizado que eu configurei: controlar o Chrome (Chromium), executar vídeos em loop usando o omxplayer, mostrar vídeos do YouTube no Pi

Com grande poder vem grande responsabilidade - tenha cuidado com quem você dá acesso à sua interface PiCockpit, mantenha sua senha e chaves API seguras. Certifique-se também de "proteger" comandos perigosos, como discutido acima, para que eles não sejam executados clicando neles erroneamente.

As dicas úteis de Raspi Berry Raspberry Pi (e PiCockpit)

10 comentários

  1. Max em Maio 12, 2021 às 5:30 pm

    Olá!
    Quero executar o seguinte comando com um botão picontrol: cd /home/pi/Sensoren ; python3 SCRIPT.py
    Eu fiz como descrito e posso pressionar o botão mas o comando não é executado e também o processo não pode ser parado.
    Algum conselho?
    Obrigado

    • raspi berry em Julho 1, 2021 às 5:22 pm

      lembre-se que o picontrol não é uma shell - todos os comandos são executados independentemente. você tem que usar caminhos absolutos (cd - change directory - é inútil no contexto do picontrol).

  2. Alex em Agosto 16, 2021 às 6:34 pm

    Começar um roteiro de pitão funciona bem, por exemplo:
    "comando": ["python3", "/home/pi/do_something.pyc"]
    Mas eu tenho problemas se o script iniciar mais tarde um aplicativo com uma GUI como o Chromium ou se o Chromium for iniciado diretamente:
    "comando": resulta em "Incapaz de abrir o X display". “.

    Como posso iniciar scripts ou aplicativos que requerem um display X?

    • PiCaptain em Agosto 19, 2021 às 5:08 pm

      Eu escrevi um pouco mais sobre isto aqui:
      https://pi3g.com/2020/05/19/chromium-exit-code-5/

      basicamente você precisa dizer ao aplicativo qual X exibir para usar.
      No caso do Crómio, é feito com uma bandeira

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

      nota, -kiosk inicia o navegador em modo quiosque. Atirando isso como uma informação extra.
      nota II: estes são dois traços para os parâmetros - o WordPress altera-os para um único traço longo, creio eu.

      Para outras aplicações, você precisará verificar. Frequentemente, isto é feito através da definição de uma variável de ambiente.
      Possivelmente para o PiCockpit você precisaria escrever um script bash que definisse a variável e depois iniciasse a aplicação.
      E depois, corre o guião do bash.

      Se você tiver algum sucesso com isso, por favor, compartilhe conosco.

      Max

      • PiCaptain em Agosto 19, 2021 às 5:09 pm

        Como imagem

    • PiCaptain em Agosto 19, 2021 às 5:11 pm

      Veja também estes dois links para mais comutadores de linha de comando para o Chromium:

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

  3. Sri em Outubro 13, 2021 às 1:23 pm

    Olá, basta configurar um comando usando o seu software e infra-estrutura e é fantástico! Muito obrigado por este software simples e fácil de usar. Eu queria um pouco de conselho se você estiver livre. Basicamente, tenho a minha configuração Pi para acordar o meu pc do sono, e o vosso software permitindo uma interface web simples para acordar o pc com um comando etherwake está a funcionar, no entanto gostaria de uma forma mais rápida de executar este único comando imediatamente. Você acha que há alguma maneira de tornar isso possível? Atualmente para apenas acordar o meu pc, eu tenho que fazer login e depois ir ao meu comando e depois escolher o botão na caixa pop-up, mas se houvesse uma api ou um atalho para basicamente executar o comando com um clique, isso seria útil. De qualquer forma, muito obrigado por isto. Muito bom 🙂

    • PiCaptain em Outubro 23, 2021 às 1:41 pm

      Obrigado pela sugestão da funcionalidade, eu adicionei-a. Estamos a planear fazer um velório na aplicação lan algum tempo, talvez seja um pouco mais conveniente.

  4. Hager em Março 31, 2022 às 12:26 pm

    Olá,
    wie kann ich zum Beispiel Abfragen wie (Quer continuar? [S/n]) über das Script mit "Y" bestätigen?

    Vielen Dank!

    • Hanno em Abril 20, 2022 às 7:30 am

      Olá, Herr Hager,

      das ist eine sehr gute Frage! Einige Kommandozeilen Programme wie zum etwa apt-get haben eine bereits integrierte -assume-yes Option, die es ermöglicht sie in einem nicht-interaktivem Modus zu nutzen. Das wird etwa gerne in Skripten ausgenutzt, die ohne Bestätigungen per Hand laufen sollen. Alternativ gibt es das klassische Unix 'simProgramm mit Sie das selbe Ergebnis erzielen können. Beispielsweise mit:
      sim | sudo apt upgrade
      Abhängig von Ihrem konkretem Anwendungsfall sollte eigentlich eine dieser zwei Möglichkeiten eine gute Lösung darstellen. Ansonsten können Sie uns uns gerne noch einmal schreiben!

Deixe um comentário