Smart Mirror voor meerdere gebruikers met Google Agenda - Ajarnpa
Smart Mirror voor meerdere gebruikers met Google Agenda - Ajarnpa
Anonim
Slimme spiegel voor meerdere gebruikers met Google Agenda
Slimme spiegel voor meerdere gebruikers met Google Agenda
Slimme spiegel voor meerdere gebruikers met Google Agenda
Slimme spiegel voor meerdere gebruikers met Google Agenda

In deze instructable maken we een slimme spiegel die is geïntegreerd met Google Agenda. Ik heb dit project gemaakt omdat ik slimme spiegels echt gaaf vind, ze zijn een uitkomst in de ochtend. Maar ik besloot er zelf een te maken vanaf nul omdat alle anderen 1 fout hebben. Ze zijn te geavanceerd en rommelig. Ik besloot het simpel te houden.

Benodigdheden

Voordat

we beginnen, dit zijn de dingen die je zeker nodig hebt om een spiegel zoals de mijne te bouwen. Deze benodigdheden kosten ongeveer 250 tot 350 euro, afhankelijk van uw regio en de huidige prijzen.

Hardware

Sensoren

  • Een draad temperatuursensor
  • RWCL 0516 (Magnetron bewegingssensor)
  • Zachte potmeter (Touchstrip van Sparkfun)

computergebruik

en IC's

  • Luidspreker (3,2 W bij 4Ω OF 1,8 W bij 8Ω)
  • MCP3008
  • Adafruit I2S 3W Klasse D versterker Breakout - MAX98357A
  • Raspberry Pi 3 B+
  • SD-kaart (8GB is prima)
  • Weerstand 4.7K Ohm

Verscheidene

  • Doorverbindingsdraden
  • Breadboard
  • Acryl Bidirectionele Spiegel (15% Lichttransmissie)
  • IPS-monitor (grootte hangt af van hoe groot je hem wilt)
  • HDMI kabel
  • Hout

Software

  • Stopverf
  • Code-editor (Notepad++ is voldoende)
  • Win32 Schijfimager
  • Raspbian OS-afbeelding

Stap 1: Installatie

Om te beginnen, moeten we eerst je Pi instellen voor de code die ik heb gemaakt.

Je hebt twee dingen nodig:

  • Win32 Disk Imager van
  • Raspbian OS-afbeelding van

Download het ZIP-bestand en pak het uit waar u maar wilt.

De installatie

  1. Selecteer je afbeelding via het mappictogram
  2. Selecteer je SD-kaart via de dropdown
  3. Klik op schrijven

Nu moeten we wat extra sleutelen aan sommige instellingen, zodat we toegang hebben tot de Pi.

  1. Ga naar de opstartmap van de SD-kaart
  2. Open het bestand "cmdline.txt"
  3. Voeg ip=169.254.10.1 toe aan het einde van de lange tekstregel, gescheiden door een spatie (op dezelfde regel).
  4. Bewaar het bestand.
  5. Maak een bestand met de naam ssh zonder extensie in dezelfde map

Nu kunt u de SD-kaart uitwerpen en in uw Pi plaatsen.

Verbinden

Nu moeten we de software instellen.

Sluit eerst een LAN-kabel aan, het ene uiteinde in je desktop/laptop en het andere in je Pi.

Start nu de Raspberry Pi op.

  1. Installeer Putty van
  2. Voer 169.254.10.1 in het IP-vak in.
  3. Zorg ervoor dat SSH is geselecteerd en poort 22 is ingevuld.
  4. Klik op openen
  5. Vul de gebruikersnaam in: pi
  6. Vul het wachtwoord in: framboos

Raspi-config

Open het hulpprogramma Raspi-config met behulp van:

sudo raspi-config

Schakel de volgende opties in de categorie interfaces in:

  • 1-draads
  • SPI

Kies je wifi-land via de lokalisatiecategorie.

Schakel vervolgens de volgende opties uit in de categorie opstartopties:

Opstartscherm

Stel ten slotte de Desktop/CLI-instelling in de categorie opstartopties in op Desktop Autologin.

Wifi

Voor de spiegel hebben we een wifi-verbinding nodig, dus zorg ervoor dat je je wifi-inloggegevens bij de hand hebt.

Ga naar de root-modus

sudo -i

Plak deze regel, maar zorg ervoor dat de SSID en het wachtwoord beide zijn ingevuld

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

Voer de WPA-client in.

wpa_cli

Selecteer de interface

interface wlan0

Herlaad de configuratie

opnieuw configureren

Zorg ervoor dat u correct bent verbonden door te typen…

ip a

…en kijken of je een IP hebt op de WLAN0-interfaces.

Pakketjes

Nu we verbonden zijn met internet, moeten we enkele pakketten installeren.

Eerst moeten we de pakketlijsten vernieuwen voor de laatste.

sudo apt update

Python

We dwingen Raspbian om Python 3. te gebruiken

update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1

update-alternatives --install /usr/bin/python python /usr/bin/python3 2

MariaDB

Plak de volgende regel om de database te installeren.

sudo apt install mariadb-server

Dan moeten we onze installatie beveiligen.

mysql_secure_installation

Het zal ons om het huidige root-wachtwoord vragen, omdat we er geen hebben, druk gewoon op enter.

Vervolgens wordt gevraagd of we een root-wachtwoord willen typen in y, omdat we er een willen.

Voer voor de volgende vragen gewoon Y in.

Ten slotte zullen we een gebruiker maken die we voor de spiegel kunnen gebruiken.

Voer de mysql-shell in door te doen:

Verheffen onszelf tot wortel

sudo -i

Voer de mysql-shell in

mysql

Vervang door uw eigen gebruikersnaam en hetzelfde met

verleen alle privileges op mirror.* aan ''@'%' geïdentificeerd door '';

Nu spoelen we de machtigingentabel door.

SPOEL VOORRECHTEN;

Apache-webserver

Voer de onderstaande regel uit om de webserver te installeren.

sudo apt installeer apache2 -y

Python-pakketten

We gaan deze pakketten installeren

  • Kolf
  • Kolf-Cors
  • Kolf-MySQL
  • Kolf-SocketIO
  • PyMySQL
  • Kolf-talisman
  • Gent
  • Gevent-websocket
  • Google-api-python-client
  • Google-authenticatie
  • Google-auth-httplib2
  • Google-auth-oauthlib
  • Httplib2
  • Icalendar
  • Icalevents
  • Oauthlib
  • Python-socketio
  • Verzoeken
  • Wsaccel
  • Ujson

Door te doen

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 icalevents u oauthsj verzoeken

Luidsprekeropstelling

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

Nu moeten we opnieuw opstarten, dus druk op y.

Voer het script opnieuw uit

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

Nu moeten we een tweede keer opnieuw opstarten

sudo reboot

Scherm (monitor)

Afhankelijk van hoe je de oriëntatie van je scherm wilt, kun je het scherm misschien roteren.

Om het scherm te draaien, moeten we toegang krijgen tot de opstartopties door te doen:

sudo nano /boot/config.txt

En plak dan een van deze regels in het configuratiebestand:

display_rotate=0

display_rotate=1

display_rotate=2

display_rotate=3

De eerste, 0, is de normale configuratie. 1 Zal 90 graden zijn, 2 is 180 graden en de laatste zal 270 graden zijn.

Start vervolgens opnieuw op.

sudo reboot

Stap 2: De spiegel installeren

De spiegel installeren
De spiegel installeren

Nu gaan we een plek opzetten om mijn code te downloaden.

cd /home/pi/

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

Nu zullen we enkele mappen naar de juiste bestemming kopiëren

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

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

Het installeren van de database is een noodzakelijke stap bij het maken van het project.

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

Stap 3: Configuratie

Het configuratiebestand bevindt zich op:

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

Voer de MYSQL-gebruiker en het wachtwoord in.

Dit moet de mysql-gebruiker zijn die we zojuist hebben gemaakt.

De andere instellingen zullen we later in dit instructable bespreken.

Stap 4: API's

Nu we de installatie van de Pi hebben voltooid, zullen we enkele onderwerpen behandelen die u misschien wilt doen.

Donkere lucht

Maak een Darsky API-sleutel aan via

Wanneer u zich heeft geregistreerd, ziet u uw API-sleutel op het Dashboard.

Voer deze sleutel in het configuratiebestand van het spiegelproject dat u eerder hebt geïnstalleerd.

De kalender

Standaard kunt u alleen ical urls gebruiken om uw agenda van te bekijken. Maar dit deel gaat over hoe u uw spiegel kunt koppelen aan het Google-ecosysteem. Dit is een over het algemeen langer en pijnlijker proces.

Dingen die je zeker nodig hebt

Een domeinnaam

Dit zijn de dingen die we zullen instellen tijdens dit deel

  • CloudFlare-account
  • Google-ontwikkelaarsaccount
  • Google-ontwikkelaarsproject
  • De Agenda-API instellen

Stap 5: De kalender

De kalender
De kalender
De kalender
De kalender

Cloudflare

Stel een cloudflare-account in via https://cloudflare.com en volg de wizard om je domeinnaam over te zetten naar Cloudflare DNS.

Het is niet nodig om zelf een A-record te maken dat naar de Raspberry Pi verwijst. Mijn Mirror-code doet dat voor je. Omdat in de meeste huishoudelijke wifi de IP's niet statisch zijn, werkt het mogelijk niet meer na het opnieuw opstarten. Om ervoor te zorgen dat mijn code het ip automatisch bijwerkt, heeft het de API-sleutel van uw account nodig.

  1. Klik op de knop Uw API-sleutel ophalen op het dashboard aan de rechterkant. [Foto 1]
  2. Scroll naar beneden en bekijk uw Global API key. [Foto 2]

Voer deze sleutel in het configuratiebestand van het spiegelproject dat u eerder hebt geïnstalleerd.

SSL-certificaat maken

Google vereist dat we een SSL-verbinding hebben. Om deze sectie te starten, moet u ervoor zorgen dat u de Cloudflare DNS correct hebt ingesteld.

Voeg eerst de repository toe.

sudo add-apt-repository ppa:certbot/certbot

Werk de pakketlijst bij.

sudo apt-get update

CertBot installeren

sudo apt install python-certbot-apache

Start het maken van het certificaat. Ook hier dient u de juiste domeinnaam in te vullen.

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

Na de creatie zal het u vragen of het alle verbindingen naar SSL moet omleiden. Kies omleiden.

Nu zal het u vertellen dat het met succes een certificaat voor uw domein heeft gemaakt. Zorg ervoor dat u de 2 paden opslaat die het u geeft.

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

Ga nu naar de map met de certificaten in via:

Zorg ervoor dat u example.com naar de juiste host wijzigt.

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

Laten we die inhoud nu naar onze projectmap kopiëren.

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

En

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

Verbind Apache met uw domein

Om Apache correct te configureren met uw domein, moeten we een configuratiebestand maken. Zorg ervoor dat u uw domeinnaam invult, bijvoorbeeld funergydev.com.

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

Plak deze dan in het bestand. Vervang voorbeeld.com door uw domeinnaam.

Zorg ervoor dat uw certificaat en privésleutel het juiste pad zijn. Stel ze in op het pad dat u eerder hebt opgeslagen toen we ze vervolgens via certbot maakten.

DocumentRoot "/var/www/html/" SSLEngine op SSLCertificateFile /home/pi/Mirror/resources/certs/cert.pem SSLCertificateKeyFile /home/pi/Mirror/resources/certs/privkey.pem # Andere richtlijnen hier Opties Indexen FollowSymLinks AllowOverride Alle Vereisen dat alles is toegestaan

Nu moeten we enkele wijzigingen inschakelen en Apache dwingen om de configuratie opnieuw te laden door te doen:

sudo a2enmod ssl

sudo a2enmod herschrijven

sudo systemctl herlaad apache2

Nu zou je via je domeinnaam naar je pi moeten kunnen gaan en de standaard apache-pagina zien.

Stap 6: Google-API

Google-API
Google-API
Google-API
Google-API
Google-API
Google-API

Ga naar de ontwikkelaarsconsole via

Deel 1

Maak uw eerste project door naast het Google API-logo te klikken en op de knop NIEUW PROJECT te klikken. Vul een geschikte projectnaam in en klik op de knop Aanmaken. [Foto1]

Deel 2

Nu kom je op deze pagina. Klik op de bibliotheekknop. [Foto2]

Dit is een grote lijst van alle API's die je zou kunnen gebruiken, maar we zullen zoeken naar de Google Calendar API. Klik erop en druk op INSCHAKELEN. [Foto3]

Je komt dan in een overzicht van de Calendar API. Klik op het Google API's-logo om terug te gaan naar uw project. [Foto4]

Deel 3

Om alles correct in te stellen, klikt u op de categorie inloggegevens en kiest u het tabblad Domeinverificatie.

Hier moet u uw domeinnaam verifiëren.

  1. Klik op DOMEIN TOEVOEGEN
  2. Vul uw domein in
  3. Vervolgens wordt gevraagd om uw domein te verifiëren. Klik op doorgaan.
  4. Kies uw domeinnaamprovider. [Foto5]
  5. Volg het proces
  6. Nu kunt u het op deze manier toevoegen aan de domeinverificatielijst in de Google API Console. Zorg ervoor dat uw domein is aangevinkt. [Foto6]

Deel 4

Kies nu het tabblad OAuth-toestemmingsscherm. [Foto7]

Vul de naam van de toepassing in

Vervolgens voegen we scopes toe aan het toestemmingsscherm. Dit betekent dat we de gebruiker op het toestemmingsscherm zullen vragen of ze hun agenda-informatie met de mirror willen delen.

  1. Klik op bereik toevoegen en zoek naar agenda.
  2. Controleer../auth/calendar.readonly en druk op toevoegen. [Foto8]

Vul een geautoriseerd domein in. Dit zou het domein moeten zijn dat u zojuist heeft geverifieerd. [Foto9]

Klik nu op de grote knop Opslaan onder het formulier.

Deel 5

Ten slotte moeten we de inloggegevens maken. Omdat we op de knop Opslaan drukten, werden we doorgestuurd naar het tabblad met inloggegevens. Klik op inloggegevens maken en kies OAuth-client-ID. [Foto10]

Kies Applicatietype: Webapplicatie en geef het een naam.

Voer de volgende link in de Authorized Redirect URI's in en vul het juiste domein in.

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

Klik op maken. Dit toont u een pop-up, klik gewoon op OK. Druk nu op de downloadknop op de inloggegevens die u zojuist hebt gemaakt

Deel 6

Open nu het JSON-bestand en kopieer de inhoud.

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

Plak ze hier.

Deel 7

Nu moeten we ons domein in de configuratie definiëren door te doen:

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

Stap 7: Het spiegelontwerp

Het spiegelontwerp
Het spiegelontwerp
Het spiegelontwerp
Het spiegelontwerp
Het spiegelontwerp
Het spiegelontwerp
Het spiegelontwerp
Het spiegelontwerp

Het ontwerpen van uw spiegel hangt af van hoe u het wilt. Voer nauwkeurige metingen uit van het LCD-scherm en laat een opening van 2 centimeter aan één kant van de spiegel, aangezien de microgolfbewegingssensor daar zal zitten. Het kan niet achter metaal zitten.

Ik heb 4 planken van hout aan elkaar verbonden. Deze werden gefreesd om een mooie schone voorkant van de spiegel te hebben. Aan de bovenkant heb ik ook een paar gaten geboord om het geluid van de luidspreker door te laten. De andere kant van de spiegel, de onderkant, sneed ik een kleine rechthoek zodat ik gemakkelijk de elektrische bedrading kon doen. [Foto1]

Dit zijn 2 stukken goedkoop hout waar de monitor op zal rusten. Omdat ik zei dat we een opening van ongeveer 2 centimeter nodig hadden tussen de spiegel en de behuizing. Ik voegde ook 3 kleine stukjes hout toe en schroefde ze op die rustende stukken. Dus de monitor zou op zijn plaats blijven. [Foto2]

Uiteindelijk zag het er zo uit. Ik had een opening van ongeveer 3 mm tussen die rustende stukken en de voorkant van de spiegelkast. Net genoeg zodat ik de 3 mm dikke bidirectionele spiegel erin kon plaatsen. [Foto3]

Stap 8: De bedrading doen

De bedrading doen
De bedrading doen
De bedrading doen
De bedrading doen
De bedrading doen
De bedrading doen

Zorg ervoor dat u een van deze schema's goed volgt.

Nadat ik de bedrading had gedaan, heb ik deze met dubbelzijdig plakband op de achterkant van het scherm geplakt. Want als ik de spiegel ooit zou willen demonteren en voor andere projecten gebruiken, zou ik hem gemakkelijk kunnen verwijderen. Als je zeker bent, kun je een heet lijmpistool gebruiken en dit op de achterkant van de spiegel lijmen.

Stap 9: De code starten

De code starten
De code starten
De code starten
De code starten
De code starten
De code starten

LXSession

Laten we eerst een paar mappen maken

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

Nu zullen we een bestand maken waarin we een aantal opstartparameters/commando's zullen specificeren.

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

Plak het volgende in het bestand.

@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

We zullen het startspiegelschermscript bijwerken zodat het overeenkomt met onze host.

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

Kies localhost als u geen Google Calendar en een domein gebruikt.

#!/bin/bash

slaap 15 chromium-browser --incognito --kiosk

Als je het gebruikt, vul dan je host in.

#!/bin/bash

slaap 15 chroom-browser --incognito --kiosk

Onderhoud

Nu gaan we instellen dat de Mirror-code automatisch wordt uitgevoerd.

We gaan een service maken die de code automatisch voor ons start.

Ga naar:

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

En plak dit in het bestand

[Eenheid]

Description=Mirror Backend After=network.target mariadb.service [Service] Type=simple User=root ExecStart=/bin/sh /home/pi/Mirror/init.sh [Install] WantedBy=multi-user.target

Nu moeten we de systemd-daemon opnieuw laden door te doen:

sudo systemctl daemon-reload

En we zullen de service ook inschakelen om automatisch te starten bij het opstarten.

sudo systemctl spiegel inschakelen

Nu gaan we uit.

sudo poweroff

De laatste instellingen

Ten slotte moeten we onze APIPA-ip verwijderen, zodat deze alleen op wifi werkt.

  1. Ga naar de opstartmap van de SD-kaart op uw pc.
  2. Open het bestand "cmdline.txt"
  3. Verwijder ip=169.254.10.1 Aan het einde van de lange regel tekst.

Stap 10: De spiegel draaien

De spiegel laten lopen
De spiegel laten lopen
De spiegel laten lopen
De spiegel laten lopen
De spiegel laten lopen
De spiegel laten lopen
De spiegel laten lopen
De spiegel laten lopen

Bezoek het ip dat op het spiegelscherm staat of vul de domeinnaam in als je de google agenda hebt ingesteld.

Nu kunt u uw spiegel instellen!

Als je een SSL-fout op je mirror krijgt, wil je misschien je certificaten toevoegen aan het Chromium-certificaatarchief.

Aanbevolen: