Spisu treści:

Inteligentne lustro dla wielu użytkowników z kalendarzem Google: 10 kroków
Inteligentne lustro dla wielu użytkowników z kalendarzem Google: 10 kroków

Wideo: Inteligentne lustro dla wielu użytkowników z kalendarzem Google: 10 kroków

Wideo: Inteligentne lustro dla wielu użytkowników z kalendarzem Google: 10 kroków
Wideo: Home Assistant - Integracja Kalendarza Google 2024, Listopad
Anonim
Inteligentne lustro dla wielu użytkowników z kalendarzem Google
Inteligentne lustro dla wielu użytkowników z kalendarzem Google
Inteligentne lustro dla wielu użytkowników z kalendarzem Google
Inteligentne lustro dla wielu użytkowników z kalendarzem Google

W tej instrukcji będziemy tworzyć inteligentne lustro zintegrowane z Kalendarzem Google. Zrobiłem ten projekt, ponieważ uważam, że inteligentne lustra są naprawdę fajne, rano są darem niebios. Ale postanowiłem zrobić jeden od zera, bo wszystkie inne mają 1 wadę. Są zbyt zaawansowane i zagracone. Postanowiłem to uprościć.

Kieszonkowe dzieci

Przed

zaczniemy od tych rzeczy, których na pewno będziesz potrzebować do zbudowania lustra takiego jak moje. Dostawy te będą kosztować około 250 do 350 euro w zależności od regionu i aktualnych cen.

Sprzęt komputerowy

Czujniki

  • Czujnik temperatury z jednym przewodem
  • RWCL 0516 (mikrofalowy czujnik ruchu)
  • Potencjometr miękki (pasek dotykowy firmy Sparkfun)

Przetwarzanie danych

i IC

  • Głośnik (3,2 W przy 4 Ω LUB 1,8 W przy 8 Ω)
  • MCP3008
  • Adafruit I2S 3W wzmacniacz klasy D Breakout - MAX98357A
  • Raspberry Pi 3B+
  • Karta SD (8 GB wystarczy)
  • Rezystor 4,7K Ohm

Różny

  • Zworki
  • Deska do krojenia chleba
  • Akrylowe lustro dwukierunkowe (15% przepuszczalności światła)
  • Monitor IPS (rozmiar zależy od tego, jak duży chcesz)
  • kabel HDMI
  • Drewno

Oprogramowanie

  • Kit
  • Edytor kodu (wystarczy Notepad++)
  • Win32 Disk Imager
  • Obraz systemu operacyjnego Raspbian

Krok 1: Konfiguracja

Aby rozpocząć, najpierw musimy skonfigurować Twoje Pi dla kodu, który zrobiłem.

Będziesz potrzebować dwóch rzeczy:

  • Win32 Disk Imager z
  • Obraz Raspbian OS z

Pobierz plik ZIP i rozpakuj go w dowolne miejsce.

Instalacja

  1. Wybierz swój obraz za pomocą ikony folderu
  2. Wybierz swoją kartę SD z listy rozwijanej
  3. Kliknij na napisz

Teraz będziemy musieli wykonać dodatkowe majsterkowanie przy niektórych ustawieniach, abyśmy mogli uzyskać dostęp do Pi.

  1. Przejdź do katalogu rozruchowego karty SD
  2. Otwórz plik „cmdline.txt”
  3. Dodaj ip=169.254.10.1 Na końcu długiej linii tekstu oddzielonej spacją (w tej samej linii).
  4. Zapisz plik.
  5. Utwórz plik o nazwie ssh bez rozszerzenia w tym samym katalogu

Teraz możesz wysunąć kartę SD i włożyć ją do swojego Pi.

Złączony

Teraz będziemy musieli skonfigurować oprogramowanie.

Najpierw podłącz kabel LAN, jeden koniec do komputera stacjonarnego/laptopa, a drugi do Pi.

Teraz uruchom Raspberry Pi.

  1. Zainstaluj Putty z
  2. Wprowadź 169.254.10.1 w polu IP.
  3. Upewnij się, że wybrano SSH, a port 22 jest wypełniony.
  4. Kliknij otwórz
  5. Wpisz nazwę użytkownika: pi
  6. Wpisz hasło: malina

Konfiguracja raspi

Otwórz narzędzie Raspi-config za pomocą:

sudo raspi-config

Włącz następujące opcje w kategorii interfejsów

  • 1-przewodowy
  • SPI

Wybierz swój kraj WiFi w kategorii lokalizacji.

Następnie wyłącz następujące opcje w kategorii opcji rozruchu

Ekran powitalny

Na koniec ustaw ustawienie Desktop/CLI w kategorii opcji rozruchu na Desktop Autologin.

Wi-Fi

W przypadku dublowania musimy mieć połączenie Wi-Fi, więc upewnij się, że masz zamknięte dane uwierzytelniające Wi-Fi.

Przejdź do trybu roota

sudo-i

Wklej tę linię, ale upewnij się, że SSID i hasło są wypełnione

wpa_passphrase "SSID" "HASŁO" >> /etc/wpa_supplicant/wpa_supplicant.conf

Wejdź do klienta WPA.

wpa_cli

Wybierz interfejs

interfejs wlan0

Odśwież konfigurację

przekonfigurować

Upewnij się, że masz prawidłowe połączenie, wpisując…

ip a

…i sprawdzanie, czy masz adres IP na interfejsach WLAN0.

Pakiety

Teraz, gdy mamy połączenie z Internetem, będziemy musieli zainstalować kilka pakietów.

Najpierw musimy odświeżyć listę pakietów do najnowszej.

aktualizacja sudo apt

Pyton

Zmusimy Raspbian do używania Pythona 3

update-alternatives – zainstaluj /usr/bin/python python /usr/bin/python2.7 1

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

MariaDB

Wklej następujący wiersz, aby zainstalować bazę danych.

sudo apt zainstaluj serwer mariadb

Wtedy będziemy musieli zabezpieczyć naszą instalację.

mysql_secure_installation

Zapyta nas o aktualne hasło roota, ponieważ go nie mamy, wystarczy nacisnąć enter.

Następnie pyta, czy chcemy wpisać hasło roota w y, ponieważ je chcemy.

W przypadku kolejnych pytań wystarczy wpisać Y.

Na koniec stworzymy użytkownika, którego będziemy mogli używać do lustra.

Wejdź do powłoki mysql, wykonując:

Wznieś się do korzeni

sudo-i

Wejdź do powłoki mysql

mysql

Zastąp swoją własną nazwą użytkownika i tym samym

nadaj wszystkie uprawnienia na mirror.* do ''@'%' zidentyfikowanego przez '';

Teraz opróżniamy tabelę uprawnień.

PRZYWILEJE WSPÓŁPRACUJĄCE;

Serwer WWW Apache

Aby zainstalować serwer WWW, uruchom poniższy wiersz.

sudo apt zainstaluj apache2 -y

Pakiety Pythona

Zamierzamy zainstalować te pakiety

  • Kolba
  • Flask-Cors
  • Flask-MySQL
  • Kolba-Gniazdo IO
  • PyMySQL
  • Kolba-talizman
  • Gevent
  • Gevent-websocket
  • Klient-api-python-Google
  • Autoryzacja Google
  • Google-auth-httplib2
  • Google-auth-oauthlib
  • Httplib2
  • Ikalendarz
  • Icalevents
  • Oauthlib
  • Gniazdo Pythona
  • Upraszanie
  • Wsaccel
  • Ujson

Wykonując

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 icalendar icalevents requesty

Konfiguracja głośników

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

Teraz musimy zrestartować, więc wciśnij y.

Uruchom ponownie skrypt

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

Teraz musimy ponownie uruchomić komputer po raz drugi

ponowne uruchomienie sudo

Ekran (monitor)

W zależności od tego, jak chcesz orientację ekranu, możesz chcieć obrócić ekran.

Aby obrócić ekran, musimy uzyskać dostęp do opcji rozruchu, wykonując:

sudo nano /boot/config.txt

A następnie wklejenie jednej z tych linii w pliku konfiguracyjnym:

obrót_wyświetlania=0

display_rotate=1

display_rotate=2

display_rotate=3

Pierwsza z nich, 0, to normalna konfiguracja. 1 będzie miał 90 stopni, 2 to 180 stopni, a ostatni będzie miał 270 stopni.

Następnie uruchom ponownie.

ponowne uruchomienie sudo

Krok 2: Instalowanie lustra

Instalowanie lustra
Instalowanie lustra

Teraz skonfigurujemy miejsce do pobrania mojego kodu.

cd /home/pi/

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

Teraz skopiujemy niektóre foldery do właściwego miejsca docelowego

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

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

Instalacja bazy danych jest niezbędnym krokiem w tworzeniu projektu.

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

Krok 3: Konfiguracja

Plik konfiguracyjny znajduje się pod adresem:

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

Wprowadź użytkownika i hasło MYSQL.

To musi być właśnie utworzony użytkownik mysql.

Inne ustawienia omówimy później w tej instrukcji.

Krok 4: API

Teraz zakończyliśmy instalację Pi, omówimy kilka tematów, które możesz chcieć zrobić.

Ciemne niebo

Utwórz klucz Darsky API za pośrednictwem

Po zarejestrowaniu zobaczysz swój klucz API na pulpicie nawigacyjnym.

Wprowadź ten klucz w pliku konfiguracyjnym projektu lustrzanego, który zainstalowałeś wcześniej.

Kalendarz

Domyślnie do przeglądania kalendarza będziesz mógł używać tylko adresów ical. Ale ta część będzie o tym, jak połączyć swoje lustro z ekosystemem Google. Jest to na ogół dłuższy i bardziej bolesny proces.

Rzeczy, których na pewno będziesz potrzebować

Nazwa domeny

Oto rzeczy, które ustawimy podczas tej części

  • Konto CloudFlare
  • Konto programisty Google
  • Projekt programisty Google
  • Skonfiguruj interfejs API kalendarza

Krok 5: Kalendarz

Kalendarz
Kalendarz
Kalendarz
Kalendarz

Cloudflare

Skonfiguruj konto cloudflare z https://cloudflare.com i postępuj zgodnie z instrukcjami kreatora, aby przenieść nazwę domeny do Cloudflare DNS.

Nie ma potrzeby samodzielnego tworzenia rekordu A, który wskazuje na raspberry pi. Mój kod lustrzany zrobi to za Ciebie. Ponieważ w większości domowych wifi adresy IP nie są statyczne, więc po ponownym uruchomieniu może już nie działać. Aby mój kod automatycznie aktualizował adres IP, będzie potrzebny klucz API konta.

  1. Kliknij przycisk Pobierz klucz API na pulpicie nawigacyjnym po prawej stronie. [Zdjęcie 1]
  2. Przewiń w dół i zobacz swój globalny klucz API. [Zdjęcie 2]

Wprowadź ten klucz w pliku konfiguracyjnym projektu lustrzanego, który zainstalowałeś wcześniej.

Tworzenie certyfikatu SSL

Google wymaga od nas połączenia SSL. Aby rozpocząć tę sekcję, upewnij się, że poprawnie skonfigurowałeś DNS Cloudflare.

Najpierw dodaj repozytorium.

sudo add-apt-repository ppa:certbot/certbot

Zaktualizuj listę pakietów.

aktualizacja sudo apt-get

Zainstaluj CertBota

sudo apt install python-certbot-apache

Rozpocznij tworzenie certyfikatu. Ponownie musisz wpisać poprawną nazwę domeny.

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

Po utworzeniu zapyta Cię, czy powinien przekierować wszystkie połączenia na SSL. Wybierz przekierowanie.

Teraz powie Ci, że pomyślnie utworzył certyfikat dla Twojej domeny. Upewnij się, że zapisałeś 2 ścieżki, które ci daje.

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

Teraz przejdź do folderu z certyfikatami za pośrednictwem:

Upewnij się, że zmieniłeś example.com na właściwego hosta.

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

Teraz skopiujmy tę zawartość do naszego folderu projektu.

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

I

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

Połącz Apache ze swoją domeną

Aby poprawnie skonfigurować Apache z Twoją domeną, będziemy musieli utworzyć plik konfiguracyjny. Upewnij się, że wpisałeś nazwę swojej domeny, na przykład funergydev.com.

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

Następnie wklej to do pliku. Zastąp example.com nazwą swojej domeny.

Upewnij się, że Twój certyfikat i klucz prywatny są poprawną ścieżką. Ustaw je na ścieżkę, którą zapisałeś wcześniej, kiedy tworzyliśmy, a następnie za pomocą certbota.

DocumentRoot "/var/www/html/" SSLEngine on SSLCertificateFile /home/pi/Mirror/resources/certs/cert.pem SSLCertificateKeyFile /home/pi/Mirror/resources/certs/privkey.pem # Inne dyrektywy tutaj Opcje Indeksy FollowSymLinks AllowOverride Wszystkie Wymagaj wszystkich przyznanych

Teraz musimy włączyć pewne modyfikacje, a następnie zmusić Apache do ponownego załadowania konfiguracji, wykonując:

sudo a2enmod ssl

przepisać sudo a2enmod

sudo systemctl przeładuj apache2

Teraz powinieneś być w stanie przejść przez nazwę domeny do swojego pi i zobaczyć domyślną stronę Apache.

Krok 6: API Google

Interfejs API Google
Interfejs API Google
Interfejs API Google
Interfejs API Google
Interfejs API Google
Interfejs API Google

Przejdź do konsoli programisty na

Część 1

Utwórz swój pierwszy projekt, klikając obok logo Google API i klikając przycisk NOWY PROJEKT. Wpisz odpowiednią nazwę projektu i kliknij przycisk Utwórz. [Zdjęcie1]

Część 2

Teraz dotrzesz do tej strony. Kliknij przycisk biblioteki. [Zdjęcie2]

To jest długa lista wszystkich interfejsów API, których możesz użyć, ale będziemy szukać interfejsu API Kalendarza Google. Kliknij na niego i naciśnij WŁĄCZ. [Zdjęcie3]

Zobaczysz wtedy omówienie interfejsu Calendar API. Kliknij logo interfejsów API Google, aby wrócić do swojego projektu. [Zdjęcie4]

Część 3

Aby wszystko poprawnie skonfigurować, kliknij kategorię poświadczeń i wybierz zakładkę Weryfikacja domeny.

Tutaj musisz zweryfikować nazwę swojej domeny.

  1. Kliknij DODAJ DOMENĘ
  2. Wpisz swoją domenę
  3. Następnie poprosi o zweryfikowanie Twojej domeny. Kliknij Kontynuuj.
  4. Wybierz dostawcę nazwy domeny. [Zdjęcie5]
  5. Postępuj zgodnie z procesem
  6. Teraz będziesz mógł dodać go do listy weryfikacji domen w konsoli interfejsu API Google w ten sposób. Upewnij się, że Twoja domena jest sprawdzona. [Zdjęcie6]

Część 4

Teraz wybierz zakładkę ekranu akceptacji OAuth. [Zdjęcie7]

Wpisz nazwę aplikacji

Następnie dodamy zakresy do ekranu zgody. Oznacza to, że zapytamy użytkownika na ekranie akceptacji, czy chce udostępnić dane swojego kalendarza w lustrze.

  1. Kliknij dodaj zakres i wyszukaj kalendarz.
  2. Sprawdź../auth/calendar.readonly i naciśnij dodaj. [Zdjęcie8]

Wypełnij autoryzowaną domenę. Powinna to być właśnie zweryfikowana domena. [Zdjęcie9]

Teraz kliknij duży przycisk zapisu pod formularzem.

Część 5

Na koniec musimy stworzyć poświadczenia. Ponieważ nacisnęliśmy przycisk zapisu, zostaliśmy przekierowani do zakładki poświadczeń. Kliknij Utwórz dane logowania i wybierz Identyfikator klienta OAuth. [Zdjęcie10]

Wybierz Typ aplikacji: Aplikacja internetowa i nadaj jej nazwę.

Wprowadź następujący link w URI autoryzowanego przekierowania i wypełnij prawidłową domenę.

example.com:5000/api/v1/setup/kalendarz/odpowiedź

Kliknij Utwórz. Spowoduje to wyświetlenie wyskakującego okienka, po prostu kliknij OK. Teraz naciśnij przycisk pobierania na właśnie utworzonych poświadczeniach

Część 6

Teraz otwórz plik JSON i skopiuj zawartość.

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

Wklej je tutaj.

Część 7

Teraz musimy zdefiniować naszą domenę w konfiguracji, wykonując:

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

Krok 7: Projekt lustra

Projekt lustra
Projekt lustra
Projekt lustra
Projekt lustra
Projekt lustra
Projekt lustra
Projekt lustra
Projekt lustra

Projektowanie lustra zależy od tego, jak chcesz. Dokonaj dokładnych pomiarów ekranu LCD i pozostaw 2-centymetrową przerwę po jednej stronie lustra, ponieważ będzie tam znajdował się czujnik ruchu mikrofalowego. Nie może być za metalem.

Połączyłem ze sobą 4 deski. Zostały one zmielone, aby uzyskać ładny, czysty przód lustra. Na górze wywierciłem też kilka otworów, aby przepuścić dźwięk z głośnika. Po przeciwnej stronie lustra, na dole, wyciąłem mały prostokąt, żebym mógł spokojnie zrobić okablowanie. [Zdjęcie1]

Są to 2 kawałki taniego drewna, na których będzie spoczywał monitor. Jak powiedziałem, potrzebujemy około 2 centymetrów przerwy między lustrem a obudową. Dodałem też 3 małe kawałki drewna i przykręciłem je do tych odpoczywających kawałków. Aby monitor pozostał na swoim miejscu. [Zdjęcie2]

W końcu tak to wyglądało. Miałem około 3 mm przerwy między tymi częściami spoczynku a przodem obudowy lusterka. Wystarczy, żebym mógł włożyć lustro dwukierunkowe o grubości 3 mm. [Zdjęcie3]

Krok 8: Wykonanie okablowania

Robię okablowanie
Robię okablowanie
Robię okablowanie
Robię okablowanie
Robię okablowanie
Robię okablowanie

Upewnij się, że postępujesz zgodnie z jednym z tych schematów.

Kiedy już wykonałem okablowanie, przykleiłem je z tyłu ekranu taśmą dwustronną. Ponieważ gdybym kiedykolwiek chciał rozebrać lustro i wykorzystać je do innych projektów, to bez problemu mógłbym je zdjąć. Jeśli jesteś pewien, możesz użyć pistoletu do klejenia na gorąco i przykleić go z tyłu lustra.

Krok 9: Uruchamianie kodu

Uruchamianie kodu
Uruchamianie kodu
Uruchamianie kodu
Uruchamianie kodu
Uruchamianie kodu
Uruchamianie kodu

LXSesja

Stwórzmy najpierw kilka folderów

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

Teraz utworzymy plik, w którym określimy kilka parametrów/poleceń startowych.

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

Wklej następujące elementy do pliku.

@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

Zaktualizujemy skrypt ekranu startowego, aby pasował do naszego hosta.

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

Wybierz localhost, jeśli nie używasz kalendarza Google i domeny.

#!/kosz/bash

spać 15 chromium-browser --incognito --kiosk

Jeśli go używasz, podaj hosta.

#!/kosz/bash

spać 15 chromium-browser --incognito --kiosk

Praca

Teraz ustawimy, że kod lustrzany będzie uruchamiany automatycznie.

Stworzymy usługę, która automatycznie uruchomi dla nas kod.

Iść do:

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

I wklej to do pliku

[Jednostka]

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

Teraz musimy ponownie załadować demona systemd, wykonując:

sudo systemctl demon-reload

Włączymy także automatyczne uruchamianie usługi przy starcie.

sudo systemctl włącz lustro

Teraz wyłączymy.

wyłączanie sudo

Ostateczne ustawienia

Na koniec musimy usunąć nasze IP APIPA, aby działało tylko na Wi-Fi.

  1. Przejdź do katalogu rozruchowego karty SD na swoim komputerze.
  2. Otwórz plik „cmdline.txt”
  3. Usuń ip=169.254.10.1 Na końcu długiej linii tekstu.

Krok 10: Uruchamianie lustra

Uruchamianie lustra
Uruchamianie lustra
Uruchamianie lustra
Uruchamianie lustra
Uruchamianie lustra
Uruchamianie lustra
Uruchamianie lustra
Uruchamianie lustra

Odwiedź adres IP, który jest na ekranie lustrzanym lub jeśli masz skonfigurowany kalendarz Google, wypełnij nazwę domeny.

Teraz będziesz mógł skonfigurować swoje lustro!

Jeśli w lustrze pojawi się błąd SSL, możesz dodać swoje certyfikaty do magazynu certyfikatów Chromium.

Zalecana: