Cuprins:

Oglindă inteligentă multi-utilizator cu Google Calendar: 10 pași
Oglindă inteligentă multi-utilizator cu Google Calendar: 10 pași

Video: Oglindă inteligentă multi-utilizator cu Google Calendar: 10 pași

Video: Oglindă inteligentă multi-utilizator cu Google Calendar: 10 pași
Video: Cum Google Workspace protejează utilizatorii de amenințările cibernetice? 2024, Noiembrie
Anonim
Oglindă inteligentă multi-utilizator cu Google Calendar
Oglindă inteligentă multi-utilizator cu Google Calendar
Oglindă inteligentă multi-utilizator cu Google Calendar
Oglindă inteligentă multi-utilizator cu Google Calendar

În acest instructable vom crea o oglindă inteligentă integrată cu Google Calendar. Am făcut acest proiect pentru că mi se par foarte frumoase oglinzile inteligente, dimineața sunt un dar de la Dumnezeu. Dar am decis să fac unul singur de la zero pentru că toate celelalte au un defect. Sunt prea avansați și aglomerați. Am decis să păstrez acest lucru simplu.

Provizii

Inainte de

vom începe acestea sunt lucrurile de care cu siguranță veți avea nevoie pentru a construi o oglindă ca a mea. Aceste consumabile vor costa în jur de 250-350 de euro, în funcție de regiune și de prețurile curente.

Hardware

Senzori

  • Senzor de temperatură cu un fir
  • RWCL 0516 (senzor de mișcare cu microunde)
  • Potențiometru moale (Touchstrip de la Sparkfun)

Tehnica de calcul

și IC’s

  • Difuzor (3,2W la 4Ω SAU 1,8W la 8Ω)
  • MCP3008
  • Adafruit I2S 3W Clasa D Amplificator Breakout - MAX98357A
  • Raspberry Pi 3 B +
  • Card SD (8 GB este bine)
  • Rezistor 4.7K Ohm

Variat

  • Jumperwires
  • Pană de pâine
  • Oglindă acrilică bidirecțională (15% transmisie de lumină)
  • Monitor IPS (dimensiunea depinde de cât de mare îl doriți)
  • Cablu HDMI
  • Lemn

Software

  • MASTIC
  • Editor de cod (Notepad ++ este suficient)
  • Win32 Disk Imager
  • Imagine Raspbian OS

Pasul 1: Configurare

Pentru a începe, va trebui mai întâi să vă configurăm Pi-ul pentru codul pe care l-am creat.

Veți avea nevoie de două lucruri:

  • Win32 Disk Imager de la
  • Imagine Raspbian OS de la

Descărcați fișierul ZIP și extrageți-l oriunde doriți.

Instalatia

  1. Selectați imaginea dvs. prin pictograma dosar
  2. Selectați cardul SD prin meniul derulant
  3. Faceți clic pe scrie

Acum va trebui să facem câteva modificări suplimentare cu unele setări, astfel încât să putem accesa Pi.

  1. Accesați directorul de pornire al cardului SD
  2. Deschideți fișierul „cmdline.txt”
  3. Adăugați ip = 169.254.10.1 La sfârșitul liniei lungi de text separate cu un spațiu (pe aceeași linie).
  4. Salvați fișierul.
  5. Creați un fișier numit ssh fără nicio extensie în același director

Acum puteți scoate cardul SD și îl puteți pune în Pi.

Conectarea

Acum va trebui să configurăm software-ul.

Conectați mai întâi un cablu LAN, un capăt în desktop / laptop și celălalt în Pi.

Acum porniți Raspberry Pi.

  1. Instalați Putty de pe
  2. Introduceți 169.254.10.1 în caseta IP.
  3. Asigurați-vă că este selectat SSH și că portul 22 este completat.
  4. Faceți clic pe Deschidere
  5. Completați numele de utilizator: pi
  6. Completați parola: zmeură

Raspi-config

Deschideți utilitarul Raspi-config utilizând:

sudo raspi-config

Activați următoarele opțiuni în categoria interfețe

  • 1-fir
  • SPI

Alegeți țara dvs. WiFi prin categoria de localizare.

Apoi, dezactivați următoarele opțiuni din categoria opțiuni de încărcare

Ecran splash

În cele din urmă, setați setarea Desktop / CLI din categoria de opțiuni de încărcare la Desktop Autologin.

Wifi

Pentru oglindă trebuie să avem o conexiune wifi, deci asigurați-vă că aveți acreditările dvs. wifi aproape.

Accesați modul root

sudo -i

Lipiți această linie, dar asigurați-vă că SSID și parola sunt completate ambele

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

Introduceți clientul WPA.

wpa_cli

Selectați interfața

interfață wlan0

Reîncărcați config

reconfigura

Asigurați-vă că sunteți conectat corect tastând …

ip a

… Și văd dacă aveți un IP pe interfețele WLAN0.

Pachete

Acum că suntem conectați la internet va trebui să instalăm câteva pachete.

Mai întâi va trebui să reîmprospătăm listele de pachete pentru cea mai recentă.

actualizare sudo apt

Piton

Vom forța Raspbian să folosească Python 3

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

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

MariaDB

Lipiți următoarea linie pentru a instala baza de date.

sudo apt instalați mariadb-server

Apoi va trebui să ne asigurăm instalarea.

mysql_secure_installation

Ne va cere parola curentă de root, deoarece nu avem una, doar apăsați Enter.

Apoi se întreabă dacă vrem o parolă de tip root în y, deoarece vrem una.

Pentru următoarele întrebări, introduceți doar Y.

În cele din urmă, vom crea un utilizator pe care îl vom putea folosi pentru oglindă.

Introduceți shell-ul mysql făcând:

Ridicați-ne la rădăcină

sudo -i

Introduceți shell-ul mysql

mysql

Înlocuiți cu propriul dvs. nume de utilizator și la fel cu

acordă toate privilegiile pe oglindă. * către '' @ '%' identificat prin '';

Acum eliminăm tabelul de permisiuni.

PRIVILEGII DE FLUSH;

Apache Webserver

Pentru a instala Webserver rulați linia de mai jos.

sudo apt instalează apache2 -y

Pachete Python

Vom instala aceste pachete

  • Balon
  • Flask-Cors
  • Flask-MySQL
  • Flask-SocketIO
  • PyMySQL
  • Balon-talisman
  • Gevent
  • Gevent-websocket
  • Google-api-python-client
  • Google-auth
  • Google-auth-httplib2
  • Google-auth-oauthlib
  • Httplib2
  • Icalendar
  • Icalevents
  • Oauthlib
  • Python-socketio
  • Cereri
  • Wsaccel
  • Ujson

Facand

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 requests wsaccel uj

Configurarea difuzoarelor

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

Acum trebuie să repornim, așa că apăsați pe y.

Executați din nou scenariul

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

Acum trebuie să repornim a doua oară

sudo reboot

Ecran (monitor)

În funcție de modul în care doriți orientarea ecranului, poate doriți să rotiți ecranul.

Pentru rotirea ecranului, trebuie să accesăm opțiunile de pornire procedând astfel:

sudo nano /boot/config.txt

Și apoi lipiți una dintre aceste linii în fișierul de configurare:

display_rotate = 0

display_rotate = 1

display_rotate = 2

display_rotate = 3

Primul, 0, este configurația normală. 1 Va fi de 90 de grade, 2 sunt de 180 de grade și ultimul va fi de 270 de grade.

Apoi reporniți.

sudo reboot

Pasul 2: Instalarea oglinzii

Instalarea oglinzii
Instalarea oglinzii

Acum vom configura un loc pentru descărcarea codului meu.

cd / home / pi /

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

Acum vom copia câteva dosare la destinația corectă

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

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

Instalarea bazei de date este un pas necesar în realizarea proiectului.

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

Pasul 3: Configurare

Fișierul de configurare se află la:

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

Introduceți utilizatorul și parola MYSQL.

Acesta trebuie să fie utilizatorul mysql pe care tocmai l-am făcut.

Celelalte setări le vom trece mai târziu la această instrucțiune.

Pasul 4: API-uri

Acum am terminat instalarea Pi, vom acoperi câteva subiecte pe care poate doriți să le faceți.

Cer intunecat

Creați o cheie API Darsky prin

După ce vă înregistrați, veți vedea cheia API pe tabloul de bord.

Introduceți această cheie în fișierul de configurare al proiectului oglindă instalat anterior.

Calendarul

În mod implicit, veți putea utiliza numai adrese URL ical pentru a vă vizualiza calendarul. Dar această parte va fi despre cum să vă legați oglinda de Google Ecosystem. Acesta este un proces în general mai lung și mai dureros.

Lucruri cu siguranță de care ai nevoie

Un nume de domeniu

Acestea sunt lucrurile pe care le vom configura în timpul acestei părți

  • Cont CloudFlare
  • Cont de dezvoltator Google
  • Google Developer Project
  • Configurați API-ul Calendar

Pasul 5: Calendarul

Calendarul
Calendarul
Calendarul
Calendarul

Cloudflare

Configurați un cont cloudflare de pe https://cloudflare.com și urmați expertul pentru a transfera numele dvs. de domeniu la Cloudflare DNS.

Nu este nevoie să creați singur o înregistrare A care să indice zmeura pi. Codul meu Mirror va face asta pentru dvs. Deoarece în majoritatea rețelelor Wi-Fi de uz casnic IP-urile nu sunt statice, deci după repornire este posibil să nu mai funcționeze. Pentru ca codul meu să actualizeze automat IP-ul, va fi nevoie de cheia API a contului dvs.

  1. Faceți clic pe butonul Obțineți cheia API pe tabloul de bord din partea dreaptă. [Foto 1]
  2. Derulați în jos și vizualizați cheia API globală. [Foto 2]

Introduceți această cheie în fișierul de configurare al proiectului oglindă instalat anterior.

Crearea certificatului SSL

Google ne cere să avem o conexiune SSL. Pentru a porni această secțiune, asigurați-vă că ați configurat corect Cloudflare DNS.

Mai întâi adăugați depozitul.

sudo add-apt-repository ppa: certbot / certbot

Actualizați lista de pachete.

sudo apt-get update

Instalați CertBot

sudo apt instalează python-certbot-apache

Porniți crearea certificatului. Din nou, va trebui să completați numele de domeniu corect.

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

După creație, vă va întreba dacă ar trebui să redirecționeze toate conexiunile către SSL. Alegeți redirecționarea.

Acum vă va spune că a creat cu succes un certificat pentru domeniul dvs. Asigurați-vă că salvați cele 2 căi pe care vi le oferă.

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

Acum accesați dosarul cu certificatele prin:

Asigurați-vă că schimbați example.com la gazda potrivită.

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

Acum, să copiem conținutul respectiv în folderul nostru de proiect.

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

Și

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

Conectați Apache cu domeniul dvs.

Pentru a configura Apache corect cu domeniul dvs. va trebui să creăm un fișier de configurare. Asigurați-vă că completați numele domeniului dvs., de exemplu funergydev.com.

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

Apoi lipiți acest lucru în fișier. Înlocuiți example.com cu numele dvs. de domeniu.

Asigurați-vă că certificatul și cheia privată sunt calea corectă. Setați-le pe calea pe care ați salvat-o mai devreme când am creat apoi prin certbot.

DocumentRoot "/ var / www / html /" SSLEngine on SSLCertificateFile /home/pi/Mirror/resources/certs/cert.pem SSLCertificateKeyFile /home/pi/Mirror/resources/certs/privkey.pem # Alte directive aici Opțiuni Index FollowSymLinks AllowOverride Toate necesită toate acordate

Acum trebuie să activăm unele modificări și apoi să forțăm Apache să reîncarce configul făcând:

sudo a2enmod ssl

sudo a2enmod rewrite

sudo systemctl reîncarcă apache2

Acum ar trebui să puteți merge prin numele dvs. de domeniu la pi și să vedeți pagina implicită apache.

Pasul 6: API Google

API Google
API Google
API Google
API Google
API Google
API Google

Accesați consola pentru dezvoltatori prin

Partea 1

Creați primul dvs. proiect făcând clic lângă sigla Google API și făcând clic pe butonul NOU PROIECT. Completați un nume de proiect adecvat și faceți clic pe butonul de creare. [Foto1]

Partea 2

Acum veți ajunge la această pagină. Faceți clic pe butonul bibliotecă. [Foto2]

Aceasta este o listă mare cu toate API-urile pe care le-ați putea folosi, dar vom căuta API-ul Google Calendar. Faceți clic pe el și apăsați ENABLE. [Foto3]

Veți ajunge apoi la o prezentare generală a API-ului Calendar. Faceți clic pe sigla API-urilor Google pentru a reveni la proiectul dvs. [Foto4]

Partea 3

Pentru a configura totul corect, faceți clic pe categoria acreditări și alegeți fila Verificare domeniu.

Aici va trebui să vă verificați numele de domeniu.

  1. Faceți clic pe ADĂUGARE DOMENIU
  2. Completați domeniul dvs.
  3. Apoi va cere să vă confirmați domeniul. Faceți clic pe Continuați.
  4. Alegeți furnizorul dvs. de nume de domeniu. [Foto5]
  5. Urmați procesul
  6. Acum îl veți putea adăuga în lista de verificare a domeniului de pe consola Google API astfel. Asigurați-vă că domeniul dvs. este verificat. [Foto6]

Partea 4

Acum alegeți fila ecranului de consimțământ OAuth. [Foto7]

Completați numele aplicației

În continuare vom adăuga scopuri pe ecranul de consimțământ. Aceasta înseamnă că vom întreba utilizatorul pe ecranul de consimțământ dacă dorește să împărtășească informațiile despre calendar cu oglinda.

  1. Faceți clic pe adăugați domeniul de aplicare și căutați calendarul.
  2. Verificați../auth/calendar.readonly și apăsați adăugare. [Foto8]

Completați un domeniu autorizat. Acesta ar trebui să fie domeniul pe care tocmai l-ați verificat. [Foto9]

Acum faceți clic pe butonul mare de salvare de sub formular.

Partea 5

În cele din urmă, trebuie să creăm acreditările. Deoarece am apăsat butonul de salvare am fost redirecționați la fila acreditări. Faceți clic pe creați acreditări și alegeți ID client OAuth. [Foto10]

Alegeți Tip aplicație: Aplicație Web și dați-i un nume.

Introduceți următorul link în URI-urile de redirecționare autorizate și completați domeniul corect.

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

Faceți clic pe creați. Acest lucru vă va afișa un popup, faceți clic pe OK. Acum apăsați butonul de descărcare pe acreditările pe care tocmai le-ați făcut

Partea 6

Acum deschideți fișierul JSON și copiați conținutul.

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

Inserați-le aici.

Partea 7

Acum trebuie să ne definim domeniul în config făcând:

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

Pasul 7: Proiectarea oglinzii

Designul oglinzii
Designul oglinzii
Designul oglinzii
Designul oglinzii
Designul oglinzii
Designul oglinzii
Designul oglinzii
Designul oglinzii

Proiectarea oglinzii dvs. depinde de modul în care doriți. Faceți măsurători precise ale ecranului LCD și lăsați un spațiu de 2 centimetri pe o parte a oglinzii, deoarece senzorul de mișcare al microundelor va sta acolo. Nu poate fi în spatele niciunui metal.

Am conectat 4 scânduri de lemn împreună. Acestea au fost măcinate pentru a avea o față frumoasă și curată a oglinzii. În partea de sus, am făcut și câteva găuri pentru a lăsa sunetul difuzorului să treacă. Partea opusă a oglinzii, partea de jos, am tăiat un mic dreptunghi, astfel încât să pot face cu ușurință cablajul electric. [Foto1]

Acestea sunt 2 bucăți de lemn ieftin pe care monitorul se va bucura. Din moment ce am spus că vom avea nevoie de un spațiu de 2 centimetri între oglindă și carcasă. Am adăugat și 3 bucăți mici de lemn și le-am înșurubat pe acele bucăți de odihnă. Deci monitorul ar rămâne la locul său. [Foto2]

Până la urmă a arătat așa. Am avut o distanță de aproximativ 3 mm între acele piese de odihnă și partea din față a carcasei oglinzii. Suficient pentru a putea pune oglinda bidirecțională de 3 mm grosime. [Foto3]

Pasul 8: Efectuarea cablării

Efectuarea cablajului
Efectuarea cablajului
Efectuarea cablajului
Efectuarea cablajului
Efectuarea cablajului
Efectuarea cablajului

Asigurați-vă că urmați corect una dintre aceste scheme.

Odată ce am făcut cablajul, l-am lipit pe spatele ecranului cu bandă dublă. De vreme ce, dacă aș vrea vreodată să demontez oglinda și să o folosesc pentru alte proiecte, aș putea să o îndepărtez cu ușurință. Dacă sunteți sigur că puteți folosi un pistol de lipit fierbinte și îl puteți lipi pe spatele oglinzii.

Pasul 9: Pornirea codului

Pornirea Codului
Pornirea Codului
Pornirea Codului
Pornirea Codului
Pornirea Codului
Pornirea Codului

LXSession

Să creăm mai întâi câteva foldere

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

Acum vom crea un fișier în care vom specifica câțiva parametri / comenzi de pornire.

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

Lipiți următoarele în fișier.

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

Vom actualiza scriptul ecranului de pornire oglindă pentru a se potrivi cu gazda noastră.

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

Alegeți localhost dacă nu utilizați Google Calendar și un domeniu.

#! / bin / bash

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

Dacă îl utilizați, completați gazda.

#! / bin / bash

dormi 15 browser cu crom - incognito --kiosk

Serviciu

Acum vom configura că codul Mirror rulează automat.

Vom crea un serviciu care pornește automat codul pentru noi.

Mergi la:

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

Și lipiți acest lucru în fișier

[Unitate]

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

Acum va trebui să reîncărcăm demonul systemd procedând astfel:

sudo systemctl daemon-reload

Și vom permite, de asemenea, serviciul să pornească automat la pornire.

sudo systemctl activate mirror

Acum vom opri.

sudo poweroff

Setările finale

În cele din urmă, trebuie să ne eliminăm ip-ul APIPA, astfel încât să funcționeze doar pe WiFi.

  1. Accesați directorul de pornire al cardului SD de pe computer.
  2. Deschideți fișierul „cmdline.txt”
  3. Eliminați ip = 169.254.10.1 La sfârșitul liniei lungi de text.

Pasul 10: Rularea oglinzii

Rularea oglinzii
Rularea oglinzii
Rularea oglinzii
Rularea oglinzii
Rularea oglinzii
Rularea oglinzii
Rularea oglinzii
Rularea oglinzii

Accesați ip-ul care apare pe ecranul oglindă sau, dacă ați configurat calendarul Google, completați numele domeniului.

Acum veți putea să vă configurați oglinda!

Dacă primiți o eroare SSL pe oglindă, vă recomandăm să adăugați certificatele dvs. în magazinul de certificate Chromium.

Recomandat: