Raspberry Pi / Linux Xubuntu 13.10 – Como instalar um script auto executável para falar ao ligar, reiniciar e desligar o sistema

Adicionar um script para ser ‘carregado’, ou melhor para ser executado na inicialização, pode ser um pouco complicado de fazer, uma vez que geralmente é necessário ficar digitando comandos no console.

Nota: Este processo foi testado em Raspbian wheezy (2014-01-07-wheezy-raspbian) em RPI mod B

E que tal um instalador de script que permita instalar ou desinstalar automaticamente?

Sim, isso é possível e de várias formas, e ainda mais graças a: um script!

Eu explico: o instalador que estou disponibilizando aqui (apenas para uso não comercial), nada mais é do que um script que é executado em linha de comando, no console. É para console porque se for gráfico não dá para rodar pelo ssh com o Putty.

O script está escrito de forma a instalar uma mensagem de inicialização e outra de encerramento do sistema ou quando for reiniciado.

Requisitos:

– ter instalado o espeak:

https://robsoneletronico.wordpress.com/2014/03/21/tts-texto-para-voz-em-linux-raspberry-pi-android-e-windows-em-portugues-br/

– estar com o audio funcionando, se não não dá para ouvir as mensagens. Para ajustar o volume em linha de comando pode rodar:

alsamixer

– para ativar o vnc automaticamente, precisa do tightvncserver instalado e configurado (só para definir senha)

https://robsoneletronico.wordpress.com/2014/03/25/raspberry-pi-vnc-server-com-tightvncserver/

Preparação:

Eu tentei colocar o código do script diretamente aqui, mas devido a problemas de codificação UTF-8, não deu certo na hora de copiar e colar no editor de texto, tentei criar o arquivo no Windows mas não rodou no RPI (Linux) apareceram erros de codificação.

Então segue em arquivo, remova a extensão .doc e deixe somente ‘install_auto_execute.zip’ para poder descompactar:

install_auto_execute.zip

Note que este script acima também poderá configurar uma secção de vnc automaticamente ao iniciar, assim caso queira é só descomentar os comandos, para facilitar a procura estão listados abaixo (para descomentar basta remover o símbolo: #):

# echo ‘ espeak -ven+$voice -s 180 -p 99 “Starting vnc at port 5 9 0 1 for user” >> /dev/null 2>&1’ >> RPI-auto-execute.sh
# echo ‘ vncserver :1 -geometry 1024×780 -depth 24’ >> RPI-auto-execute.sh
# echo ‘ espeak -ven+$voice -s 180 -p 99 “Starting vnc at port 5 9 0 5 for root” >> /dev/null 2>&1’ >> RPI-auto-execute.sh
# echo ‘ sudo vncserver :5 -geometry 1024×780 -depth 24’ >> RPI-auto-execute.sh
# echo ‘ espeak -ven+$voice -s 180 -p 99 “Use the Real VNC programm to connect” >> /dev/null 2>&1’ >> RPI-auto-execute.sh

Como pode observar acima, o vnc será configurado para a porta 5901 para usuário padrão (por exemplo usuário: ‘pi’) e para ter acesso ao sistema como root, o vnc é configurado na porta 5905, note que a diferença é o comando ‘sudo’.

Para alterar a resolução troque 1024×780 po outra, por exemplo 1280×720 (wide screen)

Para saber como instalar, configurar o vnc (servidor) acesse:

https://robsoneletronico.wordpress.com/2014/03/25/raspberry-pi-vnc-server-com-tightvncserver/

Para saber como usar o vnc (cliente) acesse:

https://robsoneletronico.wordpress.com/2014/03/21/raspberry-pi-vnc/

Depois de criar o arquivo ‘ install_auto_execute.sh’, tem que dar permissão de execução, em linha de comando: entre na pasta onde o arquivo está e execute o chmod:

 sudo chmod a+x install_auto_execute.sh

Para entrar nas pastas use o comando ‘cd’:

cd nome_da_pasta

cd /home

cd ..

Para listar o conteudo da pasta use ‘ls’ (LS em minúsculo):

ls

 

Instalação:

Depois de criar o arquivo e dar permissão de execução, pode executar ele diretamente na linha de comando, ou seja no console, basta adicionar o código ‘./’ antes do nome do arquivo, mas para funcionar tem que estar na pasta do arquivo.

./install_auto_execute.sh

As messagens serão exibidas na tela e serão faladas,

para instalar pressione a tecla ‘I’, para desinstalar pressione a tecla ‘U’ e pressione ‘Enter’, mas qualquer outra tecla cancelará a operação, ou somente a tecla ‘enter’.

 

Depois de instalar, observe a tela, e em caso de erro na instalação, deve aparecer mensagem:

[Fail]

Se isso acontecer é preciso verificar a versão do sistema do RPI, lembrando que foi testado na versão indicada no início deste post:

Raspbian wheezy (2014-01-07-wheezy-raspbian) em RPI mod B

Para resolver erros pode ser necessário adaptar o script.

 

O que o script faz:

– cria um arquivo chamado RPI-auto-execute.sh na pasta /etc/init.d

– define a permissão de execução do arquivo acima, se não for do tipo executável o sistema não consegue executar ele.

– atualiza as configurações, isso vai adicionar os links simbólicos nos níveis de execução.

– testa e informa se deu certo ou não.

Para saber em que nível será executado, veja as linhas:

echo ‘# Default-Start: 2 3 4 5’ >> RPI-auto-execute.sh
echo ‘# Default-Stop: 0 1 6’ >> RPI-auto-execute.sh

onde:

Default-Start: 2 3 4 5

define que será executado nos níveis 2, 3, 4, 5 como start, ou seja vai iniciar o script.

Já para encerrar, ou matar (kill):

Default-Stop: 0 1 6

de forma similar, define que será executado nos níveis 0, 1, 6 como stop, ou seja vai matar o script.

Os níveis de execução (run level) são descritos como segue:

0 Desliga o sistema.
1,s, single É utilizado para manutenção do sistema, é chamado de monousuário e somente o essencial é executado.
2 Modo multiusuário sem suporte de rede.
3 Nível de execução padrão, multiusuário com todos os serviços habilitados e login do sistema em modo texto.
4 Indefinido ou não utilizado.
5 Nível de execução padrão, multiusuário com todos os serviços habilitados e login do sistema em modo gráfico.
6 Executa o reboot do sistema.

Fonte: http://www.vivaolinux.com.br/artigo/Sistema-de-boot-niveis-de-execucao-e-shutdown?pagina=4

Para saber mais como isso funciona, acesse o site acima.

 

Resultado:

– Com o script instalado, ao iniciar o sistema (carregar o boot do RPI) uma fala avisa sobre a inicialização

– E ao desligar ou reiniciar o RPI, outra fala é pronunciada, mas não é a mesma da inicialização

 

Sobre a voz:

Se caso não queira que seja falado durante a instalação (sem voz a instalação fica super rápida) basta comentar a linha do comando de voz, são as linhas que tem o comando ‘espeak’, comente também as linhas com a instrução sleep (são para aguardar a fala terminar) para comentar adicione # e um espaço, por exemplo:

espeak -ven+$voice -s 180 -p 99 “Preparing for install” >> /dev/null 2>&1
sleep 1

vai ficar assim:

# espeak -ven+$voice -s 180 -p 99 “Preparing for install” >> /dev/null 2>&1
# sleep 1

As mensagens e a voz estão configuradas para o Ingles, veja um exemplo:

echo ‘The installer has been canceled!’
espeak -ven+$voice -s 180 -p 99 “The installer has been canceled!” >> /dev/null 2>&1

O código ‘echo’ significa que vai exibir na tela:

echo ‘The installer has been canceled!’

Para deixar em portugues, bastaria trocar a mensagem para:

echo ‘O instalador foi cancelado!’

E para a voz, o espeak tem suporte ao Portugues do Brasil, basta trocar o en para pt:

espeak -vpt+$voice -s 180 -p 99 “The installer has been canceled!” >> /dev/null 2>&1

os outros códigos são:

$voice = define o modelo de voz, predefinido logo no inicio, na linha:

voice=”f5″

 

-s 180 = velocidade da fala

 

-p 99 = velocidade do passo da fala (pitch)

 

>> = vai redirecionar o que seria mostrado na tela

 

 

/dev/null 2>&1 = vai descartar a mensagem, poderia ser direcionada para um arquivo de log.

 

Para deixar com voz masculina troque os parametros:

de f para m e o ‘pitch’ também faz muita diferença, por exemplo, digite isso no seu console:

espeak -vpt+m5 -s 180 -p 10 “Hello!”

e agora este:

espeak -vpt+m5 -s 180 -p 99 “Hello!”

Note ainda que tem um numero que acompanha a letra m, neste caso é o 5, mas pode estar entre 0 e 5

 

O arquivo gerado:

O script de instalação vai gerar um arquivo RPI-auto-execute.sh (executável) na pasta /etc/init.d:

#!/bin/bash
### BEGIN INIT INFO
# Provides: RPI-auto-execute
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# X-Start-Before:
# X-Stop-After:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive:
# Short-Description: single_line_description
# Description: multiline_description
# location: /etc/init.d/RPI-auto-execute.sh
### END INIT INFO

case “$1” in
start)
echo “Starting service…”
# redirect stdout and stderr to logfile
exec >>/var/log/init-RPI.log 2>&1

# print log
echo “$(date +%d/%b/%y %X) $(uname -n) $(basename $0): Initializing”

# Starting Raspberry Pi
# python /home/script/init-RPI
espeak -ven+$voice -s 180 -p 99 “Starting Raspberry Pi” >> /dev/null 2>&1
espeak -ven+$voice -s 180 -p 99 “Starting vnc at port 5 9 0 1 for user” >> /dev/null 2>&1
# vncserver :1 -geometry 1024×768 -depth 24
# espeak -ven+$voice -s 180 -p 99 “Starting vnc at port 5 9 0 5 for root” >> /dev/null 2>&1
# sudo vncserver :5 -geometry 1024×768 -depth 24
# espeak -ven+$voice -s 180 -p 99 “Use the Real VNC programm to connect” >> /dev/null 2>&1

exit 3
;;
stop)
echo “Stopping service…”
# redirect stdout and stderr to logfile
exec >>/var/log/halt-RPI.log 2>&1

echo “$(date +%d/%b/%y %X) $(uname -n) $(basename $0): Stopping”

# Shutdown Raspberry Pi
# python /home/script/halt-RPI
espeak -ven+$voice -s 180 -p 99 “Closing system” >> /dev/null 2>&1
;;

restart)
echo “Restarting service…”
# command to restart service
;;

*)
echo “Operation not supported”
;;
esac

:

Dicas:

Este script pode ser alterado para rodar qualquer outro aplicativo, ou fazer qualquer outra operação, para executar a operação ao iniciar o RPI, basta editar as linhas que estão a partir de:

echo ‘ start)’ >> RPI-auto-execute.sh

E para que seja executado ao encerrar o sistema, altere a partir da linha:

echo ‘ stop)’ >> RPI-auto-execute.sh

 

Outra dica é para facilitar a edição e controle de arquivos sem a necessidade de uso do vnc:

Para criar o arquivo de script no computador e enviar para o RPI, pode ser utilizado o SFTP, um protocolo de transferencia de arquivos, que já está configurado por padrão no RPI.

veja mais em:

https://robsoneletronico.wordpress.com/2014/03/25/raspberry-pi-windows-sftp-cliente-ssh-com-filezilla/

 

Para evitar problemas de codificação com UTF-8 / ISO-8859-1 evite editar os arquivos de Linux em computador com Windows ou utilize um editor adequado.

Atualizado em 14/04/2014: Converter Scripts editados no Windows para executar no Linux

Mais referencias:

Níveis de execução:

http://www.dicas-l.com.br/arquivo/niveis_de_execucao.php#.UzGuE6KAC00

Executando scripts na inicialização Raspberry Pi:

http://0jln.wordpress.com/2013/05/21/executando-scripts-na-inicializacao-raspberry-pi/

Atualizado em 14/04/2014: Caractere especial no código do Script do Python

Boa sorte!

 

 

 

 

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: