Praktyczny poradnik łączenia ESP z IFTTT (if this, then that)

Praktyczny poradnik łączenia ESP z IFTTT (if this, then that)

Chcielibyście, aby urządzenie z ESP8266 wysyłało do Was e-maile lub powiadomienia push? Może zastanawialiście się, jak połączyć najnowsze DIY z asystentem głosowym od Google?

Te pozornie trudne zadania można bardzo łatwo rozwiązać za pomocą popularnego IFTTT!

Czym jest IFTTT?

IFTTT (ang. if this, then that) to darmowe narzędzie służące do łączenia ze sobą dwóch serwisów lub urządzeń. Za jego pomocą uzyskujemy możliwość połączenia własnego projektu z takimi usługami jak Asystent Google, Amazon Alexa, Facebook, Twitter czy Dropbox – a to tylko ułamek możliwości. Używanie IFTTT jest bardzo proste i (prawie) nie wymaga umiejętności programowania.

Strona główna IFTTT

Strona główna IFTTT

Przed połączeniem IFTTT z naszym projektem DIY warto poświęcić chwilę na ogólne zapoznanie się z tą platformą oraz na prosty test. Zacznijmy więc od skonfigurowania testowego projektu, w którym po naciśnięciu przycisku w aplikacji mobilnej IFTTT otrzymamy wiadomość e-mail.

Szybki start z IFTTT

Aby korzystać z dobrodziejstw IFTTT, musimy założyć najpierw konto (możemy użyć także konta Google lub Facebooka). W celu utworzenia pierwszego połączenia wybieramy z głównego menu opcję Create lub przechodzimy bezpośrednio do strony: ifttt.com/create

Tworzenie nowego połączenia za pomocą IFTTT

Tworzenie nowego połączenia za pomocą IFTTT

Tworzenie połączeń (tzw. apletów) w IFTTT opiera się na zasadzie if this, then that, czyli wybieramy, co ma się wydarzyć, gdy wystąpi dana sytuacja. W pierwszym kroku wskazujemy, kiedy nasze połączenie ma zadziałać, czyli wybieramy wyzwalacz (ang. trigger) dla naszej akcji i ustalamy warunki, jakie muszą zachodzić. Następnie klikamy This i z bardzo długiej listy wybieramy interesujący nas serwis. W tym przypadku będzie to Button Widget, czyli przycisk dostępny w aplikacji IFTTT dla Android oraz iOS.

Teraz wskazujemy, kiedy wybrany serwis ma zgłosić nam, że warunek został spełniony (dla wybranego Button Widget jest dostępne tylko Button Press, czyli informowanie o wciśnięciu przycisku).

Koniec pierwszej części konfiguracji – IFTTT będzie reagowało na naciśnięcie przycisku

Koniec pierwszej części konfiguracji – IFTTT będzie reagowało na naciśnięcie przycisku

W kolejnym kroku musimy ustawić akcję, czyli to, co ma się dziać po zadziałaniu wyzwalacza. Klikamy w That i wybieramy interesujący nas serwis. Na potrzeby tego przykładu wybrany został Email, czyli usługa, dzięki której można wysyłać tradycyjne wiadomości e-mail. Po wskazaniu usługi przechodzimy do wybrania i konfiguracji akcji – w tym przypadku będzie to wysłanie wiadomości.

Konfiguracja akcji – wysyłanie wiadomości e-mail

Konfiguracja akcji – wysyłanie wiadomości e-mail

Teraz musimy ustalić, co dokładnie ma się zadziać (ustalamy tytuł i treść wiadomości w HTML). Klikając przycisk Add ingredient, możemy dodać do naszej akcji dane zwrócone przez wyzwalacz (dla widgetu przycisku są to lokalizacja i czas). Na koniec klikamy Create action.

Konfiguracja akcji wysyłającej wiadomość e-mail

Konfiguracja akcji wysyłającej wiadomość e-mail

Na koniec wyświetlone zostanie podsumowanie zbudowanego przez nas połączenia, któremu możemy przypisać własną nazwę. Cały proces zakańczamy, klikając przycisk Finish. Gotowe!

Ekran podsumowujący zbudowanie nowego połączenia

Ekran podsumowujący zbudowanie nowego połączenia

Pierwszy praktyczny test IFTTT

Pora przetestować stworzone połączenie. W tym celu musimy zainstalować na telefonie aplikację IFTTT i umieścić na ekranie widget z utworzonym wcześniej przyciskiem wyzwalającym wybraną akcję.

Aplikacja IFTTT i widget

Aplikacja IFTTT i widget

Kliknięcie w przycisk (widget) powoduje wyzwolenie akcji. Po chwili (5–10 s) powinien do nas przyjść skonfigurowany wcześniej e-mail. Jeśli wszystko działa poprawnie, to możemy już przejść do ciekawszej części, czyli do połączenia z tym systemem naszego DIY.

Podgląd otrzymanej wiadomości

Podgląd otrzymanej wiadomości

Łączenie z mikrokontrolerem za pomocą Adafruit IO

Teraz pora połączyć układ bazujący na ESP8266, czyli NodeMCU, z IFTTT za pomocą serwisu Adafruit IO. Jest to darmowy (w wersji podstawowej) serwis do obsługi danych w chmurze stworzony z myślą o urządzeniach IoT. Pozwala na łatwą integrację z Arduino, ESP, Raspberry Pi itp.

Strona projektu Adafruit IO

Strona projektu Adafruit IO

Aby korzystać z Adafruit IO, trzeba założyć darmowe konto. Po zalogowaniu klikamy w zakładkę Feeds. Wybieramy przycisk Action i klikamy Create a new feed.

Wstępna konfiguracja projektu w Adafruit IO

Wstępna konfiguracja projektu w Adafruit IO

Wpisujemy wybraną nazwę (tutaj, dla przykładu, „Forbot”) i opcjonalny opis. Na koniec klikamy Create.

Nadawanie nazwy i zapisywanie projektu

Nadawanie nazwy i zapisywanie projektu

Od teraz po wybraniu z listy strumienia projektu będziemy widzieć na wykresie dane, które zostały do niego dostarczone. Na razie nic tu nie ma, bo aby zobaczyć efekty, musimy sięgnąć po mikrokontroler.

Podgląd strumienia danych w Adafruit IO

Podgląd strumienia danych w Adafruit IO

Zgodnie z zapowiedzią pokażę w tym artykule możliwe użycie ESP8266. Do połączenia go z Adafruit IO wykorzystamy przykładowy kod udostępniony przez firmę Adafruit. Najpierw trzeba jednak podłączyć niezbędne peryferia:

  • przycisk – jedna nóżka do GND, druga do GPIO4,
  • dioda świecąca – jedna nóżka do GND, druga przez rezystor (np. 510 Ω) do GPIO13.

Zastępujemy: 

  • YOUR_USERNAME nazwą użytkownika z Adafruit IO,
  • YOUR_KEY kluczem Adafruit IO,
  • YOUR_SSID nazwą sieci wi-fi,
  • YOUR_PASSWORD hasłem do sieci wi-fi,
  • YOUR_FEED nazwą feeda (w tym przykładzie „Forbot”).

Klucz Adafruit IO można sprawdzić, klikając AIO Key w prawym górnym rogu aplikacji.

Miejsce, w którym należy sprawdzić klucz aplikacji

Miejsce, w którym należy sprawdzić klucz aplikacji

Po wgraniu programu, gdy wciśniemy przycisk do naszego strumienia danych, wysłana zostanie wartość 1. Następnie układ odczyta z feeda tę wartość i włączy na chwilę diodę świecącą. Po puszczeniu przycisku zostanie wysłana wartość 0. Wszystkie te zdarzenia można obserwować na wykresie, który jest generowany w podglądzie strumienia danych. Działanie układu widoczne jest na poniższym filmie:

Dane możemy też dodawać „ręcznie” bezpośrednio w aplikacji Adafruit IO. Wystarczy, że klikniemy Add Data w widoku strumienia danych. Po dodaniu wartości 1 nasz LED zaświeci się.

Adafruit IO mamy już skonfigurowane, teraz pora połączyć układ z IFTTT. Naszego urządzenia możemy używać jako wyzwalacza (na zasadzie „po kliknięciu w przycisk zrób…”) lub jako akcji – gdy coś się dzieje, to do strumienia danych mają być dopisywane nowe informacje.

ESP w roli wyzwalacza IFTTT

Stwórzmy teraz przykład, w którym naciśnięcie przycisku (podłączonego do ESP) sprawi, że zostanie do nas wysłana wiadomość e-mail zawierająca datę i godzinę. W tym celu w IFTTT klikamy opcję Create i jako This wybieramy Adafruit (pierwsze użycie tej opcji wymaga połączenia konta Adafruit).

Wybieramy opcję Monitor a feed on Adafruit IO (chcemy, aby zadziałało dla konkretnej wartości, a nie dla jakiejkolwiek), a potem nazwę naszego strumienia danych. Następnie ustawiamy, że całość ma działać, gdy wartość będzie równa 1 (bo taką informację wysyłamy do sieci po wciśnięciu przycisku).

Na koniec konfigurujemy akcję. Za That wybieramy e-mail, a następnie konfigurujemy tytuł i treść wiadomości. Potem klikamy Create action oraz Finish i gotowe!

Urządzenie z ESP jako akcja

Teraz trochę bardziej ambitne zadanie. Wykorzystamy Asystenta Google, aby „na nasz znak” zamigał diodą podłączoną do układu. Klikamy Create i jako This wybieramy Google Assistant. Do wyboru mamy 4 możliwości:

  1. wypowiedzenie prostej frazy,
  2. wypowiedzenie frazy z liczbą,
  3. wypowiedzenie frazy z tekstem,
  4. wypowiedzenie frazy z liczbą i tekstem.

Opcje 2, 3 i 4 pozwalają nam wysyłać dane do Adafruit IO. Może być to przydatne, gdy chcemy np. sterować poziomem oświetlenia lub czasem świecenia. W naszym prostym przykładzie wybierzemy prostą frazę, bez przekazywania dodatkowych danych. 

Wybór odpowiedniego wyzwalacza dla Asystenta Google

Wybór odpowiedniego wyzwalacza dla Asystenta Google

Wpisujemy komendę, po której wypowiedzeniu ma zamigać dioda (możemy wpisać ją na maksymalnie trzy sposoby). Podajemy też odpowiedź, którą ma udzielić asystent, i wybieramy język (niestety na ten moment IFTTT nie obsługuje języka polskiego). Na koniec klikamy Create trigger

W kolejnym kroku ustawiamy akcję. Za That wybieramy Adafruit i Send data to Adafruit IO. Wybieramy nazwę strumienia danych i wpisujemy wartość, którą chcemy do niego wysłać. Klikamy Create action, Finish i gotowe! Od teraz, gdy powiemy asystentowi komendę, do bazy Adafruit IO zostanie wysłana wartość 1, a dioda świecąca podłączona do ESP zamiga.

Łączenie z mikrokontrolerem za pomocą Webhooków

Drugi sposób polega na pomijaniu pośrednika (np. Adafruit IO) i bezpośrednim kontakcie z IFTTT. Może to wydawać się bardziej skomplikowane, ale za to działa szybciej.

W ramach pierwszego, prostego testu spróbujmy stworzyć urządzenie, które po wciśnięciu przycisku wyświetli powiadomienie push na telefonie (potrzebna będzie aplikacja IFTTT). Na początku tworzymy nowy aplet w IFTTT. Za This wybieramy Webhooks, dalej Receive a web request. W kolejnym kroku wybieramy nazwę zdarzenia – w tym przykładzie jest to „button_pressed”.

Przypisanie nazwy dla nowego wyzwalacza

Przypisanie nazwy dla nowego wyzwalacza

Z kolei za That wybieramy powiadomienia, czyli Notifications. Dalej mamy do wyboru dwie opcje: powiadomienie podstawowe lub rozbudowane.

Wybór wersji powiadomień generowanych przez IFTTT

Wybór wersji powiadomień generowanych przez IFTTT

Na początek wybieramy podstawowe, czyli klikamy Send a notification from the IFTTT app. Teraz ustalamy, jaka ma być treść powiadomienia. Oprócz zwykłego tekstu, klikając Add ingredient, możemy dodać nazwę zdarzenia oraz wartości do niego dołączone. Jednorazowo możemy wysyłać od zera do trzech wartości. Przechodzimy dalej i klikamy Finish.

Ustawienia powiadomienia wysyłanego przez aplikację

Ustawienia powiadomienia wysyłanego przez aplikację

Teraz z menu IFTTT wybieramy zakładkę My services. Z listy serwisów wybieramy Webhooks i klikamy  przycisk Documentation w prawym górnym rogu.

Pobieranie unikalnego klucza oraz adresu URL

Pobieranie unikalnego klucza oraz adresu URL

Na górze wyświetla się nasz indywidualny klucz. Gdy w miejsce opisane jako „{event}” wstawimy nazwę naszego zdarzenia, wtedy na dole pojawi się adres URL, „na który trzeba wejść”, aby wywołać zdarzenie (na razie bez dodatkowych wartości). W podstawowej wersji wygląda on następująco:

Wpiszmy teraz ręcznie ten adres w przeglądarce (dla testu). Powinna pojawić się nam informacja, że udało się uruchomić zdarzenie, a na telefon powinno przyjść ustawione wcześniej powiadomienie.

Ręczny test działania IFTTT

Ręczny test działania IFTTT

Teraz spróbujmy przesłać dodatkowe wartości. Aby to zrobić, za pomocą adresu URL musimy na końcu dodać ciąg w postaci ?value1=wartość_1&value2=wartość_2&value3=wartość_3 (oczywiście możemy przesłać także mniej niż trzy wartości). Od teraz nasz URL będzie wyglądał tak:

Za te wartości wstawiamy przykładowe wartości i wklejamy w przeglądarkę. Tam wyświetli nam się ten sam komunikat co wcześniej, ale powiadomienie na telefonie będzie już zawierać wpisane wartości (w przykładzie: „123, abc, Ala_ma_kota”).

Ręczny test rozbudowanego adresu URL

Ręczny test rozbudowanego adresu URL

Program na ESP, który wykorzystuje Webhooki

Jeżeli już wiemy, jak działa ta metoda, to spróbujmy ją wykorzystać na naszym mikrokontrolerze. Od poprzedniego układu odłączamy diodę (zostaje przycisk: jedna nóżka do GND, a druga do GPIO4). 

Teraz nadszedł czas na program. W internecie możemy znaleźć kilka bibliotek ułatwiających pracę z IFTTT: pierwsza nie jest już wspierana przez autora i nie działa (przynajmniej tak było podczas pisania tego poradnika), używając drugiej, można albo wysłać trzy wartości, albo nie wysyłać żadnej, co nie zawsze jest wygodne, z kolei trzecia działa, ale wymaga biblioteki ArduinoJson w wersji 5.x.x (z najnowszą 6.x.x nie działa).

W związku z tym, bawiąc się z IFTTT i ESP8266, przygotowałem własną bibliotekę. Stworzyłem ją co prawda głównie do celów edukacyjnych (to moja pierwsza biblioteka, więc krytyka mile widziana), ale możemy ją teraz wykorzystać. Przed jej użyciem musimy oczywiście pobrać i zaimportować bibliotekę do środowiska. Następnie otwieramy przykładowy kod z tej biblioteki i zmieniamy dane logowania do wi-fi, nazwę zdarzenia i klucz IFTTT.

Jak korzystać z powyższej biblioteki? Na początku tworzymy obiekt klasy ESP8266IFTTTWebhook za pomocą instrukcji: „ESP8266IFTTTWebhook ifttt (WEBHOOK_NAME, API_KEY)”. Od teraz możemy wywoływać zdarzenie z użyciem bardzo prostej metody trigger(), przekazując jej argumenty – od zera do trzech: „ifttt.trigger(opcjonalny_argument1, opcjonalny_argument2, opcjonalny_argument3,)”.

Po uruchomieniu programu ESP łączy się z naszą siecią wi-fi i po wciśnięciu przycisku wywołuje zdarzenie z argumentami „1, a, Something”, a po 5 s z jednym argumentem „1”.

Działanie testowego programu widoczne jest poniżej:

Podsumowanie

Powyższe przykłady nie były zbyt rozbudowane, ale realizacja tych zadań miała mieć głównie walory edukacyjne. W IFTTT możemy połączyć wiele różnych serwisów – od rozwiązań automatyki domowej, przez pobieranie danych od NASA, Wikipedii i YouTube, aż po komunikację z siecią pizzerii.

Czy wpis był pomocny? Oceń go:

Średnia ocena 5 / 5. Głosów łącznie: 17

Nikt jeszcze nie głosował, bądź pierwszy!

Artykuł nie był pomocny? Jak możemy go poprawić? Wpisz swoje sugestie poniżej. Jeśli masz pytanie to zadaj je w komentarzu - ten formularz jest anonimowy, nie będziemy mogli Ci odpowiedzieć!

Wszystkie te rozwiązania stają się jeszcze bardziej uniwersalne, gdy możemy połączyć je z własnymi projektami. Ogrom możliwości tej platformy widać na stronie IFTTT z przykładowymi rozwiązaniami.

Autor: Karol Duszczyk

automatyzacja, esp32, ESP8266, IFTTT

Trwa ładowanie komentarzy...