Tabla de contenido:

Espejo inteligente multiusuario con Google Calendar: 10 pasos
Espejo inteligente multiusuario con Google Calendar: 10 pasos

Video: Espejo inteligente multiusuario con Google Calendar: 10 pasos

Video: Espejo inteligente multiusuario con Google Calendar: 10 pasos
Video: NodoMx El Cloud 2024, Noviembre
Anonim
Espejo inteligente multiusuario con Google Calendar
Espejo inteligente multiusuario con Google Calendar
Espejo inteligente multiusuario con Google Calendar
Espejo inteligente multiusuario con Google Calendar

En este instructivo, crearemos un espejo inteligente integrado con Google Calendar. Hice este proyecto porque encuentro los espejos inteligentes realmente geniales, son un regalo del cielo por la mañana. Pero decidí hacer uno yo mismo desde cero porque todos los demás tienen 1 defecto. Están demasiado avanzados y abarrotados. Decidí mantener esto simple.

Suministros

Antes

comenzaremos, estas son las cosas que definitivamente necesitarás para construir un espejo como el mío. Estos suministros costarán entre 250 y 350 euros dependiendo de su región y los precios actuales.

Hardware

Sensores

  • Sensor de temperatura de un cable
  • RWCL 0516 (sensor de movimiento de microondas)
  • Potenciómetro suave (Touchstrip de Sparkfun)

Informática

y CI

  • Altavoz (3,2 W a 4 Ω O 1,8 W a 8 Ω)
  • MCP3008
  • Adaptador de amplificador Adafruit I2S 3W Clase D - MAX98357A
  • Frambuesa Pi 3 B +
  • Tarjeta SD (8GB está bien)
  • Resistencia 4.7K Ohm

Varios

  • Cables de puente
  • Tablero de circuitos
  • Espejo acrílico bidireccional (15% de transmisión de luz)
  • Monitor IPS (el tamaño depende del tamaño que desee)
  • cable HDMI
  • Madera

Software

  • Masilla
  • Editor de código (Notepad ++ es suficiente)
  • Generador de imágenes de disco Win32
  • Imagen del sistema operativo Raspbian

Paso 1: configuración

Para comenzar, primero necesitaremos configurar su Pi para el código que hice.

Necesitarás dos cosas:

  • Win32 Disk Imager de
  • Imagen del sistema operativo Raspbian de

Descarga el archivo ZIP y extráelo donde quieras.

La instalación

  1. Seleccione su imagen a través del icono de carpeta
  2. Seleccione su tarjeta SD a través del menú desplegable
  3. Haga clic en escribir

Ahora tendremos que hacer algunos ajustes adicionales con algunas configuraciones para poder acceder a la Pi.

  1. Vaya al directorio de inicio de la tarjeta SD
  2. Abra el archivo "cmdline.txt"
  3. Agregue ip = 169.254.10.1 al final de la línea larga de texto separada por un espacio (en la misma línea).
  4. Guarda el archivo.
  5. Cree un archivo llamado ssh sin extensión en el mismo directorio

Ahora puedes expulsar la tarjeta SD y ponerla en tu Pi.

Conectando

Ahora necesitaremos configurar el software.

Primero conecte un cable LAN, un extremo en su computadora de escritorio / computadora portátil y el otro en su Pi.

Ahora arranca la Raspberry Pi.

  1. Instale Putty desde
  2. Ingrese 169.254.10.1 en el cuadro IP.
  3. Asegúrese de que SSH esté seleccionado y el puerto 22 esté completo.
  4. Haga clic en abrir
  5. Complete el nombre de usuario: pi
  6. Complete la contraseña: frambuesa

Raspi-config

Abra la utilidad Raspi-config usando:

sudo raspi-config

Habilite las siguientes opciones en la categoría de interfaces

  • 1 hilo
  • SPI

Elija su país WiFi a través de la categoría de localización.

A continuación, desactive las siguientes opciones en la categoría de opciones de arranque

Pantalla de bienvenida

Por último, establezca la configuración de Escritorio / CLI en la categoría de opciones de arranque en Inicio de sesión automático de escritorio.

Wifi

Para el espejo, necesitamos tener una conexión wifi, así que asegúrese de tener sus credenciales wifi cerca.

Entrar en modo root

sudo -i

Pegue esta línea, pero asegúrese de que el SSID y la contraseña estén completos

wpa_passphrase "SSID" "CONTRASEÑA" >> /etc/wpa_supplicant/wpa_supplicant.conf

Ingrese al cliente WPA.

wpa_cli

Seleccione la interfaz

interfaz wlan0

Recargar la configuración

reconfigurar

Asegúrate de estar conectado correctamente escribiendo…

