top of page
Buscar

Google Assistant Offline

  • Foto do escritor: Cathal
    Cathal
  • há 4 horas
  • 6 min de leitura

A ideia deste projecto veio com a questão de a minha internet não ser estável e querer usufruir na mesma dos recursos de uma Smart Home. Isto no entanto vem com um acréscimo de segurança e estabilidade do sistema porque agora funciona mesmo em caso de falha de energia (vários aparelhos mais críticos tem bateria interna). Consigo no entanto ver isto a ser usado para uma Van ou em zonas sem acesso á internet de todo ou simplesmente para quem quer ir Off the Grid.


Recursos necessários:

  • Um dispositivo que se mantenha 24/7 para correr o assistente:

    • Computador ou servidor

    • Em alternativa um Raspberry Pi

  • Router:

    • Um router capaz de Dual Band ou um router dedicado para o efeito

    • Um telemóvel velho com função de Hotspot

    • Em alternativa correr tudo num Raspberry Pi

  • Dispositivos Smart Home ou Smart Appliances (deixo exemplo dos meus):

    • Iluminação e câmeras Philips Hue

    • Smart Appliances (frigorifico, microondas, TV, etc) Samsung

    • Speakers, Termostato, e hubs Google

    • Smart Lock Nest


Configuração de rede local:

  • Informações para usar um router ou um Raspberry Pi: AQUI


Configuração:

  • Criar uma API de autenticação com a Google AQUI

  • Criação de um clone de Google assistant API. AQUI

  • Instalação: AQUI


Configuração da rede local:

Para configurar uma rede privada off-grid 2.4GHz, segue estes passos:

  • Escolha do Equipamento: Opta por routers e repetidores compatíveis com 2.4GHz. Se possível, escolhe equipamentos que suportem normas recentes, como o Wi-Fi 5 (802.11ac) ou Wi-Fi 6 (802.11ax) que te vão permitir configurar 2 redes separadas ou fazer upgrade no futuro.

  • Localização e Montagem: Instala o router num local central. Se quiseres fazer a instalação para uma Van ou outro local mais pequeno, em principio a localização não será tão importante. (Um telemóvel velho com função de Hotspot também funciona para o efeito em curtas distâncias e o facto de ter bateria pode ajudar com a estabilidade da rede em caso de cortes de energia)

Configuração do Router:

  • Ligar à interface de administração via cabo ou wifi com as definições de fabrica (normalmente através de um endereço IP como 192.168.0.1).

  • Configura as definições de rede, como o nome da rede (SSID) e a senha.

    • Segurança: Ativa encriptação WPA3 para a melhor segurança. Se não disponível, usa WPA2.

  • Escolhe um canal com menos interferência.

    • Podes instalar uma APP no telemovel para te ajudar a analisar as redes a tua volta e a forca de sinal WiFi Analyzer

Testes de Conectividade: Usa um telemovel para se conectar à rede e testar a força do sinal em diferentes locais. WiFi Analyzer Garante que não há muito ruido com outras redes que possam interferir com a tua.


Raspberry Pi

Usar um Raspbery Pi para tudo será a solução mais eficaz e económica. Pode no entanto ter a barreira do custo inicial (na ordem dos 50€ mais extras) e as questões mais técnicas para configuração.

  • Modelo do Raspberry Pi: Escolhe um modelo com suporte Wi-Fi, como o Raspberry Pi 3 ou superior. Recomendo o Raspberry Pi 5 tendo em conta que vem com 8Gb de RAM e um processador ARM com 2.4GHz, suporte para disco M.2 e USB C.

Instalar o Sistema Operativo:

Descarrega o Raspberry Pi OS (anteriormente Raspbian) ou outro sistema compatível. Download Usa um software como o Raspberry Pi Imager para gravar o sistema operativo num cartão SD. Insere o cartão SD no Raspberry Pi e inicia-o.

Configuração Inicial:

Conecta o Raspberry Pi a um monitor, teclado e rato. (portas HDMI e USB no caso do Raspberry Pi 5) Realiza a configuração inicial, incluindo a configuração de rede, atualizações de software e definições regionais.

Instalar Software de Rede:

Abre um terminal e instala um software como o Hostapd para criar um ponto de acesso Wi-Fi e o Dnsmasq para DHCP e DNS, usando comandos como sudo apt-get installhostapddnsmasq na consola.

Configurar o Ponto de Acesso:

  • Edita os ficheiros de configuração do Hostapd (/etc/hostapd/hostapd.conf) para definir o SSID, senha e outros parâmetros da rede Wi-Fi.

  • Configura o Dnsmasq editando o ficheiro /etc/dnsmasq.conf para gerir o DHCP.

Configurar a Interface de Rede:

  • Edita o ficheiro /etc/dhcpcd.conf para definir um endereço IP estático para o Raspberry Pi na rede.

Ativar e Testar:

  • Ativa o serviço Hostapd e o Dnsmasq.

  • Testa a conectividade com um telemovel (exemplo) com a APP que recomendei acima para garantir que tudo funciona normalmente e o Raspbery Pi está entao a funcionar como um Router.

Dependendo do teu modelo se necessitares de mais ajuda consulta a documentação.


Criar uma API de autenticação com a Google

Para este sistema funcionar sem interferir com o uso normal quando se está ligado á internet precisamos de simular na mesma o acesso da nossa conta. Por questões de privacidade e segurança não posso facilitar estes passos e cada um terá de criar um seu próprio Token de acesso.

Segue passo por passo:

  • Acede ao Google Cloud Console

  • Cria um novo projecto (podes chamar Google Token)

  • Configurar o OAuth Consent Screen:

    • Vai a APIs & Services > OAuth consent screen.

    • Escolhe o tipo de aplicação externa e mete o teu email para todos os contactos e acessos.

  • Criar Credenciais de OAuth 2.0:

    • Vai a Credentials e clica em Create Credentials.

    • Escolhe OAuth client ID.

    • Define o tipo de aplicação para Web application

    • Ignora os os URIs de redirecionamento e mantem a aplicação como aplicação de teste (ou vais ter problemas com autenticações e verificações da google como eu)

Obter o Client ID e Client Secret:

  • Após a criação, escreve em algum lado ou faz download do ficheiro JSON com o Client ID e o Client Secret.

No fim deves obter um ecra semelhante a este:


Google Clone API

Este passo passa pela parte de obter as credenciais para a integração do Google Assistant SDK e validar.

  • Acede novamente ao Google Cloud Console

    • Criar um Novo Projeto (Chamemos Clone Assistant API)

    • Se necessário, seleciona uma organização e uma localização (podes inventar).

  • Activar a API do Google Assistant:

    • No menu vai a APIs e Serviços > Biblioteca.

    • Pesquisa por Google Assistant API.

    • Clica na API do Google Assistant e seleciona Activar.

  • Configurar o ecra de Consentimento OAuth:

    • Ainda em APIs e Serviços, vai a Consentimento OAuth.

    • Configura com as informações necessárias, como um nome para a aplicação, e-mail do suporte, e domínio.

    • Garante que manténs a APP em TESTE.

Criar Credenciais:

  • Vai a Credenciais no menu APIs e Serviços.

    • Clica em Criar Credenciais e escolhe ID do cliente OAuth.

    • Define o tipo de aplicação como Aplicação Web

  • Após a criação, escreve em algum lado ou faz download do ficheiro json com o Client ID e o Client Secret. Este ficheiro é diferente do anterior por isso cuidado para não os confundir. (pode resultar na anulação dos ID's e teres de repetir o processo)


Instalação:

Para executar a API do Google Assistant vamos precisar de instalar o Google Assistant SDK. Isto pode ser feito em ambiente windows, linux ou num Raspberry Pi. Assumindo que vais fazer isto num Raspberry Pi como eu e queres o sistema completamente isolado vou comecar com essas instruções. Caso estejas a configurar no windows e fazer correr a partir de um PC só tens de seguir o instalador e fornecer os teus tokens que obtiveste nos passos anteriores. Instalação em Linux ou Raspberry Pi:

  • Certifica que tens a ultima versao e instala as dependências necessárias, como Python, pip (Python package installer) e Git.

    • Obtem do passo anterior o ClienID e Client Secret

Instalar o Google Assistant SDK: Faz download fo Google Assistant SDK

  • Transfere para o cartao de memoria do RaspPi

    • No terminal instala o Google Assistant SDK usando pip:

 pip install --upgrade google-assistant-sdk[samples] 
  • Configurar o OAuth 2.0:

 google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless --client-secrets /caminho/do/teu/client_secret_client-id.json 

(verifica que no fim escreves o caminho para o ficheiro, se estiver na raiz garante que metes o nome correctamente)

  • Segue as instruções para autenticar.

  • Fornece o teu API de Autenticação que obtiveste no primeiro passo

  • Gravar o projecto

  • Reiniciar

  • Executa o comando para testar que tudo ficou corretamente configurado

googlesamples-assistant-hotword --project_id your_project_id --device_model_id device_model_id

Trocar as IDs your_project_id e device_model_id pelos respectivos IDs que obtens na consola da Google.

  • Personaliza e expande funcionalidades e activa aquelas que queres que ele execute.

    • Aqui entra em causa o ponto de recomendar um Raspberry Pi com mais memoria RAM. Nao é necessário activar tudo mas recomendo activar as seguintes:

Language Code: Define o idioma do Google Assistant Device Location: Configurações de localização para respostas baseadas na localização. Device Configuration OAuth 2.0 Credentials: Credenciais para autenticar quando online Actions: Define ações personalizadas Intents: Para processamento de voz e resposta Queries: Define comandos ou perguntas específicas pré configuradas Responses: As respostas que deve dar para determinadas consultas ou ações. Audio Configurations: Configurações relacionadas ao processamento de áudio, como taxa de amostragem e formato de áudio. User Identification: Identificação do utilizador e reconhecimento de voz. Privacy Settings Device Integration: Necessário para adicionar aparelhos na rede Machine Learning: Permite acções com base em rotinas

Documentação do Google Assistant SDK para Python como referência e Raspberry Pi AQUI Garante que todas as comunicações desta rede são exclusivamente para a rede Smart Home. Assegura-te que o armazenamento de dados e tokens fica em segurança. Alguns destes dados dão acesso direto á tua conta e a todos os teus aparelhos. Estejas a usar um Cartão SD ou um M.2 no Raspberry Pi, garante que tens uma cópia de segurança para não ter de recomeçar tudo de novo em caso de alguma coisa falhar.


Originally posted: 19/12/2023

 
 
 

Posts recentes

Ver tudo
Raspberry Pi + OBS Dual Setup

Então, acabaste de arranjar um Raspberry Pi ou queres um para transformá-lo numa máquina dedicada ao OBS para streaming? Com este setup, vais poder dar um descanso ao teu PC principal. Ou então merame

 
 
 

Comentários


bottom of page