Índice:

Espelho inteligente multiusuário com Google Agenda: 10 etapas
Espelho inteligente multiusuário com Google Agenda: 10 etapas

Vídeo: Espelho inteligente multiusuário com Google Agenda: 10 etapas

Vídeo: Espelho inteligente multiusuário com Google Agenda: 10 etapas
Vídeo: Magic Mirror - Getting Started | Configuring Calendar (Google Calendar & Alexa) & Weather Module 2024, Novembro
Anonim
Espelho inteligente multiusuário com Google Agenda
Espelho inteligente multiusuário com Google Agenda
Espelho inteligente multiusuário com Google Agenda
Espelho inteligente multiusuário com Google Agenda

Neste instrutível, criaremos um espelho inteligente integrado ao Google Calendar. Fiz esse projeto porque acho os espelhos inteligentes muito legais, são uma dádiva de Deus pela manhã. Mas decidi fazer um do zero porque todos os outros têm uma falha. Eles são muito avançados e desordenados. Decidi manter isso simples.

Suprimentos

Antes

vamos começar, essas são as coisas que você definitivamente precisa para construir um espelho como o meu. Esses suprimentos custarão cerca de 250 a 350 euros, dependendo da sua região e dos preços atuais.

Hardware

Sensores

  • Sensor de temperatura de um fio
  • RWCL 0516 (sensor de movimento de microondas)
  • Potenciômetro macio (Touchstrip da Sparkfun)

Informática

e IC's

  • Alto-falante (3,2 W a 4Ω OU 1,8 W a 8Ω)
  • MCP3008
  • Quebra do amplificador Adafruit I2S 3W Classe D - MAX98357A
  • Raspberry Pi 3 B +
  • Cartão SD (8 GB é bom)
  • Resistor 4.7K Ohm

Vários

  • Jumperwires
  • Tábua de pão
  • Espelho acrílico bidirecional (15% de transmissão de luz)
  • Monitor IPS (o tamanho depende do tamanho que você deseja)
  • cabo HDMI
  • Madeira

Programas

  • PuTTY
  • Editor de código (Notepad ++ é suficiente)
  • Win32 Disk Imager
  • Imagem do sistema operacional Raspbian

Etapa 1: configuração

Para começar, primeiro precisamos configurar seu Pi para o código que criei.

Você precisará de duas coisas:

  • Win32 Disk Imager de
  • Imagem do sistema operacional Raspbian em

Baixe o arquivo ZIP e extraia-o para onde quiser.

A instalação

  1. Selecione sua imagem através do ícone da pasta
  2. Selecione seu cartão SD no menu suspenso
  3. Clique em escrever

Agora precisaremos fazer alguns ajustes extras em algumas configurações para que possamos acessar o Pi.

  1. Vá para o diretório de inicialização do cartão SD
  2. Abra o arquivo "cmdline.txt"
  3. Adicione ip = 169.254.10.1 No final da linha longa do texto separado por um espaço (na mesma linha).
  4. Salve o arquivo.
  5. Crie um arquivo chamado ssh sem extensão no mesmo diretório

Agora você pode ejetar o cartão SD e colocá-lo no seu Pi.

Conectando

Agora precisaremos configurar o software.

Primeiro conecte um cabo LAN, uma extremidade em seu desktop / laptop e a outra em seu Pi.

Agora inicialize o Raspberry Pi.

  1. Instale o Putty de
  2. Digite 169.254.10.1 na caixa IP.
  3. Certifique-se de que SSH esteja selecionado e a porta 22 esteja preenchida.
  4. Clique para abrir
  5. Preencha o nome de usuário: pi
  6. Preencha a senha: framboesa

Raspi-config

Abra o utilitário Raspi-config usando:

sudo raspi-config

Habilite as seguintes opções na categoria de interfaces

  • 1 fio
  • SPI

Escolha o seu país WiFi através da categoria de localização.

Em seguida, desative as seguintes opções na categoria de opções de inicialização

Tela de abertura

Por último, defina a configuração Desktop / CLI na categoria de opções de inicialização como Desktop Autologin.

Wi-fi

Para o espelho, precisamos ter uma conexão wi-fi, então certifique-se de ter suas credenciais wi-fi fechadas.

Vá para o modo raiz

sudo -i

Cole esta linha, mas certifique-se de que o SSID e a senha estão preenchidos

wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf

Entre no cliente WPA.

wpa_cli

Selecione a interface

interface wlan0

Recarregue a configuração

reconfigurar

Certifique-se de que você está conectado corretamente digitando …

ip a

… E ver se você tem um IP nas interfaces WLAN0.

Pacotes

Agora que estamos conectados à internet, teremos que instalar alguns pacotes.

Primeiro, precisamos atualizar as listas de pacotes para a mais recente.

atualização do apt sudo

Pitão

Forçaremos o Raspbian a usar Python 3

atualizar-alternativas --install / usr / bin / python python /usr/bin/python2.7 1

atualizar-alternativas --install / usr / bin / python python / usr / bin / python3 2

MariaDB

Cole a seguinte linha para instalar o banco de dados.

sudo apt instalar servidor mariadb

Então, precisaremos proteger nossa instalação.

mysql_secure_installation

Ele nos pedirá a senha de root atual, já que não temos uma, basta pressionar enter.

Em seguida, ele pergunta se queremos um tipo de senha de root em y, já que queremos uma.

Para as próximas perguntas, basta inserir Y.

Por último, estaremos criando um usuário que poderemos usar para o espelho.

Entre no shell mysql fazendo:

Elevar-nos para enraizar

sudo -i

Entre no shell do mysql

mysql

Substitua por seu próprio nome de usuário e o mesmo por

concede todos os privilégios no mirror. * to '' @ '%' identificado por '';

Agora liberamos a tabela de permissões.

PRIVILÉGIOS DE FLUSH;

Apache Webserver

Para instalar o Webserver execute a linha abaixo.

sudo apt install apache2 -y

Pacotes Python

Vamos instalar esses pacotes

  • Frasco
  • Flask-Cors
  • Flask-MySQL
  • Flask-SocketIO
  • PyMySQL
  • Frasco-talismã
  • Gevent
  • Gevent-websocket
  • Google-api-python-client
  • Autenticação do Google
  • Google-auth-httplib2
  • Google-auth-oauthlib
  • Httplib2
  • Icalendar
  • Icalevents
  • Oauthlib
  • Python-socketio
  • solicitações de
  • Wsaccel
  • Ujson

Fazendo

pip install Flask Flask-Cors Flask-MySQL Flask-SocketIO PyMySQL Flask-Talisman gevent gevent-websocket google-api-python-client google-auth google-auth-httplib2 google-auth-oauthlib httplib2 icalendar icalevents oauthlib python-socketio solicitações wsaccel

Configuração de alto-falante

curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash

Agora precisamos reiniciar, então pressione y.

Execute novamente o script

curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash

Agora precisamos reiniciar uma segunda vez

sudo reboot

Tela (monitor)

Dependendo de como você deseja a orientação de sua tela, você pode querer girá-la.

Para girar a tela, precisamos acessar as opções de inicialização, fazendo:

sudo nano /boot/config.txt

E, em seguida, colando uma dessas linhas no arquivo de configuração:

display_rotate = 0

display_rotate = 1

display_rotate = 2

display_rotate = 3

O primeiro, 0, é a configuração normal. 1 terá 90 graus, 2 é 180 graus e o último terá 270 graus.

Em seguida, reinicie.

sudo reboot

Etapa 2: instalando o espelho

Instalando o espelho
Instalando o espelho

Agora vamos configurar um local para baixar meu código.

cd / home / pi /

git clone https://github.com/nielsdewulf/Mirror MirrorProject cd MirrorProject

Agora vamos copiar algumas pastas para o destino correto

sudo cp -R frontend / mirror / / var / www / html / mirror /

sudo cp -R frontend / painel / / var / www / html / Sudo cp -R backend / / home / pi / Mirror /

A instalação do banco de dados é uma etapa necessária na confecção do projeto.

sudo mysql -u root -p << CREATEDATABASE.sql

Etapa 3: Configuração

O arquivo de configuração está localizado em:

sudo nano /home/pi/Mirror/resources/config.ini

Digite o usuário MYSQL e a senha.

Este deve ser o usuário mysql que acabamos de criar.

As outras configurações que veremos mais tarde são instrutíveis.

Etapa 4: API's

Agora que terminamos a instalação do Pi, cobriremos alguns tópicos que você pode querer fazer.

Céu escuro

Crie uma chave de API Darsky via

Depois de se registrar, você verá sua chave de API no painel.

Insira esta chave no arquivo de configuração do projeto de espelho que você instalou antes.

O calendário

Por padrão, você só poderá usar urls ical para visualizar seu calendário. Mas esta parte será sobre como vincular seu espelho ao ecossistema do Google. Este é um processo geralmente mais longo e doloroso.

Coisas que você definitivamente vai precisar

Um nome de domínio

Estas são as coisas que iremos configurar durante esta parte

  • Conta CloudFlare
  • Conta de desenvolvedor do Google
  • Projeto Google Developer
  • Configure a API do calendário

Etapa 5: o calendário

O calendário
O calendário
O calendário
O calendário

Cloudflare

Configure uma conta cloudflare em https://cloudflare.com e siga o assistente para transferir seu nome de domínio para Cloudflare DNS.

Não há necessidade de criar você mesmo um registro A que aponte para o pi de framboesa. Meu código Mirror fará isso por você. Como na maioria dos wi-fi domésticos, os IPs não são estáticos, portanto, após reiniciar, ele pode não funcionar mais. Para que meu código atualize automaticamente o ip, será necessária a chave API da sua conta.

  1. Clique no botão Obtenha sua chave de API no painel do lado direito. [Foto 1]
  2. Role para baixo e visualize sua chave API global. [Foto 2]

Insira esta chave no arquivo de configuração do projeto de espelho que você instalou antes.

Criação de certificado SSL

O Google exige que tenhamos uma conexão SSL. Para iniciar esta seção, certifique-se de configurar corretamente o DNS Cloudflare.

Primeiro adicione o repositório.

sudo add-apt-repository ppa: certbot / certbot

Atualize a lista de pacotes.

sudo apt-get update

Instale CertBot

sudo apt install python-certbot-apache

Inicie a criação do certificado. Novamente, você precisará preencher o nome de domínio correto.

sudo certbot --apache -d example.com -d www.example.com

Após a criação, ele perguntará se você deve redirecionar todas as conexões para SSL. Escolha redirecionar.

Agora, ele dirá que criou com êxito um certificado para o seu domínio. Certifique-se de salvar os 2 caminhos fornecidos.

  • /etc/letsencrypt/live/example.com/cert.pem
  • /etc/letsencrypt/live/example.com/privkey.pem

Agora vá para a pasta com os certificados via:

Certifique-se de alterar example.com para o host correto.

cd /etc/letsencrypt/live/example.com/

Agora vamos copiar esse conteúdo para a nossa pasta de projeto.

cp cert.pem /home/pi/Mirror/resources/certs/cert.pem

E

cp privkey.pem /home/pi/Mirror/resources/certs/privkey.pem

Conecte o Apache ao seu domínio

Para configurar o Apache corretamente com o seu domínio, teremos que criar um arquivo de configuração. Certifique-se de preencher seu nome de domínio, por exemplo funergydev.com.

sudo nano /etc/apache2/sites-enabled/example.com.conf

Em seguida, cole isso no arquivo. Substitua example.com pelo seu nome de domínio.

Certifique-se de que seu certificado e chave privada sejam o caminho correto. Defina-os para o caminho que você salvou anteriormente quando criamos por meio do certbot.