ip a

… Y ver si tienes una IP en las interfaces WLAN0.

Paquetes

Ahora que estamos conectados a Internet, tendremos que instalar algunos paquetes.

Primero, necesitaremos actualizar las listas de paquetes para obtener el último.

actualización de sudo apt

Pitón

Forzaremos a Raspbian a usar Python 3

alternativas de actualización --install / usr / bin / python python /usr/bin/python2.7 1

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

MariaDB

Pegue la siguiente línea para instalar la base de datos.

sudo apt install mariadb-server

Entonces necesitaremos asegurar nuestra instalación.

mysql_secure_installation

Nos pedirá la contraseña de root actual, ya que no tenemos una, solo presione enter.

A continuación, se pregunta si queremos una contraseña de root en y, ya que queremos una.

Para las siguientes preguntas, ingrese Y.

Por último, crearemos un usuario que podremos usar para el espejo.

Ingrese al shell mysql haciendo:

Elevarnos a la raíz

sudo -i

Ingrese al shell mysql

mysql

Reemplácelo con su propio nombre de usuario y lo mismo con

conceda todos los privilegios en el espejo. * a '' @ '%' identificado por '';

Ahora limpiamos la tabla de permisos.

PRIVILEGIOS DE FLUSH;

Servidor web Apache

Para instalar el servidor web, ejecute la línea siguiente.

sudo apt install apache2 -y

Paquetes de Python

Vamos a instalar estos paquetes.

  • Matraz
  • Matraz-Cors
  • Frasco-MySQL
  • Matraz-SocketIO
  • PyMySQL
  • Frasco-talismán
  • Gevent
  • Gevent-websocket
  • Google-api-python-client
  • Autenticación de Google
  • Google-auth-httplib2
  • Google-auth-oauthlib
  • Httplib2
  • Calendario
  • Icalevents
  • Oauthlib
  • Python-socketio
  • Peticiones
  • Wsaccel
  • Ujson

Haciendo

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 oauthlio python

Configuración de altavoces

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

Ahora tenemos que reiniciar, así que presione y.

Vuelva a ejecutar el guión

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

Ahora tenemos que reiniciar por segunda vez

sudo reiniciar

Monitor de pantalla)

Dependiendo de cómo desee la orientación de la pantalla, es posible que desee rotar la pantalla.

Para rotar la pantalla necesitamos acceder a las opciones de arranque haciendo:

sudo nano /boot/config.txt

Y luego pegar una de estas líneas en el archivo de configuración:

display_rotate = 0

display_rotate = 1

display_rotate = 2

display_rotate = 3

El primero, 0, es la configuración normal. 1 será 90 grados, 2 es 180 grados y el último será 270 grados.

Luego reinicia.

sudo reiniciar

Paso 2: instalación del espejo

Instalación del espejo
Instalación del espejo

Ahora configuraremos un lugar para descargar mi código.

cd / inicio / pi /

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

Ahora copiaremos algunas carpetas al destino correcto.

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

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

La instalación de la base de datos es un paso necesario para realizar el proyecto.

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

Paso 3: configuración

El archivo de configuración se encuentra en:

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

Ingrese el usuario y la contraseña de MYSQL.

Este debe ser el usuario de mysql que acabamos de crear.

Las otras configuraciones las repasaremos más adelante en este instructivo.

Paso 4: API

Ahora que hemos terminado la instalación de la Pi, cubriremos algunos temas que quizás desee hacer.

Cielo oscuro

Cree una clave API de Darsky a través de

Cuando se haya registrado, verá su clave API en el Panel de control.

Ingrese esta clave en el archivo de configuración del proyecto espejo que instaló antes.

El calendario

De forma predeterminada, solo podrá utilizar URL de ical para ver su calendario. Pero esta parte tratará de cómo vincular su espejo con el ecosistema de Google. Este es un proceso generalmente más largo y doloroso.

Cosas que definitivamente necesitarás

Un nombre de dominio

Estas son las cosas que configuraremos durante esta parte.

  • Cuenta CloudFlare
  • Cuenta de desarrollador de Google
  • Proyecto de desarrollador de Google
  • Configurar la API de calendario

Paso 5: el calendario

El calendario
El calendario
El calendario
El calendario

Cloudflare

Configure una cuenta de cloudflare desde https://cloudflare.com y siga el asistente para transferir su nombre de dominio al DNS de Cloudflare.

No es necesario que usted mismo cree un registro A que apunte al raspberry pi. Mi código Mirror lo hará por ti. Dado que en la mayoría de las redes Wi-Fi domésticas las IP no son estáticas, es posible que después de reiniciar ya no funcione. Para que mi código actualice automáticamente la IP, necesitará la clave API de su cuenta.

  1. Haga clic en el botón Obtenga su clave de API en el panel del lado derecho. [Foto 1]
  2. Desplácese hacia abajo y vea su clave API global. [Foto 2]

Ingrese esta clave en el archivo de configuración del proyecto espejo que instaló antes.

Creación de certificado SSL

Google requiere que tengamos una conexión SSL. Para comenzar esta sección, asegúrese de haber configurado correctamente el DNS de Cloudflare.

Primero agregue el repositorio.

sudo add-apt-repository ppa: certbot / certbot

Actualice la lista de paquetes.

sudo apt-get update

Instalar CertBot

sudo apt instalar python-certbot-apache

Inicie la creación del certificado. Nuevamente, deberá ingresar el nombre de dominio correcto.

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

Después de la creación, le preguntará si debe redirigir todas las conexiones a SSL. Elija redireccionar.

Ahora le dirá que ha creado con éxito un certificado para su dominio. Asegúrate de guardar las 2 rutas que te da.

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

Ahora vaya a la carpeta con los certificados a través de:

Asegúrese de cambiar example.com al host correcto.

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

Ahora copiemos esos contenidos en la carpeta de nuestro proyecto.

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

Y

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

Conecte Apache con su dominio

Para configurar Apache correctamente con su dominio, tendremos que crear un archivo de configuración. Asegúrese de ingresar su nombre de dominio, por ejemplo, funergydev.com.

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

Luego péguelo en el archivo. Reemplaza example.com con tu nombre de dominio.

Asegúrese de que su certificado y clave privada sean la ruta correcta. Configúrelos en la ruta que guardó anteriormente cuando creamos y luego a través de certbot.

DocumentRoot "/ var / www / html /" SSLEngine en SSLCertificateFile /home/pi/Mirror/resources/certs/cert.pem SSLCertificateKeyFile /home/pi/Mirror/resources/certs/privkey.pem # Otras directivas aquí Opciones Índices FollowSymLinks AllowOverride Todo requiere todo concedido

Ahora necesitamos habilitar algunas modificaciones y luego forzar a Apache a recargar la configuración haciendo:

sudo a2enmod ssl

sudo a2enmod reescribir

sudo systemctl recargar apache2

Ahora debería poder ir a través de su nombre de dominio a su pi y ver la página de apache predeterminada.

Paso 6: API de Google

API de Google
API de Google
API de Google
API de Google
API de Google
API de Google

Vaya a la consola del desarrollador a través de

Parte 1

Cree su primer proyecto haciendo clic junto al logotipo de la API de Google y haciendo clic en el botón NUEVO PROYECTO. Complete un nombre de proyecto apropiado y haga clic en el botón crear. [Foto1]

Parte 2

Ahora llegará a esta página. Haga clic en el botón de la biblioteca. [Foto2]

Esta es una gran lista de todas las API que podría usar, pero buscaremos la API de Google Calendar. Haga clic en él y presione ENABLE. [Foto3]

Luego, llegará a una descripción general de la API de calendario. Haga clic en el logotipo de las API de Google para volver a su proyecto. [Foto4]

Parte 3

Para configurar todo correctamente, haga clic en la categoría de credenciales y elija la pestaña Verificación de dominio.

Aquí tendrás que verificar tu nombre de dominio.

  1. Haga clic en AÑADIR DOMINIO.
  2. Complete su dominio
  3. Luego le pedirá que verifique su dominio. Haga clic en continuar.
  4. Elija su proveedor de nombre de dominio. [Foto5]
  5. Sigue el proceso
  6. Ahora podrá agregarlo a la Lista de verificación de dominio en la Consola API de Google de esta manera. Asegúrese de que su dominio esté marcado. [Foto6]

Parte 4

Ahora elija la pestaña de la pantalla de consentimiento de OAuth. [Foto7]

Complete el nombre de la aplicación

A continuación, agregaremos ámbitos a la pantalla de consentimiento. Esto significa que le preguntaremos al usuario en la pantalla de consentimiento si desea compartir la información de su calendario con el espejo.

  1. Haga clic en agregar alcance y busque calendario.
  2. Marque../auth/calendar.readonly y presione agregar. [Foto8]

Complete un dominio autorizado. Este debe ser el dominio que acaba de verificar. [Foto9]

Ahora haga clic en el gran botón Guardar debajo del formulario.

Parte 5

Por último, necesitamos crear las credenciales. Debido a que presionamos el botón Guardar, fuimos redirigidos a la pestaña de credenciales. Haga clic en crear credenciales y elija ID de cliente OAuth. [Foto10]

Elija Tipo de aplicación: Aplicación web y asígnele un nombre.

Ingrese el siguiente enlace en el URI de redireccionamiento autorizado y complete el dominio correcto.

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

Haga clic en crear. Esto le mostrará una ventana emergente, simplemente haga clic en Aceptar. Ahora presione el botón de descarga en las credenciales que acaba de crear

Parte 6

Ahora abra el archivo JSON y copie el contenido.

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

Pégalos aquí.

Parte 7

Ahora necesitamos definir nuestro dominio en la configuración haciendo:

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

Paso 7: el diseño del espejo

El diseño del espejo
El diseño del espejo
El diseño del espejo
El diseño del espejo
El diseño del espejo
El diseño del espejo
El diseño del espejo
El diseño del espejo

Diseñar tu espejo depende de cómo lo quieras. Realice mediciones precisas de la pantalla LCD y deje un espacio de 2 centímetros en un lado del espejo, ya que el sensor de movimiento de microondas estará allí. No puede estar detrás de ningún metal.

Conecté 4 tablas de madera juntas. Estos se fresaron para tener un frente limpio y agradable del espejo. En la parte superior también hice un par de agujeros para dejar pasar el sonido del altavoz. En el lado opuesto del espejo, la parte inferior, corté un pequeño rectángulo para poder hacer fácilmente el cableado eléctrico. [Foto1]

Se trata de 2 piezas de madera barata donde se apoyará el monitor. Como dije, necesitaríamos un espacio de 2 centímetros entre el espejo y la carcasa. También agregué 3 pequeños pedazos de madera y los atornillé en esos pedazos de descanso. Entonces el monitor permanecería en su lugar. [Foto2]

Al final se veía así. Tenía un espacio de aproximadamente 3 mm entre esas piezas de apoyo y el frente de la caja del espejo. Lo suficiente para poder colocar el espejo bidireccional de 3 mm de grosor. [Foto3]

Paso 8: cableado

Haciendo el cableado
Haciendo el cableado
Haciendo el cableado
Haciendo el cableado
Haciendo el cableado
Haciendo el cableado

Asegúrese de seguir correctamente uno de estos esquemas.

Una vez que hice el cableado, lo pegué en la parte posterior de la pantalla con cinta adhesiva de doble cara. Ya que si alguna vez quisiera desmontar el espejo y usarlo para otros proyectos, podría quitarlo fácilmente. Si está seguro, puede usar una pistola de pegamento caliente y pegarla a la parte posterior del espejo.

Paso 9: Iniciar el código

Iniciar el código
Iniciar el código
Iniciar el código
Iniciar el código
Iniciar el código
Iniciar el código

LXSession

Primero creemos un par de carpetas.

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

Ahora crearemos un archivo donde especificaremos un par de parámetros / comandos de inicio.

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

Pegue lo siguiente en el archivo.

@lxpanel --perfil 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

Actualizaremos la secuencia de comandos de la pantalla espejo de inicio para que coincida con nuestro host.

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

Elija localhost si no está utilizando el calendario de Google y un dominio.

#! / bin / bash

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

Si lo está utilizando, complete su host.

#! / bin / bash

sleep 15 chrome-browser --incognito --kiosk

Servicio

Ahora configuraremos que el código Mirror se ejecute automáticamente.

Crearemos un servicio que inicia automáticamente el código por nosotros.

Ir a:

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

Y pega esto en el archivo.

[Unidad]

Descripción = Mirror Backend Después de = network.target mariadb.service [Servicio] Tipo = simple Usuario = root ExecStart = / bin / sh /home/pi/Mirror/init.sh [Instalar] WantedBy = multi-user.target

Ahora tendremos que volver a cargar el demonio systemd haciendo:

sudo systemctl daemon-reload

Y también habilitaremos el servicio para que se inicie automáticamente al arrancar.

sudo systemctl habilitar espejo

Ahora apagaremos.

sudo poweroff

La configuración final

Finalmente, necesitamos eliminar nuestra IP APIPA para que solo funcione en WiFi.

  1. Vaya al directorio de inicio de la tarjeta SD en su PC.
  2. Abra el archivo "cmdline.txt"
  3. Quite ip = 169.254.10.1 al final de la línea larga de texto.

Paso 10: Ejecutar el espejo

Ejecutando el espejo
Ejecutando el espejo
Ejecutando el espejo
Ejecutando el espejo
Ejecutando el espejo
Ejecutando el espejo
Ejecutando el espejo
Ejecutando el espejo

Visite la IP que está en la pantalla espejo o si ha configurado el calendario de Google, complete el nombre de dominio.

¡Ahora podrás configurar tu espejo!

Si recibe un error de SSL en su espejo, es posible que desee agregar sus certificados al almacén de certificados de Chromium.

Recomendado: