Arduino IFTTT
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng Arduino với IFTTT. Cụ thể, chúng ta sẽ học:
- IFTTT là gì?
- Cách Arduino và IFTTT hoạt động với nhau
- Làm thế nào các dịch vụ bên ngoài (Google Assistant, Alexa, ...) điều khiển Arduino thông qua IFTTT
- Cách Arduino kích hoạt và gửi dữ liệu đến các dịch vụ bên ngoài (email, SMS, cuộc gọi điện thoại ...) thông qua IFTTT
IFTTT khiến Arduino có thể:
- Arduino gửi thông báo đến điện thoại thông minh của bạn
- Arduino gửi email
- Arduino gửi tin nhắn SMS
- Google Assistant điều khiển Arduino
- Amazon Echo (Alexa) điều khiển Arduino
- Đặt lịch cho Arduino qua Google Calendar
Và còn nhiều hơn thế nữa so với những thứ đó.
Phần cứng cần chuẩn bị
| 1 | × | Arduino UNO R4 WiFi | ||
| 1 | × | Alternatively, DIYables STEM V4 IoT | ||
| 1 | × | (Tùy chọn) DIYables STEM V4 IoT | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Power Splitter for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
IFTTT là gì?
IFTTT là một dịch vụ web miễn phí kết nối các dịch vụ web khác nhau với nhau (ví dụ Facebook, Email, Twitter, Google Assistant …). Ví dụ:
- Nếu bạn kết nối Facebook với Dropbox thông qua IFTTT, mỗi khi bạn đăng một bức ảnh lên Facebook, IFTTT có thể tự động lưu ảnh đó vào Dropbox.
- Nếu bạn kết nối Amazon Alexa với email thông qua IFTTT, IFTTT có thể tự động gửi email cho bạn mỗi khi bạn hỏi Alexa về danh sách mua sắm của mình.
Có bốn khái niệm quan trọng trên IFTTT: Applet, dị vụ, kích hoạt, và hành động.
- IFTTT được cấu thành từ Applets.
- The Applet thường được cấu thành từ hai dịch vụ IFTTT. Một dịch vụ đóng vai trò là một kích hoạt và cái còn lại đóng vai trò là một hành động. dịch vụ IFTTT trong một Applet được kết nối với nhau.
- IFTTT service (ví dụ: Twitter, Dropbox, Evernote, Facebook, Email, Amazon Alexa, và Google Assistant...) có hai cách thực hiện:
- Nhận yêu cầu từ bên ngoài, và sau đó kích hoạt các dịch vụ IFTTT khác trong cùng Applets (đóng vai trò là kích hoạt)
- Bị kích hoạt bởi các dịch vụ IFTTT khác trong cùng Applets, và sau đó thực hiện một điều gì đó với các dịch vụ bên ngoài (đóng vai trò là hành động)
- Một Applet có thể được tạo thành từ ba hoặc nhiều hơn các dịch vụ IFTTT. Điều này nằm ngoài phạm vi của hướng dẫn này.
- Xin đừng nhầm lẫn dịch vụ trong IFTTT với dịch vụ bên ngoài. Chúng có thể có cùng tên. Ví dụ, Alexa là một dịch vụ giọng nói do Amazon tạo ra và sở hữu; IFTTT có một dịch vụ cũng được gọi là Alexa có thể tương tác với Amazon Alexa. Do đó, chúng ta sẽ gọi dịch vụ trong IFTTT là dịch vụ IFTTT, còn dịch vụ không thuộc IFTTT thì là dịch vụ bên ngoài.
- do công ty IFTTT: bạn chỉ cần kích hoạt nó để sử dụng
- do bên thứ ba: bạn chỉ cần kích hoạt nó để sử dụng
- tự mình: Bạn có thể tự tạo Applet của riêng mình, kích hoạt nó để sử dụng. Việc tạo Applets rất dễ.
※ Lưu ý:
The Applet đã được tạo:
Để làm việc với Arduino, bạn cần tự tạo một Applet cho riêng mình. Đừng lo, việc tạo một Applet rất đơn giản.
IFTTT là viết tắt của "If This Then That". Có nghĩa là nếu một dịch vụ được kích hoạt, dịch vụ IFTTT khác thực hiện hành động.
Điều kiện tiên quyết
Tạo một tài khoản IFTTT. Nó miễn phí và hoàn toàn dễ dàng để tạo.
Cách Arduino và IFTTT hoạt động với nhau như thế nào
Nói chung, Arduino tương tác với IFTTT, IFTTT tương tác với các dịch vụ bên ngoài, và ngược lại.

Chi tiết hơn, Arduino tương tác với một Applet trong IFTTT, Applet tương tác với các dịch vụ bên ngoài, và ngược lại.
Ở mức độ chi tiết, Arduino tương tác với Webhooks dịch vụ trong IFTTT, Webhooks dịch vụ kích hoạt các dịch vụ khác trong IFTTT, các dịch vụ khác trong IFTTT tương tác với các dịch vụ bên ngoài, và ngược lại. Dưới đây là một ví dụ về cách Arduino tương tác với Amazon Echo Dot.

Tóm tắt
| In general | Arduino | ↔ | IFTTT | ↔ | Outside services |
| More detail | Arduino | ↔ | Applet in IFTTT | ↔ | Outside services |
| In depth | Arduino | ↔ | (Webhooks ↔ Other service) in IFTTT | ↔ | Outside services |
Chúng ta cần tạo một Applet của Webhooks và một dị vụ khác. Tùy từng trường hợp sử dụng, Webhooks có thể đóng vai trò là kích hoạt hoặc là hành động.
Có hai loại trường hợp sử dụng:
- Một dịch vụ điều khiển Arduino qua IFTTT (ví dụ: Google Assistant, Amazon Alexa điều khiển Arduino)
- Arduino gửi dữ liệu đến dịch vụ IFTTT khác thông qua IFTTT (ví dụ: gửi thông báo tới điện thoại của bạn, đăng lên Twitter)
Hãy xem xét chi tiết từng cái một.
Cách các dịch vụ bên ngoài điều khiển Arduino thông qua IFTTT
Như đã đề cập ở trên, một Applets của IFTTT thường bao gồm hai dị vụ IFTTT: một cái đóng vai trò là kích hoạt và cái kia đóng vai trò là hành động. Trong trường hợp này, Webhooks đóng vai trò là kích hoạt.
Trong sự tương tác giữa Arduino và Webhooks, Arduino đóng vai trò là máy chủ web, Webhooks của IFTTT đóng vai trò là khách hàng web.
Quy trình làm việc:
- Một dịch vụ kích hoạt một sự kiện tới dịch vụ tương ứng trên IFTTT
- Dịch vụ tương ứng trên IFTTT trích xuất dữ liệu từ sự kiện nếu có
- Dịch vụ tương ứng trên IFTTT kích hoạt Webhooks của IFTTT (bao gồm dữ liệu nếu có)
- Webhooks của IFTTT thực hiện hành động bằng cách gửi yêu cầu HTTP tới Arduino (bao gồm dữ liệu nếu có)
- Arduino trích xuất dữ liệu từ yêu cầu HTTP và thực hiện một số thao tác.
Hình ảnh dưới đây cho thấy cách Amazon Echo điều khiển Arduino thông qua IFTTT.

Cách sử dụng IFTTT với Arduino
- Đăng nhập vào IFTTT
- Tạo một Applet, để kết nối một dịch vụ mong muốn (ví dụ Google Assistant, Amazon Alexa, Google Calendar ...) với Webhooks. Webhooks đóng vai trò là hành động và các dịch vụ khác đóng vai trò là trình kích hoạt
- Viết mã Arduino để xử lý các yêu cầu HTTP từ Webhooks.
Khi bạn tạo Applet, địa chỉ IP của Arduino được nhập vào cài đặt của Applet. Khi một sự kiện được kích hoạt, IFTTT gửi một yêu cầu HTTP tới Arduino thông qua địa chỉ IP đã nhập.
Các hướng dẫn chi tiết từng bước sẽ được trình bày trong các bài hướng dẫn cụ thể.
Mã ví dụ
Hướng dẫn từng bước và mã ví dụ cho một dị vụ khác để điều khiển Arduino thông qua IFTTT có sẵn trong các bài hướng dẫn sau:
Cách Arduino kích hoạt và gửi dữ liệu đến dịch vụ bên ngoài thông qua IFTTT
Như đã đề cập ở trên, một Applet của IFTTT thường bao gồm hai dịch vụ của IFTTT: một cái đóng vai trò là kích hoạt và cái còn lại đóng vai trò là hành động. Trong trường hợp này, Webhooks đóng vai trò là hành động.
Trong quá trình tương tác giữa Arduino và Webhooks, Arduino đóng vai trò là máy khách Web, Webhooks của IFTTT đóng vai trò là máy chủ Web.
Quy trình làm việc:
- Arduino gửi yêu cầu HTTP hoặc HTTPS đến Webhooks của IFTTT
- Webhooks trích xuất dữ liệu từ yêu cầu HTTP nếu có
- Webhooks của IFTTT kích hoạt một dị vụ khác của IFTTT (bao gồm dữ liệu nếu có).
- Một dị vụ khác của IFTTT thực hiện hành động
Ảnh dưới đây cho thấy cách Arduino gửi email thông qua IFTTT.

Cách làm
Những gì chúng ta cần làm
- Đăng nhập vào IFTTT
- Tạo một Applet, kết nối Webhooks với một dịch vụ mong muốn (ví dụ Email, Twitter, VoIP ...). Webhooks đóng vai trò là kích hoạt và các dịch vụ khác đóng vai trò là hành động
- Đi tới trang tài liệu của Webhooks để lấy khóa Webhooks.
- Viết mã Arduino để gửi yêu cầu HTTP (POST hoặc GET) tới Webhooks.
Để học Arduino - Yêu cầu HTTP.
Những gì chúng ta cần bao gồm trong yêu cầu HTTP
- Khóa Webhooks: khóa duy nhất và bí mật để nhận diện Webhooks của bạn. Mỗi tài khoản chỉ có một khóa. Bạn có thể đăng nhập vào tài khoản và sao chép nó từ trang web của IFTTT.
- Tên sự kiện: là tên dùng để nhận diện sự kiện. Tên sự kiện do bạn tự đặt khi bạn tạo applet. Một tài khoản có thể tạo nhiều tên sự kiện.
- Dữ liệu (tùy chọn): bạn có thể gửi dữ liệu cảm biến tới IFTTT.
Khóa Webhook và tên sự kiện là một phần của URL. Dữ liệu là tùy chọn và được bao gồm trong chuỗi truy vấn. Như đã đề cập trong bài hướng dẫn HTTP, chuỗi truy vấn là một phần của URL trong yêu cầu GET và là phần thân HTTP trong yêu cầu POST.
Chuỗi truy vấn cho phép tối đa 3 biến với các tên cố định: value1, value2, value3.
Định dạng yêu cầu HTTP GET:
- Gửi kích hoạt mà không có dữ liệu: http://maker.ifttt.com/trigger/EVENT-NAME/with/key/YOUR-KEY
- Gửi kích hoạt với một biến: http://maker.ifttt.com/trigger/EVENT-NAME/with/key/YOUR-KEY?value1=10
- Gửi kích hoạt với hai biến: http://maker.ifttt.com/trigger/EVENT-NAME/with/key/YOUR-KEY?value1=10&value2=21
- Gửi kích hoạt với ba biến: http://maker.ifttt.com/trigger/EVENT-NAME/with/key/YOUR-KEY?value1=10&value2=21&value3=25
Thay thế EVENT-NAME, YOUR-KEY và các giá trị theo định dạng ở trên.
Cách gửi dữ liệu từ Arduino đến IFTTT
Để gửi dữ liệu từ Arduino đến các dị vụ IFTTT (ví dụ Email, Facebook), chúng ta cần thực hiện:
- Trong Arduino: Chèn dữ liệu vào yêu cầu HTTP
- Trong Applet: Điều chỉnh thiết lập để trích xuất dữ liệu từ yêu cầu HTTP.
Có 5 biến có thể sử dụng trong cài đặt của Applet trên IFTTT:
| {{EventName}} | Extracted from HTTP request |
|---|---|
| {{OccurredAt}} | System time when event occurs |
| {{Value1}} | Extracted from the variable value1 of query string in HTTP request |
| {{Value2}} | Extracted from the variable value2 of query string in HTTP request |
| {{Value3}} | Extracted from the variable value3 of query string in HTTP request |
Các hướng dẫn chi tiết từng bước sẽ được trình bày trong các bài hướng dẫn cụ thể.
Mã ví dụ
Hướng dẫn chi tiết từng bước và mã ví dụ cho Arduino gửi dữ liệu tới các dịch vụ IFTTT thông qua IFTTT có trong các bài hướng dẫn sau:
Kiến thức bổ sung
Khi Arduino gửi yêu cầu HTTP tới Webhooks của IFTTT, làm sao IFTTT phân biệt được yêu cầu từ Arduino của tôi với Arduino của người khác?
Yêu cầu HTTP của bạn chứa khóa Webhooks của bạn. Mỗi tài khoản có một khóa Webhooks duy nhất. IFTTT sử dụng khóa Webhooks để nhận diện bạn.
Làm thế nào để Arduino của tôi có thể kích hoạt nhiều sự kiện?
⇒ Bạn có thể tạo nhiều applet. Mỗi applet tương ứng với một trình kích hoạt.
Bạn có thể ghép một số dữ liệu vào một biến trong chuỗi truy vấn bằng ký tự phân tách do bạn thiết kế. Ví dụ: http://maker.ifttt.com/trigger/EVENT-NAME/with/key/YOUR-KEY?value1=10&value2=21&value3=25-32