Đã được đăng vào 25/09/2020 @ 10:24
Điều khiển thiết bị bằng Facebook Massenger thông qua Adafruit, Webhooks sử dụng NodeMCU ESP8266
Hôm nay mình sẽ hướng dẫn các bạn cách sử dụng Facebook Messenger để điều khển thiết bị thông qua io.adafruit.com.
Nếu bạn chưa biết cách cài đặt NodeMCU ESP8266 trên Arduino IDE thì các bạn xem bài viết bên dưới nhé.
- Hướng dẫn cài đặt ESP8266 và kết nối với Blynk
- Hệ thống điều khiển thiết bị nhà thông minh sử dụng NodeMCU ESP8266 và App Blynk
Thiết lập Feeds và Dashboards trên iO Adafruit
Tạo Feeds iO Adafruit
Các bạn truy cập vào website io.adafruit.com để tạo nhé.
Chọn “Feeds – Actions – Create a New Feed” .
- Name: Đặt tên cho Feed “onoff”.
- Description: Phần mô tả thông tin dự án bạn đang thực hiện (phần này không bắt buộc) và nhấn Create để hoàn thành.
Dashboards iO Adafruit
Bây giờ chúng ta sẽ tạo một Dashboards (bảng điều khiển) để điều khiển trực tiếp trên Adafruit IO.
Chọn Dashboards > Actions > Create a New Dashboard.
Chúng ta đặt tên cho bảng điều khiển và mô tả dự án đang thực hiện.
Chọn dấu + để tạo block mới và chọn Toggle như hình.
Tiếp theo vào Group / Feed đã tạo (Create a New Feed) và nhấn Next step.
Ở mục Block Title mình đặt là Arduinokit.vn, ở đây bạn ghi gì cũng được nhé.
- Button On Text: 1 (trạng thái bật).
- Button Off Text: 0 (trạng thái tắt).
Tiếp theo nhấn Create Block.
Active Key Adafruit
Bạn chọn Dashboards/Bảng điều khiển chọn cái chìa khóa màu vàng.
Chúng ta quan tâm đến Username và Active Key.
Phần này chúng ta Copy và cho vào trong Code nhé.
Thiết lập IFTTT Webhooks
Trong bài viết Điều khiển thiết bị bằng giọng nói thông qua Google Assistant Tiếng Viết sử dụng ESP8266, Blynk và IFTTT mình đã hướng dẫn chi tiết cách để tạo tài khoản trên IFTTT nên phần này các bạn xem lại bài trước để hiểu rõ hơn nhé.
Sau khi đăng nhập thành công các bạn Click vào “My Applets” và chọn “New Applet” để tạo một dự án mới.
Bấm vào + this.
Và chọn Webhooks nhé.
Tiếp theo ta chọn Receive a web request nhé.
Nhập bất kỳ tên sự kiện nào ở đây mình ghi là “Arduinokit.vn”
Sau đó nhấn vào Create trigger
Tiếp theo, nhấp vào + that.
Tìm kiếm đến Adafruit và bấm kết nối.
- Tiếp theo nhấp vào Send data to Adafruit IO
- Mục Feed name mình chọn “onoff” ở phần tạo một Feed dự án ban đầu.
- Chọn Value1 bằng cách nhấp vào Add ingredient.
- Tiếp theo nhấn Create action.
Quay lại My Applest > Services > Webhooks vào phần Settings và Copy đoạn mã được bôi đậm như hình, (Lưu đoạn mã vào note để lát sử dụng nhé).
Thiết lập chatfuel với Facebook
Truy cập https://chatfuel.com/ và nhấp vào đăng nhập bằng Id Facebook của bạn.
Lưu ý trong bước này bạn cần tạo cho mình một Fanpage trên Facebook.
Truy cập vào Link để đăng ký: https://www.facebook.com/pages/creation/
Sau khi hoàn tất việc đăng ký nhấn Create from Template để bắt đầu thiết lập.
Ở mục Automate chúng ta cần đặt câu lệnh để điều khiển thiết bị.
- Nhấn vào RELAY ON chọn dấu + (tô vàng) ở mục Test & Send content ta chọn Test và điền câu lệnh trả về ở đây mình ghi là “OK.Đèn Đã Được Bật”.
- Nhấn vào RELAY OFF chọn dấu + (tô vàng) ở mục Test & Send content ta chọn Test và điền câu lệnh trả về ở đây mình ghi là “OK Đèn Đã Được Tắt”.
Thiết lập Chatfuel với IFTTT
Thiết lập URL cho 2 nút điều khiển RELAY ON và RELAY OFF.
Chọn Relay ON và nhấp vào + đăng nhập và chọn APIJSON từ các Plugin Chatfuel.
Các bạn làm theo cú pháp: https://maker.ifttt.com/trigger/Event Name/with/key/mã kích hoạt/?value1=1
- “Event Name”: Tên sự kiện mình đặt là Arduinokit.vn
- “mã kích hoạt”: m02i62jB5pkMh3xGAl5nljPnWtA0EofB2iJWieuVgdo
- “value=1”: dành cho RELAY ON.
URL 1: https://maker.ifttt.com/trigger/Arduinokit.vn/with/key/m02i62jB5pkMh3xGAl5nljPnWtA0EofB2iJWieuVgdo/?value1=1
URL 2: https://maker.ifttt.com/trigger/Arduinokit.vn/with/key/m02i62jB5pkMh3xGAl5nljPnWtA0EofB2iJWieuVgdo/?value1=0
Nhấp vào mục Set Up AI ở bên trái màn hình: Ở phần này các bạn có thể đặt thêm các câu thoại dùng để bật tắt thiết bị.
Sơ đồ đấu nối
NodeMCU ESP8266 | Relay |
Vin | 5V |
GND | GND |
D0 | IN |
Các linh kiện cần thiết cho dự án
Tên linh kiện | Số lượng |
NodeMCU ESP8266 | 1 |
Dây cắm | 3 |
Relay | 1 |
Bóng đèn 220V | 1 |
Code
#include <ESP8266WiFi.h> #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #define WLAN_SSID "Nha Tro 4" #define WLAN_PASS "nguyennam" #define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 #define AIO_USERNAME "hu123" #define AIO_KEY "62fd797b121e4f2f89353f0711393257" #define led D0 WiFiClient client; Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY); Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/onoff"); void MQTT_connect(); void setup() { pinMode(led, OUTPUT); digitalWrite(led, LOW); Serial.begin(115200); delay(10); Serial.println(F("Adafruit MQTT demo")); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(WLAN_SSID); WiFi.begin(WLAN_SSID, WLAN_PASS); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); mqtt.subscribe(&onoffbutton); } uint32_t x=0; void loop() { MQTT_connect(); Adafruit_MQTT_Subscribe *subscription; while ((subscription = mqtt.readSubscription(5000))) { if (subscription == &onoffbutton) { Serial.print(F("Got: ")); Serial.println((char *)onoffbutton.lastread); String response = (char*)onoffbutton.lastread; if (response == "1"){ digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } } } } void MQTT_connect() { int8_t ret; // Stop if already connected. if (mqtt.connected()) { return; } Serial.print("Connecting to MQTT... "); uint8_t retries = 3; while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected Serial.println(mqtt.connectErrorString(ret)); Serial.println("Retrying MQTT connection in 5 seconds..."); mqtt.disconnect(); delay(5000); // wait 5 seconds retries--; if (retries == 0) { // basically die and wait for WDT to reset me while (1); } } Serial.println("MQTT Connected!"); }
Thư viện
Download thư viện “Adafruit_MQTT.h”: Tải ngay
Download thư viện “Adafruit_MQTT_Client.h” :Tải ngay
Giải thích Code
WiFi.begin("wifi router name", "wifi router pass");
- “WLAN_SSID”: Tên Wifi.
- “WLAN_PASS”: Mật khẩu Wifi.
#define AIO_USERNAME "hu123" #define AIO_KEY "62fd797b121e4f2f89353f0711393257"
- Username: “hu123”
- Active key: “62fd797b121e4f2f89353f07113xxxxx”
Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/onoff");
Các bạn làm theo cú pháp: “&mqtt, AIO_USERNAME/feeds/feedname”
- “username”: Tên người dùng.
- “feeds”: cái này các bạn để mặc định.
- “feedname”: tên Feed mà bạn đã đặc cho dự án.
Nguồn: arduinokit.vn
Để lại một bình luận