Seu Curso

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size

Criando um proxy Siri no Raspberry Pi

Imprimir
Avaliação do Usuário: / 9
PiorMelhor 

 

 

 

Vamos do começo: o Siri é um software de assistência pessoal adquirido pela Apple para ser parte integrante do seu sistema operacional iOS 5 e posteriores, disponibilizado a partir do iPhone 4S e iPad 3. Com o Siri é possível fazer perguntas em linguagem natural sendo que as respostas também são fornecidas em linguagem natural, porém os idiomas disponíveis atualmente (maio de 2013) são apenas o alemão, chinês, coreano, espanhol, francês, inglês, italiano e japonês.

 

Com a criação de um proxy Siri é possível desviar todo o fluxo de dados que deveriam ir para os servidores da Apple para um servidor local e dessa forma processar o que foi solicitado (dito) ao Siri de forma customizada, alterando até, com um pouco mais de trabalho, o idioma suportado. Em alguns sites pela Internet é possível encontrar como isso pode ser utilizado para conduzir automação residencial em linguagem natural, por exemplo.

 

O melhor de tudo é que não será necessário jailbreak ou qualquer violação no sistema do seu celular ou tablet!

 

Para começar, com seu Raspberry Pi ligado, conectado à Internet e funcional, o primeiro passo é atualizar todo o sistema. Note que isso pode demorar de alguns minutos até algumas horas, dependendo da velocidade de sua conexão de Internet.

 

Execute:

 

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoremove

 

A opção update irá atualizar a lista de pacotes, a opção dist-upgrade irá atualizar a distribuição e autoremove irá apagar os arquivos baixados para instalações.

 

Você precisará do usuário root para iniciar o proxy Siri, portanto teremos que dar uma senha para a conta do super-usuário, um usuário comum como o pi não conseguirá iniciar o proxy.

 

Para definir a senha do root execute:

 

sudo passwd

 

Dê a senha que desejar, mas atente-se que terá que se lembrar dela posteriormente!

 

Faça logout e logue-se novamente como root:

 

logout

 

No caso de uma conexão remota esse comando irá fechar a conexão e em seguida basta reconectar usando o usuário root e a senha que você definiu.

 

Vamos para a instalação das aplicações básicas necessárias, samba, ssh, vim, rcs e unzip:

 

apt-get install samba samba-common-bin ssh vim rcs unzip -y

 

Samba para servidor de arquivos Windows, ssh para conexão remota, vim como editor de textos, rcs (revision control system for Linux) para termos um sistema para controlar acesso a arquivos compartilhados por vários usuários e unzip para descompactar arquivos zip.

 

Precisaremos usar IP estático, para isso vamos alterar as configurações de rede.

 

vim /etc/network/interfaces

 

Onde está:

 

iface eth0 inet dhcp

 

Marque a linha como comentário, ficando assim:

 

# iface eth0 inet dhcp

 

Insira o trecho a seguir abaixo da linha que você acabou de comentar:

 

auto eth0
iface eth0 inet static
 
address O-IP-QUE-VOCÊ-QUISER-QUE-FAÇA-PARTE-DA-SUA-REDE
netmask 255.255.255.0
broadcast ENDEREÇO-BROADCAST-DA-SUA-REDE
network ENDEREÇO-DA-SUA-REDE
gateway ENDEREÇO-DO-SEU-GATEWAY

 

Para O-IP-QUE-VOCÊ-QUISER-QUE-FAÇA-PARTE-DA-SUA-REDE vou utilizar 192.168.0.200.

 

Para minha configuração o ENDEREÇO-BROADCAST-DA-SUA-REDE será 192.168.0.255.

 

Em ENDEREÇO-DA-SUA-REDE para mim será 192.168.0.0.

 

Finalmente o meu NDEREÇO-DO-SEU-GATEWAY é 192.168.0.1.

 

Você deve colocar os endereço que condizerem com sua rede.

 

Reinicie o Raspberry Pi e aguarde que ele religue. Parece exagerado, mas em percebi que em alguns casos apenas reiniciar o serviço de rede não resolvia. Talvez por atualizações pendentes que necessitam de um reboot geral.

 

reboot

 

Se estiver usando uma conexão remota lembre-se que alteramos o IP do Raspberry Pi, você deve utilizar o novo IP para conectar-se. No meu caso o IP ficou em 192.168.0.200 e  é ele que devo utilizar para conexão remota.

 

Vamos então alterar as configurações de DNS.

 

vim /etc/resolv.conf

 

Comente as configurações do seu ISP (Internet Service Provider) e insira as seguintes linhas:

 

# Servidores públicos de DNS do Google
nameserver 8.8.8.8
nameserver 8.8.4.4
 
#Servidores públicos de DNS de nível 3 - menos saltos e tempo de ping mais baixo
nameserver 209.244.0.3
nameserver 209.244.0.4

 

Temos que prosseguir instalando um servidor DNS local, para isso poderemos usar o DNSmasq que é um servidor DNS muito rápido para redes locais, não recomendado para uso em grandes redes. Para o nosso caso dará conta perfeitamente, ainda mais por ser enxuto.

 

apt-get install dnsmasq

 

Precisamos editar o arquivo de configurações:

 

vim /etc/dnsmasq.conf

 

Por volta da linha 67 você irá encontrar:

 

#address=/double-click.net/127.0.0.1

 

Logo abaixo dessa linha insira as linhas a seguir:

 

# Servidor de produção do Siri para iOS
address=/guzzoni.apple.com/IP-FIXO-DO-RASPBERRY-PI
 
# Servidor do Siri Beta para iOS
address=/kryten.apple.com/IP-FIXO-DO-RASPBERRY-PI

 

No caso o IP que escolhi para meu Raspberry Pi foi 192.168.0.200, então a alteração acima ficou como:

 

# Servidor de produção do Siri para iOS
address=/guzzoni.apple.com/192.168.0.200
 
# Servidor do Siri Beta para iOS
address=/kryten.apple.com/192.168.0.200

 

 

Salve o arquivo e reinicie o serviço do dnsmasq:

 

service dnsmasq restart

 

Instale mais alguns pré-requisitos para que tudo funcione. Note que isso pode demorar de minutos até horas, dependendo da velocidade da sua conexão de Internet:

 

apt-get install ruby build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion pkg-config -y

 

Precisaremos ainda do RVM, ou Ruby Version Manager - Gerenciador de Versões Ruby. Com o RVM podemos executar códigos em Ruby em múltiplas versões:

 

bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

 

Ajustar o caminho para o RVM:

 

[[ -s "/etc/profile.d/rvm.sh" ]] && . "/etc/profile.d/rvm.sh"

 

Colocar o RVM para ser executado automaticamente na inicialização do sistema:

 

echo '[[ -s "/etc/profile.d/rvm.sh" ]] && . "/etc/profile.d/rvm.sh" # Load RVM function' >> ~/.bash_profile

 

Instalação do Ruby. Note que isso irá demorar um bom tempo:

rvm install 1.9.3

 

Clonar o repositório do Proxy Siri (SiriProxy):

 

git clone git://github.com/plamoni/SiriProxy.git

 

Entre do diretório do Proxy Siri:

 

cd SiriProxy

 

Você receberá uma mensagem de alerta do RVM, responda yes (sim):

 

 

Crie o diretório .siriproxy no diretório home do usuário root, o qual estamos logados:

 

mkdir ~/.siriproxy

 

Agora copie o arquivo de configuração exemplo para o diretório .siriproxy que acabamos de criar:

 

cp ./config.example.yml ~/.siriproxy/config.yml

 

Agora sim, vamos instalar o Proxy Siri:

 

rake install

 

Gerar os certificados para o iPhone ou iPad:

 

cd bin
./siriproxy gencerts

 

Vamos até o diretório ~/.siriproxy para verificar o certificado gerado:

 

cd ~/.siriproxy
ls -l

 

 

Você precisa enviar o arquivo ca.pem para seu iPhone ou iPad, uma solução para isso é colocá-lo em um e-mail e enviá-lo para um conta que você tenha acesso em seu gadget. Você pode copiar esse arquivo a partir do Raspberry Pi para outro computador ou usar o tutorial Como enviar um e-mail via telnet do Linux e fazer isso diretamente do RaspPi.

 

Ao receber o e-mail basta tocar sobre o arquivo e fazer com que ele seja instalado.

 

 

 

 

Agora vamos configurar o iPhone ou iPad para testar se está tudo funcionando.

 

Primeiro vamos ajustar o DNS e para isso teremos que alterar todas as configurações de IP. Toque em Ajustes e em seguida toque em Wi-Fi:

 

 

Toque na seta à esquerda do nome da sua rede sem fio para entrar nas configurações de rede:

 

 

Troque o DNS para o IP do Raspberry Pi, onde está o servidor DSNMasq, no meu caso será 192.168.0.200:

 

 

Isso não irá alterar o acesso à Internet que você tem em seu iPhone ou iPad, uma vez que o Raspberry Pi irá fornecer DNS para acesso externo.

 

Voltemos ao Raspberry Pi, logado com o usuário root, execute:

 

cd ~/SiriProxy/bin
./siriproxy bundle
bundle install

 

Isso irá instalar os últimos plugins necessários e empacotar todo o Proxy Siri, note que poderá demorar alguns instantes.

 

Finalmente, vamos iniciar o Proxy:

 

./siriproxy server

 

Você deverá ver algo como na figura abaixo:

 

 

Para testar inicie o Siri e fale, em inglês: test siri proxy

 

No console você deverá ver algo como a figura abaixo:

 

 

E na tela do iPad ou iPhone:

 

 

Vamos brincar um pouquinho, vamos editar o arquivo de configuração exemplo do Siri Proxy:

 

vim /root/SiriProxy/plugins/siriproxy-example//lib/siriproxy-example.rb 

 

Encontre a linha onde consta:

 

listen_for /test siri proxy/i do

 

Toque para:

 

listen_for /testing work/i do

 

Atualizando o Siri Proxy, isso demora alguns minutos:

 

./siriproxy update .

 

Inicie novamente o Proxy:

 

./siriproxy server

 

Agora no seu iPhone ou iPad inicie o Siri e diga  “testing work”, a resposta será novamente “siri proxy is up and running”.

 

Entendeu?! Basta editar esse arquivo para definir os comandos e as respostas.

 

Sinta o poder em suas mãos!

 

Boa diversão e criação!

 

Comentários  

 
0 #1 Ajuda com SiriproxyGustavo Valença 27-12-2016 16:47
Olá gostaria muito de fazer um teste com o raspberry pi 3b para automatizar meu quarto e queria q , se possível, vc me ajudasse a configurá-lo. Se possível deixa um número pra contato. Desde já, obrigado.
Citar
 

Adicionar comentário


Código de segurança
Atualizar

You are here: