Integracja z IFTTT

Serwis IFTTT (ang. If This Then That) oferuje możliwość tworzenia dowolnych zależności logicznych z wykorzystaniem dostępnych w serwisie apletów. Spośród dostępnych szczególnie naszą uwagę zwrócił aplet webhooks. Jaka jest funkcjonalność tego apletu? Naprawdę bardzo duża! Dzięki niemu DOMIQ został otwarty na całkowicie nowy wymiar integracji. Aplet webhooks pozwala na wysyłanie do serwera IFTTT żądań HTTP, które uruchomią utworzone przez Ciebie aplety. Jest także funkcjonalność odwrotna – aplet może wysłać żądanie HTTP do modułu Base, co pozwala na wywołanie dowolnego zdarzenia w Base. Jak to przekłada się na funkcjonalność Base? Wymieńmy tylko kilka najciekawszych możliwości, jakie daje integracja z IFTTT, a jest ich naprawdę sporo i wciąż przybywają nowe aplety:

  • wywoływanie zdarzeń w Base na podstawie lokalizacji naszego urządzenia mobilnego.
  • Integracja z nowymi urządzeniami (np. Philips Hue, Amazon Alexa, termostat Nest i wiele innych).
  • Integracja z kontem Google, a dzięki temu np. możliwość eksportowania dowolnych danych dostępnych w module Base do arkusza kalkulacyjnego, wysyłanie maili na podstawie zdarzeń w systemie inteligentnego domu, itd.
  • Powiązanie systemu DOMIQ z informacjami pogodowymi.
  • Integracja z natywnymi funkcjami systemu iOS (kalendarz, kontakty).
  • Integracja z aplikacją Skype – możliwość wysłania wiadomości w reakcji na zdarzenie
    w systemie DOMIQ.

W tym samouczku zaprezentujemy przykład wysyłania żądań do serwera IFTTT, aby wyzwolić utworzony aplet, a także pokażemy, jak obsłużyć żądania wysłane do Base z serwera IFTTT.

UWAGA! Aby skorzystać z funkcjonalności opisanej w niniejszym samouczku wymagane jest oprogramowanie modułu Base (system.pak i web.pak) w wersji 1.9.0.1 lub nowszej.

1. Integracja z IFTTT w DOMIQ #

Jak wspomnieliśmy we wstępie, integracja z IFTTT jest dwukierunkowa. Istnieje możliwość, aby Base odbierał żądania wysłane przez serwis IFTTT, a także sam wysyłał żądania do serwisu IFTTT.

1.1. Wysyłanie żądań HTTP do serwisu IFTTT #

W tym celu utworzyliśmy nowy identyfikator o następującej składni: IFTTT=nazwa_apletu?dodat-kowe_dane.

Jako nazwa_apletu należy przekazać nazwę apletu w serwisie IFTTT, który ma zostać wywołany. Cześć ?dodatkowe_dane jest opcjonalna i może zostać pominięta, jeżeli aplet nie wymaga przekazywania do niego żadnych dodatkowych danych. Na podstawie przekazanych danych, moduł Base automatycznie utworzy i wyśle żądanie HTTP do serwera IFTTT.

  • C.IFTTT=tester
    Ta komenda wywoła aplet w serwisie IFTTT o nazwie tester.
  • C.IFTTT=temperature?value1=24.5
    Ta komenda wywoła aplet w serwisie IFTTT o nazwie temperatura i dodatkowo przekaże parametr o nazwie value1 o wartości 24.5.

1.2. Odbieranie żądań HTTP z serwisu IFTTT #

Aby odbieranie żądań z serwisu IFTTT było możliwe, konieczne jest posiadanie publicznego adresu IP. Jeżeli posiadasz wyłącznie dynamiczny publiczny adres IP, wówczas rozwiązaniem jest skorzystanie z dynamicznego DNS. Należy też w routerze przekierować port na lokalny adres IP modułu Base i numer portu web, który został ustawiony w konfiguracji modułu Base (domyślnie 80).

Żądania wysyłane z serwisu IFTTT na adres modułu Base będą widoczne jako zdarzenia E.IFTTT.request=dane

Dane przekazane w żądaniu mogą być dowolne – może to być łańcuch znaków, liczba, itd. Zdarzenie może następnie posłużyć do wykonania dowolnej sekwencji komend w module Base. W dalszej części tego samouczka zaprezentujemy wykorzystanie apletu lokalizacji urządzenia mobilnego, do wyzwolenia zdarzenia w module Base.

  • E.IFTTT.request=tester
    Odebrano żądanie z serwisu IFTTT z wartością tester.

Kolejnym krokiem jest ustawienie uprawnień dla dostępu administracyjnego w konfiguratorze modułu Base. W tym celu w zakładce Użytkownicy ustaw opcję Dostęp administracyjny na wartość Cały Internet.

2. Konto IFTTT #

Pierwszym niezbędnym krokiem jest rejestracja w serwisie IFTTT (rejestracja i korzystanie z serwisu IFTTT jest darmowe). Po zarejestrowaniu otrzymasz swój unikalny klucz użytkownika, który będzie używany do wywoływania utworzonych w serwisie apletów.

Po otrzymaniu klucza zaloguj się do konfiguratora Base i przejdź do zakładki Ustawienia.Następnie odszukaj sekcję IFTTT, zaznacz opcję Aktywny i wklej otrzymany klucz w polu poniżej. Na koniec zapisz zakładkę Ustawienia i zrestartuj moduł Base. Po restarcie, Base jest gotowy na współpracę z serwisem IFTTT.

3. Tworzenie apletów #

Tworzenie apletów jest bardzo intuicyjne i przebiega według zasady „jeżeli to, wtedy tamto”, czyli dokładnie, jak wskazuje nazwa If This Then That. Zatem w piewszej kolejności trzeba wybrać zdarzenie inicjujące wykonanie apletu, a następnie akcję, która będzie wykonana jako rezultat działania apletu.

Czas na utworzenie pierwszego apletu. Aplet będzie wywoływany odebraniem przez serwer IFTTT żądania HTTP wysłanego przez moduł DOMIQ/Base. Samo żądanie będzie wysyłane cyklicznie przez timer ustawiony w module Base. Jako przykład przedstawimy wysyłanie danych z czujnika temperatury zewnętrznej podłączonego do rekuperatora. Dane będą wysyłane do arkusza kalkulacyjnego w Google Drive, w celu ich archiwizacji i prezentacji na wykresie.

  1. Po zalogowaniu się do konta w serwisie IFTTT, wybierz opcję My Applets, a następnie kliknij New Applet. Kliknij +this, aby zdefiniować zdarzenie inicjujące uruchomienie apletu.
  2. Do wyboru pojawi się pokaźna lista serwisów, które mogą służyć, jako zdarzenie inicjujące aplet. Nas interesuje webhooks, więc w polu wyszukiwania zacznij wpisywać webhooks. Serwis IFTTT zacznie zawężać grono pasujących serwisów na podstawie wprowadzanej nazwy.
  3. W następnym kroku wybierz jedyną dostępną opcję, czyli Receive a web request. Opcja ta zapewnia wywołanie apletu po odebraniu przez serwer IFTTT odpowiedniego żądania HTTP.
  4. W polu Event Name wpisz unikalną nazwę apletu. Tej nazwy będziesz używać do późniejszego jego wywoływania. Ważne zatem, aby była możliwie najprostsza i najkrótsza. Nazwa nie może zawierać spacji i polskich znaków. W naszym przykładzie użyliśmy nazwy temperature.
  5. Kliknij +that, aby zdefiniować akcję, która zostanie wykonana jako rezultat działania apletu.
  6. W polu wyszukiwania wpisz google. Spośród dostępnych wyników wybierz Google Drive.
  7. W kolejnym kroku należy wskazać, aby akcją było dodanie wiersza do arkusza kalkulacyjnego. W tym celu wybierz opcję Add row to spreadsheet.
  8. W kolejnym kroku definiujemy szczegóły dodawania danych do arkusza kalkulacyjnego. W polu Spreadsheet name należy wprowadzić nazwę arkusza. Z tą nazwą zostanie utworzony plik na Twoim koncie Google Drive. W polu Formatted row możesz wprowadzić format, w jakim dane będą zapisywane w arkuszu kalkulacyjnym. Klikając przycisk Add ingredient masz do wyboru listę dostępnych parametrów.
    • OccuredAt – dodaje datę i godzinę nowego wpisu w następującym formacie: September 1, 2017 at 08:45AM
    • EventName – Nazwa zdarzenia w serwisie IFTTT. W naszym przykładzie przekazana zostanie nazwa temperature.
    • Value1, Value2, Value3 – wartości, które mogą być przekazane jako parametry żądania HTTP. W naszym przypadku wykorzystamy jedynie parametr Value1, aby przesyłać wartość temperatury.

      W polu Drive folder path wpisz ścieżkę w Google Drive, gdzie zostanie zapisany arkusz kalkulacyjny. Na koniec kliknij Create action, aby zatwierdzić ustawienia.
  9. W ostatnim kroku możesz przejrzeć podsumowanie utworzonego apletu. Jeżeli wszystko jest
  10. ustawione prawidłowo, wówczas zakończ tworzenie apletu przez naciśnięcie przycisku Finish. Jeżeli chcesz otrzymywać notyfikację za każdym razem, kiedy aplet zostanie wykonany, wówczas pozostaw włączoną opcję Receive notifications when this Applet runs. Do otrzymywania notyfikacji niezbędne jest zainstalowanie aplikacji IFTTT na urządzeniu iOS lub Android.

4. Wywoływanie apletów IFTTT w DOMIQ #

Do wywoływania apletów służy wspomniana wcześniej komenda IFTTT=nazwa_apletu?dodatkowe_dane.
Kontynuując nasz przykład wysyłania danych z czujnika temperatury zewnętrznej do arkusza kalkulacyjnego w Google Drive, możemy teraz przejść do zdefiniowania timera w module Base, który okresowo będzie dane wysyłał do serwisu IFTTT. W naszym przypadku timer będzie wysyłał dane co godzinę.

  1. Dodaj nowy timer.
  2. W polu Minuta wpisz: 0 (wywołanie o pełnej godzinie).
  3. W sekcji Akcje kliknij Dodaj komendę….
  4. W polu Nazwa wpisz: C.IFTTT. Natomiast w polu Wartość wpisz: temperature?value1={MOD-BUS.int.rek.tz}

    W tym miejscu na chwilę się zatrzymamy i omówimy poszczególne fragmenty komendy. Część temperature to nazwa apletu, który będzie wywoływany przez timer. Znak zapytania oddziela składową danych dodatkowych. W naszym przypadku musimy jeszcze przekazać w dodatkowym parametrze wartość temperatury. Jest to zawarte we fragmencie: ?value1={MODBUS.int.rek.tz}. MOBDUS.int.rek.tz, to w naszym przykładzie nazwa identyfikatora, w którym przechowywana jest aktualna temperatura zewnętrzna.

    Zapis {MODBUS.int.rek.tz} to nowość w funkcjonalności modułu Base, która została wprowadzona w aktualizacji systemu do wersji 1.9.0.1. Ta nowa funkcjonalność jest nazywana dynamicznym przypisywaniem identyfikatorów. W wersji oprogramowania 1.9.0.1 zostało ono dodane do zakładek Zdarzenia i Timery, a następnie będzie dodawane systematycznie do pozostałych zakładek konfiguratora. Zapis {nazwa_identyfikatora} należy rozumieć, jako dynamiczne odwołanie się do danego identyfikatora w module Base, aby pobrać jego aktualna wartość. W naszym przykładzie chcemy, aby każde wywołanie timera przekazywało aktualny odczyt temperatury. Do tej pory wymagałoby to napisania kodu w zakładce Logika. Od tej pory w prosty sposób możesz odwołać się do dowolnego identyfikatora, aby dynamicznie przekazać jego wartość do tworzonego timera lub zdarzenia.

    Przykład: Załóżmy, że w momencie wywołania timera temperatura zewnętrzna to 18.9℃ i jest ona zapisana w module Base w identyfikatorze MODBUS.int.rek.tz.Zapis temperature?value1={MODBUS.int.rek.tz} zostanie automatycznie (w tle) przekonwertowany przez moduł Base w momencie wywołania timera na następujący: temperature?value1=18.9.
  5. Zapisz zakładkę Timery, aby potwierdzić wprowadzoną konfigurację.

5. Obsługa apletów IFTTT w DOMIQ #

Jak napisaliśmy w rozdziale pierwszym, moduł Base może odbierać żądania wysyłane z serwisu IFTTT. Są one widoczne w Base, jako zdarzenie w formacie E.IFTTT.request=dane. Jako przykład zastosowania tej funkcjonalności zaprezentujemy użycie apletu IFTTT o nazwie Location, który może być uruchamiany, kiedy użytkownik wkracza bądź opuszcza daną lokalizację. W naszym przykładzie użyjemy ten aplet, aby zainicjować zdarzenie na powrót do domu.

5.1. Konfiguracja apletu #

  1. Po zalogowaniu się do konta w serwisie IFTTT, wybierz opcję My Applets, a następnie kliknij New Applet. Kliknij +this, aby zdefiniować zdarzenie inicjujące uruchomienie apletu.
  2. W polu wyszukiwania wpisz location.
  3. W następnym kroku wybierz opcję You enter an area, jako, że zdarzenie ma być wyzwolone w momencie wejścia do danej lokalizacji.
  4. Podaj lokalizację, dla której ma być uruchamiany aplet.

    Z naszego doświadczenia polecamy zainstalowanie aplikacji IFTTT na urządzenia mobilne, w celu doprecyzowania lokalizacji już po utworzeniu apletu. Aplikacja mobilna pozwala na wskazanie lokalizacji na podstawie bieżącego położenia urządzenia mobilnego. Dzięki temu możesz np. zdefiniować wykonanie apletu np. kiedy wjeżdżasz na posesję.
  5. Kliknij +that, aby zdefiniować akcję, która zostanie wykonana jako rezultat działania apletu.
  6. W polu wyszukiwania wpisz webhooks.
  7. Wybierz jedyną dostępną opcję – Make a web request, co oznacza, że wywołanie tego apletu wyśle żądanie HTTP na wskazany adres.
  8. W kolejnym kroku definiujemy adres, na jaki zostanie wysłane żądanie. W naszym przykładzie w polu URL wpisaliśmy http://example.com/call/ifttt/home. Część adresu example.com zastąp publicznym adresem IP modułu Base lub adresem dynamicznego DNS. Fragment /call/ifttt/ musi znaleźć się w każdym żądaniu wysyłanym z serwisu IFTTT do moduł Base i tego fragmentu nie należy zmieniać. Końcowy fragment adresu, w naszym przypadku home, to dane, jakie zostaną przekazane do modułu Base. Te dane będą przekazane w obrębie zdarzenia E.IFTTT.request (patrz opis definicji zdarzenia w następnym podrozdziale). W polu Method należy pozostawić wartość GET. Resztę opcji można zostawić bez zmian.
  9. W ostatnim kroku możesz przejrzeć podsumowanie utworzonego apletu. Jeżeli wszystko jest ustawione prawidłowo, wówczas zakończ tworzenie apletu przez naciśnięcie przycisku Finish. Jeżeli chcesz otrzymywać notyfikację za każdym razem, kiedy aplet zostanie wykonany, wówczas pozostaw włączoną opcję Receive notifications when this Applet runs.

5.2. Konfiguracja zdarzenia #

Pora na zdefiniowania zdarzenia uruchamianego na powrót do domu.

  1. Przejdź do zakładki Zdarzenia i dodaj nowe zdarzenie.
  2. W polu Kanał wpisz: E.IFTTT.request.
  3. W polu Dane wpisz nazwę, która została użyta w definicji żądania HTTP wysyłanego z serwisu IFTTT. W naszym przypadku home.
  4. Aby uniknąć wielokrotnego (niepożądanego) wywołania zdarzenia (np. przy powrocie do domu kolejnego mieszkańca) należy dodać warunek, który będzie temu zapobiegał. Jeżeli w Twojej instalacji jest centrala alarmowa Satel, wówczas możesz wykorzystać stan strefy alarmowej odpowiadającej za wejście do domu, do określenia obecności mieszkańców. Jeżeli jednak w danej instalacji nie ma centrali alarmowej Satel, wówczas możesz wybrać jedno z alternatywnych rozwiązań:
    • Ustawiać zmienną MEM lub wirtualny przekaźnik LCN w oparciu o informację o ruchu wykrytym przez czujkę (brak ruchu przez określony czas byłby interpretowany jako nieobecność mieszkańców w domu). W tym przypadku do ustawiania zmiennej MEM lub wirtualnego przekaźnika LCN można użyć dowolnej liczby czujek.
    • Zdefiniować przycisk ścienny, którego naciśnięcie przy wyjściu z domu będzie ustawiało wirtualny przekaźnik LCN lub zmienną MEM.

      W naszym przykładzie zakładamy, że centrala Satel jest w instalacji oraz, że strefą odpowiadającą za wejście do budynku jest strefa nr 1. Zatem w polu Warunek wpisujemy: IDS.armed.1==1.
  5. Na koniec w sekcji Akcje należy zdefiniować sekwencję czynności, która ma zostać wykonana, jako procedura na powrót do domu.

W tym samouczku przedstawiliśmy tylko dwa przykłady z wielu możliwych zastosowań integracji z serwisem IFTTT. Mamy nadzieję, że dzięki tej funkcjonalności Twój inteligentny dom stanie się jeszcze bardziej dopasowany do Twoich potrzeb.

Powered by BetterDocs