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:

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)

Podobne posty

3 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

Masz uwagi?