DocumentRoot "/ var / www / html /" SSLEngine em SSLCertificateFile /home/pi/Mirror/resources/certs/cert.pem SSLCertificateKeyFile /home/pi/Mirror/resources/certs/privkey.pem # Outras diretivas aqui Opções Índices FollowSymLinks AllowOverride Todos exigem todos concedidos

Agora precisamos ativar algumas modificações e, em seguida, forçar o Apache a recarregar a configuração, fazendo:

sudo a2enmod ssl

sudo a2enmod reescrever

sudo systemctl reload apache2

Agora você deve ser capaz de ir através do seu nome de domínio ao seu pi e ver a página padrão do apache.

Etapa 6: API do Google

API do Google
API do Google
API do Google
API do Google
API do Google
API do Google

Acesse o console do desenvolvedor em

Parte 1

Crie seu primeiro projeto clicando ao lado do logotipo da API do Google e clicando no botão NOVO PROJETO. Preencha um nome de projeto apropriado e clique no botão criar. [Photo1]

Parte 2

Agora você chegará a esta página. Clique no botão da biblioteca. [Photo2]

Esta é uma grande lista de todas as APIs que você pode usar, mas estaremos procurando a API do Google Agenda. Clique nele e pressione ENABLE. [Photo3]

Em seguida, você terá uma visão geral da API do calendário. Clique no logotipo das APIs do Google para voltar ao seu projeto. [Photo4]

Parte 3

Para configurar tudo corretamente, clique na categoria de credenciais e escolha a guia Verificação de domínio.

Aqui você terá que verificar o seu nome de domínio.

  1. Clique em ADICIONAR DOMÍNIO
  2. Preencha o seu domínio
  3. Em seguida, ele pedirá para verificar seu domínio. Clique em continuar.
  4. Escolha seu provedor de nome de domínio. [Photo5]
  5. Siga o processo
  6. Agora você poderá adicioná-lo à Lista de verificação de domínio no console de API do Google desta forma. Certifique-se de que seu domínio esteja marcado. [Photo6]

Parte 4

Agora escolha a guia da tela de consentimento do OAuth. [Photo7]

Preencha o nome do aplicativo

Em seguida, adicionaremos escopos à tela de consentimento. Isso significa que perguntaremos ao usuário na tela de consentimento se ele deseja compartilhar as informações do calendário com o espelho.

  1. Clique em adicionar escopo e pesquise por calendário.
  2. Verifique../auth/calendar.readonly e pressione adicionar. [Photo8]

Preencha um domínio autorizado. Este deve ser o domínio que você acabou de verificar. [Photo9]

Agora clique no grande botão Salvar abaixo do formulário.

Parte 5

Por último, precisamos criar as credenciais. Como pressionamos o botão Salvar, fomos redirecionados para a guia de credenciais. Clique em criar credenciais e escolha ID do cliente OAuth. [Photo10]

Escolha o tipo de aplicativo: Aplicativo da Web e dê um nome a ele.

Insira o link a seguir nos URIs de redirecionamento autorizados e preencha o domínio correto.

example.com:5000/api/v1/setup/calendar/response

Clique em criar. Isso mostrará uma janela pop-up, basta clicar em OK. Agora pressione o botão de download nas credenciais que você acabou de fazer

Parte 6

Agora abra o arquivo JSON e copie o conteúdo.

sudo nano /home/pi/Mirror/resources/credentials/credentials.json

Cole-os aqui.

Parte 7

Agora precisamos definir nosso domínio na configuração, fazendo:

sudo nano /home/pi/Mirror/resources/config.ini

Etapa 7: o design do espelho

The Mirror Design
The Mirror Design
The Mirror Design
The Mirror Design
The Mirror Design
The Mirror Design
The Mirror Design
The Mirror Design

Projetar seu espelho depende de como você o deseja. Faça medições precisas do LCD e deixe uma lacuna de 2 centímetros em um lado do espelho, pois o sensor de movimento de micro-ondas ficará ali. Não pode estar atrás de nenhum metal.

Eu conectei 4 tábuas de madeira juntas. Estes foram fresados para ter uma frente do espelho bem limpa. Na parte superior, também fiz alguns furos para permitir que o som do alto-falante fosse ouvido. No lado oposto do espelho, a parte inferior, cortei um pequeno retângulo para poder facilmente fazer a fiação elétrica. [Photo1]

São 2 peças de madeira barata onde o monitor ficará preso. Como eu disse, precisaríamos de cerca de 2 centímetros de distância entre o espelho e a caixa. Também adicionei 3 pequenos pedaços de madeira e aparafusei-os nesses pedaços de descanso. Assim, o monitor permaneceria no lugar. [Photo2]

No final, ficou assim. Eu tinha uma lacuna de cerca de 3 mm entre essas peças de descanso e a frente da caixa do espelho. Apenas o suficiente para que eu pudesse colocar o espelho bidirecional de 3 mm de espessura. [Foto3]

Etapa 8: Fazendo a fiação

Fazendo a fiação
Fazendo a fiação
Fazendo a fiação
Fazendo a fiação
Fazendo a fiação
Fazendo a fiação

Certifique-se de seguir corretamente um desses esquemas.

Depois de fazer a fiação, colei na parte de trás da tela com fita dupla-face. Pois se eu quisesse desmontar o espelho e usá-lo para outros projetos, poderia facilmente removê-lo. Se você tiver certeza, pode usar uma pistola de cola quente e colá-la na parte de trás do espelho.

Etapa 9: Iniciando o Código

Iniciando o Código
Iniciando o Código
Iniciando o Código
Iniciando o Código
Iniciando o Código
Iniciando o Código

LXSession

Vamos primeiro criar algumas pastas

mkdir -p /home/pi/.config/lxsession/LXDE-pi/

Agora criaremos um arquivo onde especificaremos alguns parâmetros / comandos de inicialização.

sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

Cole o seguinte no arquivo.

@lxpanel --profile LXDE-pi

@pcmanfm --desktop --profile LXDE-pi @xscreensaver -no-splash @ point-rpi @sh /home/pi/Mirror/init_mirror.sh @xset s noblank @xset s off @xset -dpms

Atualizaremos o script da tela inicial do espelho para corresponder ao nosso host.

sudo nano /home/pi/Mirror/init_mirror.sh

Escolha localhost se você não estiver usando o Google Agenda e um domínio.

#! / bin / bash

sleep 15 chromium-browser --incognito --kiosk https:// localhost / mirror

Se você estiver usando, preencha seu host.

#! / bin / bash

sleep 15 chromium-browser --incognito --kiosk

Serviço

Agora vamos configurar que o código Mirror seja executado automaticamente.

Estaremos criando um serviço que inicia automaticamente o código para nós.

Vamos para:

sudo nano /etc/systemd/system/mirror.service

E cole isso no arquivo

[Unidade]

Descrição = Mirror Backend After = network.target mariadb.service [Service] Type = simple User = root ExecStart = / bin / sh /home/pi/Mirror/init.sh [Instalar] WantedBy = multi-user.target

Agora teremos que recarregar o daemon systemd fazendo:

sudo systemctl daemon-reload

E também habilitaremos o serviço para iniciar automaticamente na inicialização.

sudo systemctl enable mirror

Agora vamos desligar.

sudo poweroff

As configurações finais

Finalmente, precisamos remover nosso ip APIPA para que ele funcione apenas em wi-fi.

  1. Vá para o diretório de inicialização do cartão SD no seu PC.
  2. Abra o arquivo "cmdline.txt"
  3. Remova ip = 169.254.10.1 No final da longa linha de texto.

Etapa 10: executando o espelho

Executando o espelho
Executando o espelho
Executando o espelho
Executando o espelho
Executando o espelho
Executando o espelho
Executando o espelho
Executando o espelho

Visite o ip que está na tela do espelho ou, se você configurou o google calendar, preencha o nome do domínio.

Agora você poderá configurar seu espelho!

Se você receber um erro de SSL em seu espelho, pode adicionar seus certificados ao armazenamento de certificados do Chromium.

Recomendado: