Google calendar jako sterownik czasowy

Google calendar jako sterownik czasowy

Wstęp

Na co dzień używamy kalendarzy do planowania różnego rodzaju spotkań –  dlaczego więc nie potraktować takiego spotkania jako przedział czasu do włączenia jakiegoś urządzenia. Możemy sterować  dosłownie wszystkim – począwszy od różnego rodzaju lampek, poprzez sterowanie roletami a skończywszy na podlewaniu trawnika. Jeśli użyjemy do tego Google Calendar-a to mamy gotowy interfejs użytkownika dla naszego sterownika czasowego (zarówno webowy jak i na urządzenia mobilne). Teraz czas na element wykonawczy i tu odpowiedź jest oczywista RaspberryPI -Dlaczego ?, bo ma GPIO, dzięki któremu możemy sterować przekaźnikami i ma linuxa,  na  którym używając curl-a (narzędzie do wysyłania zapytań http z linii komend) możemy w prosty sposób odpytać API Google Calendar-a. Upraszczając sprawę pytamy kalendarz o to czy jest spotkanie o nazwie np.: L1 i jeśli jest aktywne to Raspberry PI ustawi na GPIO stan odpowiadający logicznej jedynce.

Wymagania sprzętowe:
  • raspberry PI – w projekcie  PI 2 model B,
  • przekaźnik – w projekcie relpol 12V DC w podstawce,
  • zasilacz 12V DC – w projekcie F&F ZI-20,
  • układ scalony ULN2803.
Lista potrzebnego oprogramowania:
  • Google kalendarz i jego ID,
  • konto na Google Developers – utworzymy projekt dla Google Calendar API, i wykreujemy API key.
  • skrypt shelowy, w którym cykliczne co 61 sekund będziemy odpytywać kalendarz o aktualny stan naszych ustawionych spotkań.

Uzyskanie klucza API i ID kalendarza

Logujemy się na stronie https://developers.google.com/?hl=pl – na dole strony klikamy na Google API Console

Następnie tworzymy nowy Projekt:

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

Do projektu Test01 dodajemy API kalendarza

Musimy teraz włączyć API i wygenerowac API klucz:

I jeszcze jeden krok i mamy wygenerowany API klucz:

Następny krok to dodanie kalendarza.  Google kalendarz daje nam możliwość dodawania dodatkowych kalendarzy do naszego głównego kalendarza, dodajmy wiec kalendarz np.: Lampa 01

Rzućmy teraz okiem jakie jest ID tego kalendarza:

Mamy wygenerowany API Klucz AIzaSyAsfD9cY_eJwt0UDPU5YX6b9b7Y3nADk1o i Kalendarz ID: gdhdpbd95b2tf9415cskium21s@group.calendar.google.com, więc możemy zalogować się do RaspberryPI.

Uruchomienie skryptu do odczytu spotkań ustawionych w naszym kalendarzu Lampa 01

Logujemy się na Raspberry PI i  tworzymy nowy plik w ulubionym edytorze np vi i wklejamy poniższy kod:

Do zmiennej doCheck będzie wpisany wynik z uruchomienia narzędzia curl.

Przy wywołaniu komendy curl musimy wpisać ID kalendarza i API Key, które otrzymaliśmy wcześniej:

doCheck=curl -i --proxy http://135.245.192.7:8000 -X GET "https://www.googleapis.com/calendar/v3/calendars/gdhdpbd95b2tf9415cskium21s@group.calendar.google.com/events?singleEvents=true&timeMax="$stopYear"T"$stopHour"%3A"$stopMinute"%3A00%2B02%3A00&timeMin="$startYear"T"$startHour"%3A"$startMinute"%3A00%2B02%3A00&key=AIzaSyAsfD9cY_eJwt0UDPU5YX6b9b7Y3nADk1o"

zapisujemy plik  i nadajemy prawa do uruchomienia:

jeśli nie mamy curl -a to go instalujemy:

Czas na uruchomienie skryptu

skrtypt czeka 61 sekund

skrypt sprawdza czy miedzy 2017-04-07 12:40 a 2017-04-07 12:41 jest ustawione jakieś spotkanie,
jeśli jest, to sprawdza czy ma tytuł L1. Dla tego przedziału czasu nie ma ustawionych spotkań -> „items”: [] .

Ostatecznie ustawiamy na wyjściu GPIO 26 wartość 0.

i wypisuje na ekranie:

Dodajmy do kalendarza spotkanie z tytułem L1:

po chwili skrypt powinien „zauważyć” nowe spotkanie i ustawić na wyjściu GPIO26 wartość 1

Jeśli zwrócony tekst będzie zawierał słowo start i L1 to ustawiamy GPIO na 1,  jeśli będzie start i L2 to skrypt wypisze na ekran „turn on lamp L2”.

Czas na część sprzętową:

Jako bufor pomiędzy wyjściami Raspberrego PI a przekaźnikiem zastał użyty układ scalony ULN2803 (8 tranzystorów Darlingtona), przekaźnik z cewką na 12 V – styki wykonawcze pozwalają podłączyć odbiorniki dużej mocy.

Dla powyższego kalendarza są ustawione spotkania: 

od 8 do 14 –  L1

od 11 do 17  – L2

Miłej zabawy z Google kalendarzem,

Adam Meller

Ocena: 5/5 (głosów: 12)
Nettigo - patron działu Elektronika

Podobne posty

2 komentarzy do “Google calendar jako sterownik czasowy

  • Nie używam kalendarza Google ze względu na prywatność. Wprawdzie dane wysyłane do nich są zabezpieczone protokołem HTTPS, ale po dotarciu na serwer są już odszyfrowywane i w dodatku wykorzystywane do profilowania użytkowników. Zna ktoś jakiś alternatywny serwis, w którym wydarzenia w kalendarzu, notatki itp. byłyby szyfrowane hasłem użytkownika i dostępne tylko dla niego? Najlepiej, żeby była możliwa też synchronizacja offline (np. przez USB, Bluetooth, WiFi Direct), żeby można było np. przesłać dane pomiędzy smartfonem a laptopem w miejscach, gdzie nie ma WiFi.

    Odpowiedz
  • „This calendar will appear in public Google search results” powinno włączyć czerwoną lampkę… i nie chodzi tu o przekaźnik. Dać się da, ale nie oparłbym na tym nic więcej niż lampkę na biurku na czas eksperymentów.

    Odpowiedz

Odpowiedz

anuluj

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?