Xây dựng ứng dụng Internet of Things với trợ lý ảo Google Assistant và ESP8266 sử dụng Smart home Actions (P1)

Actions on Google là nền tảng của Google cho phép các nhà phát triển có thể viết các phần mềm, tạo ra các ứng dụng nhằm mở rộng tính năng của trợ lý Google Assistant. Nghĩa là với nền tảng này, nhà phát triển được hỗ trợ đầy các công cụ để tích hợp trợ lý ảo Google Assistant vào nền tảng của họ. Actions on Google bao gồm 2 mô hình khác nhau: Smart home Actions Conversational Actions.

Trong chuỗi bài viết trước đây, mình đã hướng dẫn các bạn xây dựng ứng dụng Internet of Things giúp điều khiển và giám sát các thiết bị  thông qua giọng nói với Google Assistant sử dụng mô hình Conversational Actions. Mô hình này giúp xây dựng hội thoại tự nhiên tương tác 2 chiều giữa người dùng và trợ lý, có nhiều ưu điểm về độ linh động và tùy biến tuy nhiên yêu cầu chúng ta phải sử dụng thêm Dialogflow hoặc nền tảng phụ trợ để xây dựng riêng phần hội thoại cho ứng dụng, các bạn có thể theo dõi chuỗi bài viết trên ở đây mình đã hướng dẫn rất chi tiết từng bước về cách xây dựng ứng dụng IoTs sử dụng mô hình Conversational Actions này.

Với mô hình Smart home Actions, chính tên của nó đã nói lên ý nghĩa rằng Google muốn hướng tới đối tượng cụ thể là các ứng dụng nhà thông minh. Google đã cung cấp sẵn API với hơn 20 loại thiết bị phổ biến khác nhau, các nhà phát triển không cần xây dựng ngữ cảnh cũng như nội dung hội thoại để tương tác với trợ lý ảo mà chỉ cần tập trung vào phát triển phần cứng thiết bị và cơ chế xác thực Auth 2.0 cùng với cơ sở dữ liệu người dùng để xác thực người dùng. Đây cũng chính là mô hình mà các hãng sản xuất thiết bị thông minh như Broadlink, Sonoff, Xiaomi,… sử dụng để tích hợp trợ lý ảo Google vào hệ sinh thái của hãng. Và một điểm cực kỳ tiện lợi của mô hình này đó là được hỗ trợ giao diện quản lý thiết bị trên ứng dụng Google Home. Nếu các bạn mong muốn xây dựng ứng dụng IoTs tích hợp trợ lý ảo Google nhanh chóng, có giao điện thoại hỗ trợ thì đây chính là bài hướng dẫn dành cho bạn.

Chuỗi viết này mình sẽ hướng dẫn các bạn từng bước xây dựng ứng dụng IoTs điều khiển giám sát thiết bị sử dụng mô hình Smart home Actions, đây là một mô hình tương đối khó nắm bắt nên mình sẽ cố gắng hướng dẫn chi tiết nhất có thể để mong muốn giúp các bạn không chỉ làm được mà còn có thể mở rộng phát triển thêm.

Phần 1: Phân tích thiết bị thông minh hỗ trợ mô hình Smart home Actions

Trước khi đi vào nghiên cứu lý thuyết và thực hành xây dựng ứng dụng, trong phần này chúng ta hãy cùng tìm hiểu xem một thiết bị thông minh có tích hợp trợ lý ảo Google sẽ được cài đặt như thế nào trước khi sử dụng từ đó có thể rút ra được nếu chúng ta ở vai trò nhà phát triển thì chúng ta cần phải xây dựng những gì nhé. Thiết bị mình sử dụng là Sonoff basic, đầu tiên mở ứng dụng Google Home, giao diện ban đầu mình đã tạo là TAPIT House, trong đó có một thiết bị Google Home mình đã thêm sẵn trong phòng Office.

Bây giờ để thêm thiết bị Pow vào phòng Office, mình chọn Add và tìm đến tên ứng dụng của hãng là Smart We Link như hình, lúc này sẽ hiện ra một giao diện yêu cầu xác thực bằng số điện thoại và mật khẩu mà mình đã đăng ký trước đó với hãng khi mới mua về. Bước này có tên là Account linking, tức là liên kết tài khoản nhằm cho phép ứng dụng Google Home sử dụng tài nguyên là các thiết bị thuộc sở hữu bởi tài khoản của mình.

      

Sau khi Account linking thành công, chúng ta thấy rằng ứng dụng tự load thiết bị Pow về giao diện Google Home, thực tế bản chất của quá trình này là Google Home đã gửi một yêu cầu đến server Smart We Link yêu cầu đồng bộ thiết bị về và nhận được phản hồi danh sách thiết bị hiện có từ server, yêu cầu này có tên là SYNC intent.

Cuối cùng chúng ta chỉ việc thêm thiết bị Pow vào phòng Office và điều khiển, truy vấn trạng thái của thiết bị thoải mái thông qua giao diện Google Home và giọng nói. Mỗi lượt điều khiển (ví dụ: “Hey Google, turn on Pow!”) thì thực tế Google Home vừa gửi đi một yêu cầu có tên là EXEC intent. Tương tự mỗi lượt truy vấn trạng thái (ví dụ: “Hey Google, is Pow on?”) thì Google vừa gửi đi một yêu cầu có tên là QUERY intent.

Tóm lại tất cả quy trình sử dụng có thể được mô tả ở sơ đồ sau:

 

Giải thích cụ thể hơn:

  • Bước 1 (Account linking): Ban đầu khi mua thiết bị thông minh về, để sử dụng thì người dùng phải đăng ký tài khoản với server của hãng sản xuất, sau đó tài khoản của người dùng sẽ được toàn quyền sở hữu tài nguyên là danh sách các thiết bị đã mua và các tài nguyên khác, đối với tài khoản của mình thì chính là thiết bị Sonoff  Pow. Vì vậy để có thể liên kết ứng dụng Google Home cũng như trợ lý ảo Google với thiết bị, chúng ta phải cấp quyền sử dụng tài nguyên đó cho Google bằng cách xác thực như trên, cơ chế xác thực như vậy được gọi OAuth 2.0. Đây là cơ chế xác thực mà chúng ta thường gặp khi cấp quyền sử dụng cho một ứng dụng bên thứ 3 bằng cách chọn đăng nhập Facebook hoặc Gmail. Để nhận xử lý các yêu cầu liên quan đến xác thực này, nhà phát triển cần phải xây dựng 2 server là auth server token server hoặc có thể gộp chung vào thành 1 server.
  • Bước 2 (SYNC): Ngay sau khi liên kết tài khoản và cấp quyền cho Google thành công, Google sẽ tự động gửi đi một yêu cầu để đồng bộ danh sách thiết bị từ server về, Google định nghĩa các yêu cầu gửi đi được gọi là các intent và yêu cầu đồng bộ này có tên là đầy đủ là action.devices.SYNC.
  • Bước 3 (EXEC/QUERY): Bước này liên quan đến quá trình sử dụng thiết bị của người dùng, Google cung cấp 2 lựa chọn là điều khiển (Execute) và truy vấn trạng thái (Query), tương ứng intent yêu cầu sẽ có tên đầy đủ là action.devices.EXECUTEaction.devices.QUERY.

Bên cạnh auth/token server để xử lý Account linking, để nhận xử lý và phản hồi đối với các intent: SYNC, EXEC QUERY chúng ta cần xây dựng một server có tên là smarthome server. Như vậy, toàn bộ việc tiếp nhận yêu cầu, tương tác với người dùng sẽ do Google đảm nhận ở phía bên trái của sơ đồ, còn công việc của chúng ta là chỉ cần xây dựng các server ở bên phải sơ đồ để xử lý các yêu cầu của người dùng được chuyển tiếp từ Google, thật đơn giản phải không nào. Qua phần này chúng ta đã hiểu về quy trình hoạt động của Smart home Actions rồi, những phần tới chúng ta sẽ tiếp tục tìm hiểu về cách tạo project, xây dựng hệ thống, lập trình server và kết nối phần cứng, cùng theo dõi đón xem nhé.

Nhóm TAPIT IoTs

Xem tiếp Phần 2: Khởi tạo Smart home project và cài đặt môi trường lập trình

Xem thêm: Video youtube hướng dẫn thực hiện ứng dụng

Xem thêm: Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32