Tải bản đầy đủ (.docx) (35 trang)

KẾT NỐI IOT VỚI FB QUA NODERED

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.6 MB, 35 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG

BÁO CÁO ĐỒ ÁN I

Đề tài:

Xây dựng hệ thống gửi tin nhắn cảnh báo cho hệ
thống IOT qua ứng dụng mạng xã hội.

Sinh viên thực hiện:

CAO ĐÌNH THẮNG
Lớp ĐT5 – K59


Mục Lục


Phần 1. Tổng quát đề tài

1.1 Yêu cầu của đề tài
Nói chung, một hệ sinh thái IOT (Internet Of Things) gồm rất nhiều khâu khác
nhau, có thể tổng quát chúng như sau : cảm biến (sensor) thu thập các thông tin cần
thiết sau đó gửi chúng lên một trung tâm xử lý (Cloud, Server, v.v), trung tâm xử lý
nhận được thông tin đầu vào sẽ lưu trữ, xử lý chung và xuất lệnh ở đầu ra, lệnh đầu ra
có thể là yêu cầu kích thích hành động cho một hệ thống cơ học hoặc có thể là một tin
nhắn thông báo đến người dùng, v.v. Giả thiết người dùng cần thông tin về tình trạng
hoạt động của hệ thống, hệ thống sẽ đáp ứng nhu cầu đó bằng việc gửi một thông báo
dưới dạng tin nhắn xuống thiết bị nhận thông tin của người dùng (SmartPhone, Laptop,


v.v ) thông qua các ứng dụng mạng xã hội (Facebook Messenger, Skype, Twiter, v.v ).
Yêu cầu đề tài đưa ra là xây dựng liên kết trung tâm xử lý với thiết bị của người dùng
với mục đích gửi tin nhắn thông báo.
1.2 Phân tích và đưa ra cách giải quyết.
Giả sử, ta có một hệ thống IOT Vườn thông minh với cảm biến đo độ ẩm và
nhiệt độ của đất. Dữ liệu từ cảm biến được gửi tới bộ xử lý trung tâm, nếu giả sử có
tính toán gì đó xong, nó sẽ đưa ra quyết định giả sử như là “ Đất bị khô quá, hãy tưới
cây đi !” và bản tin đó cần chuyển về dạng tin nhắn trên điện thoại di động. Mô hình
hóa hệ thống trên :


Sensor

Bộ xử lý trung tâm

Thiết bị người dùng

-

Cảm biến (sensor) : trong phạm vi đề tài, ta chỉ quan tâm đến khâu gửi thông tin

-

tới người dùng nên sử dụng mô phỏng cho các đầu ra khối là hợp lý nhất.
Bộ xử lý trung tâm : trong phạm vị đề tài, bộ xử lý trung tâm không có chức
năng lưu trữ thông tin mà chỉ có chức năng xử lý các dữ kiện đầu vào để đưa ra
các quyết định gửi tới người dùng. Để dễ dàng và thuận tiện trong việc mô
phỏng hoạt động của hệ thống, nên chọn các nền tảng phần mềm thay vì phần

-


cứng cồng kềnh, phức tạp.
Thiết bị người dùng: sử dụng các thiết bị di động như smartphone, laptop để
nhận thông báo thông qua các ứng dụng nhắn tin phổ biến.

Hiện nay, có rất nhiều công cụ giả lập Cloud cho phép cho chúng ta mô phỏng
hoạt động của một hệ thống IOT. Một trong những công cụ đó là Node-RED trên
Bluemix của IBM.
Node-RED là một công cụ phát triển dựa trên các luồng
liên kết (Flow) được phát triển bởi IBM với mục đích
ban đầu là kết nối các thiết bị phần cứng, APIs và các
dịch vụ trực tuyến như một phần của Internet Of Things.
Node-RED cung cấp trình biên tập luồng dựa trên trình
duyệt, có thể được dùng để tạo các hàm Javascript. Các
thành phần của ứng dụng có thể được lưu lại hoặc chia


Với những tiện ích mạnh mẽ mà nó mang lại, Node-RED là công cụ phù hợp cho mục
đích phát triển các hệ thống IOT từ đơn giản cho đến phức tạp. Chi tiết các bạn có thể
xem trên trang web: />Mạng xã hội đang ngày càng phát triển và Facebook là một trong số đó. Với số
lượng người sử dụng lớn, Facebook là nơi trao đổi thông tin, quảng cáo, phát triển ứng
dụng của rất nhiều người trên thế giới và có lượt truy cập đứng thứ hai thế giới chỉ sau
Google.com (tính đến tháng 9 năm 2012). Đối với các nhà phát triển, Facebook cung
cấp nhiều nền tảng và dịch vụ để phát triển và mang tới người dùng toàn cầu ứng dụng
của mình. Facebook mới đây đã mở Messenger Platform ra cho các lập trình viên dùng
thử, mục đích của nó là để tạo ra những con bot tự động phản hồi lại tin nhắn của
người dùng trên các fanpage theo cách chưa từng có trước đây. Messenger Platform
cho phép đọc các tin nhắn gửi đến, hiểu được nội dung mà người dùng muốn là gì, sau
đó gửi lại tin trả lời dưới dạng văn bản thuần túy, hình ảnh, hình ảnh nhúng, link hay
thậm chí là các thẻ thông tin với nút bấm trên đó. Lợi tính năng phản hồi tin nhắn của

người dùng trên các Page, ta có thể đẩy thông báo cho người dùng thông qua ứng dụng
nhắn tin Messenger.


Phần 2: Giới thiệu về Node-Red và
Messenger Platform
2.1 Node-RED
2.1.1 Hướng dẫn đăng ký tài khoản Bluemix.
IBM Bluemix là một cloud platform như một service (PaaS), nghĩa là nó cho
phép khách hàng có thể phát triển, chạy và quản lý các ứng dụng mà không cần phải
xây dựng và bảo trì phức tạp nào trong toàn bộ hạ tầng liên quan tới việc phát triển ứng
dụng. Lý do chúng ta đang sử dụng nó để đưa ra những IoT services – chúng ta có thể
dễ dàng kết nối và quản lý thiết bị chúng ta. Thêm một điểm nữa, có rất nhiều các
services khác mà chúng ta có thể dễ dàng kết nối thiết bị chúng ta vào, cho phép nhanh
chóng phát triển những hệ thống phức tạp một cách thuận tiện. Ví dụ như một kỹ sư
điện tử và ai đó không có kinh nghiệm trong việc phát triển web/cloud, việc tìm được
IBM Bluemix như một platform hết sức tuyệt vời cho việc xây dựng những ứng dụng
mà không yêu cầu bạn tốn nhiều thời gian để học những thứ mới từ đầu. Thay vào
những giới hạn triển khai ý tưởng hoặc tuyệt vọng khi nhờ một ai đó, với IBM
Bluemix bạn có thể làm rất nhiều thứ tuyệt vời.
Để bắt đầu xây dựng ứng dụng, bạn phải tạo một account. Vào
và đăng ký. Bạn có thể sử dụng IBM Bluemix hoàn
toàn miễn phí trong 30 ngày. Sau đó bạn phải add credit card của bạn vào, bạn sẽ
không bị thu phí trừ khi bạn vượt ngưỡng giới hạn, nó đủ nếu bạn chỉ chơi và thử
những ý tưởng của bạn và bạn vẫn chưa có kế hoạch sửa dụng nó cho mục đích thương
mại. Để biết thêm thông tin về giá bạn click vào đây.
Sau khi tạo một account, đăng nhập. Điều đâu tiên bạn đăng nhập là một cửa sổ
hỏi bạn thiết lập môi trường (environment) để hiển thị.



Figure 1 Setting up environment

Tên tổ chức của bạn (dự án hoặc team mà chia sẻ tài nguyên, như apps,
databases, và những service khác) và chọn vùng (vị trí địa lý nơi tổ chức của bạn). Với
region thì chọn US South bởi vì có một vài tính năng chúng sẽ được hỗ trợ chỉ trong
vùng này. New organizations có thể được nhập vào sau nếu cần thiết. Bây giờ bạn phải
chọn space name, ví dụ như dev. Sau khi thiết lập environment, bạn đã sẵn sàng để sử
dụng IBM Bluemix.
Nếu bạn vào Dashboard, trong space của bạn có thể thấy tất cả các ứng dụng
bạn tạo ra và tất cả các services, các container và server ảo mà bạn chọn để dùng.



Figure 2 Main Dashbroad

Bạn chưa tạo bất cứ thứ gì ở đây. Dưới Catalog tab, bạn có thể thấy rất nhiều các
option để phát triển, những service khác nhau (Boilerplates, Data, Mobile, third
party…) bạn có thể dùng để xây dựng rất nhiều dự án lớn.

Figure 3 Catalog

2.1.2 Tạo một App với Node-RED
Bạn có thể thấy là Bluemix hỗ trợ một vài ngôn ngữ lập trình. Chúng ta sẽ build ứng
dụng của bạn sử dung NodeRed. Nó là một tool trực quan để nối các thiết bị phần cứng
với nhau, APIs và các online service. Click vào browse Boilderplates và chọn NodeRed Starter. Nhập tên ứng dụng của bạn và click Create. Sau một lúc, nếu mọi thứ ổn
định, ứng dụng của bạn sẽ chạy. Nếu bạn vào main dashboard, bạn nên xem ứng dụng
của bạn được liệt kê phía dưới các ứng dụng. Nếu click lên nó, bạn sẽ xem app status,
memory còn trống, các service liên quan… Lưu ý rằng Cloudant Database service liên
kết tới của ứng dụng của bạn một cách mặc định.



Figure 4 Node-RED Starter

Figure 5 Create App


Figure 6 App Status

Bạn có thể truy cập ứng dụng của bạn bằng cách click vào Visit App URL. Click vào
link và Go to your Node-Red flow editor. Trước khi vào trình biên tập App sẽ yêu cầu
bạn thiết lập Username và Password nếu bạn muốn giữ bảo mật ứng dụng của
mình.Sau khi hoàn tất các bước khởi tạo, trên vùng bên trái, bạn có thể thấy các node
được chia trong một vài categories (input, output, function, storage…).

Figure 7 Mainbroad App


Các Node build các block của ứng dụng chúng ta. Chúng ta đặt chung vào editor
và nối chúng để tạo ra một flow. Bạn có thể có nhiều flow trong một editor. Sau khi
chúng ta hoàn thành việc kết nối các node, chúng ta click Deploy button trong góc phải
bên dưới. Ví dụ, flow có thể đơn giản nhất như sau:

Figure 8 Simple Flow

Inject và debug node nối với nhau. Double click vào trong jnject node để thiết
lập nó. Chọn chuỗi như loại payload và nhập payload tùy ý, ví dụ “Hello World”. Mỗi
lần bạn click vào inject, chuỗi bạn nhập vào được hiện thị trên debug console (để xem
debug console, click debug dưới Deploy button).
Đây là flow phức tạp hơn. Chúng ta thêm vào một function node với JavaScript
code để thống kê giá trị input.



Figure 9 Simple Flow with function node

Giờ bạn đã nắm được ý tưởng. Bạn chọn các node và kết nối chúng để build các
flow chức năng của ứng dụng của bạn.

2.2 Messenger Platform.
2.2.1 Đăng ký tài khoản Facebook For Developer và tạo công cụ Messenger Platform.
Để có thể sử dụng công cụ Messenger Platform của Facebook, bạn cần đăng ký
tài khoản dành cho nhà phát triển. Trước hết, bạn đăng kí tài khoản faceboook mới
dùng cho việc phát triển ứng dụng của bạn, truy cập vào đường link :
trên cùng một trình duyệt và chọn Bắt đầu


Figure 10 Facebook For Developer
Facebook sẽ yêu cầu chấp nhận các chính sách về bảo mật để đăng ký làm nhà
phát triển của Facebook, tích vào nút switch và chọn Tiếp.

Figure 11 Register Facebook Developer


Điền các thông tin cần thiết vào các trường đăng ký và chọn Đăng Ký.

Figure 12 Add necessary information
Sau khi xác minh mã Captcha, bạn sẽ vào vào mainbroad Facebook For
Developer.

Figure 13 Mainbroad



Tiếp theo bạn cần tạo một ứng dụng mới, chọn Tạo ứng dụng ở góc phải màn hình,
điền tên ứng dụng mà bạn muốn hiển thị và email liên hệ, chọn Tạo ID ứng dụng và
thực hiện bước kiểm tra bảo mật để hoàn thành.

Figure 14 Create ID Application

Figure 15 Check Security


Sau khi tạo xong ứng dụng, trình duyệt sẽ đưa bạn tới Mainbroad của ứng dụng.
Chọn Thêm sản phẩm, tìm đến Messenger và chọn Thiết lập.

Figure 16 Add product Messenger
Hoàn thành các bước trên là bạn có thể sử dụng các tiện ích trong Messenger
Platform.

Figure 17 Messenger Platform


2.2.2 Tạo Page gửi thông báo và địa chỉ webhook cho ứng dụng.
Ứng dụng này chỉ cho phép bạn gửi và nhận tin nhắn từ người dùng thông qua
một Page đã tạo trước. Các bước tạo hết sức đơn giản: bạn truy nhập vào tài khoản
Facebook của mình, tìm tới bảng điều khiển và chọn Tạo Trang.

Figure 18 Create Page with name ‘Sensor_ESp8266’
Để có thể nhận và gửi tin nhắn từ Page đã tạo, cần tạo nút gửi tin nhắn cho
Page. Chọn vào phần Tìm hiểu thêm ở dưới ảnh bìa, Tùy chọn khác > Liên hệ > Gửi
tin nhắn và chọn Thêm nút.



Figure 19 Add message button
Sau khi hoàn thành việc tạo Page, ta sẽ kết nối nó với app đã tạo. Bạn truy nhập
vào trang mainbroad Messenger, tìm tới phần tạo mã, chọn Trang ‘Sensor_ESp8266’
vừa tạo và hoàn thành xác minh quyền truy nhập.

Figure 20 Create Verify Token


Figure 21 Access Permisson
Một Mã truy nhập trang được tạo ra, ta sẽ dùng nó ở bước sau nên hãy copy nó
và đâu đấy.
Bước tiếp theo bạn cần thiết lập địa chỉ webhook. Tính năng Webhooks API cho
phép ứng dụng nhận thông báo trong thời gian thực về những thay đổi đối với các phần
dữ liệu được chọn. Hiểu một cách đơn giản thì mọi thông tin được người dùng gửi tới
Page thông qua ứng dụng sẽ được gửi tới địa chỉ webhook dưới dạng một Object, trong
Object sẽ chứa các trường thông tin với các mục đích khác nhau. Để thiết lập đăng ký,
bạn cần có :
• URL gọi lại (url callback) : URL đến điểm cuối có thể xử lý yêu cầu xác minh
và thông báo cập nhật. Ở đây ta sẽ lấy địa chỉ Url của app Node-RED mà chúng
ta đã tạo ở phần trước “ />Phần <op> là phần tự chọn, ở đây ta sẽ lấy tên là /urlappsensor .
• Mã xác minh — bất kỳ chuỗi nào mà bạn cung cấp và App sử dụng mỗi khi nó
gửi cho bạn yêu cầu xác minh.Ví dụ: “this_is_my_string_token_app”.


Sau khi có những thông tin này, bạn có thể bắt đầu quá trình thiết lập. Tìm tới
phần Webhook trong mainbroad Messenger và chọn Thiết lập Webhooks.

Figure 22 Webhooks
Điền các thông tin cần thiết, chọn trường gửi ‘messages’ và chọn Xác minh và

lưu .

Figure 23 Set up Webhook
Sẽ có lỗi xác ra vì chưa nhận được xác minh từ urlcallback. Bước tiếp theo, bạn
cần truy nhập tới trình biên tập Node-RED và xây dựng một Flow cho việc xác minh


địa chỉ webhooks. Để xem Object xác minh mà Messenger đã gửi tới, bạn cần xây
dựng một Flow như sau:
• Node input ‘http’ : Method = GET , URL = /urlappsensor .
• Node output ‘debug’ .
Nối chúng với nhau và Deploy.

Figure 24 Flow
Như thế khi bạn yêu cầu xác minh tại phần Thiết lập webhook, một bản tin sẽ
được gửi tới app Node-RED thông qua node ‘http’ và được hiển thị qua node ‘debug’.
Bản tin được gửi tới
{
"hub.mode":"subscribe",
"hub.challenge":"1937416328",
"hub.verify_token":"this_is_my_string_token_app"
}


Figure 25 Message Verification
Để xác minh, bạn cần gửi lại một bản tin thông báo cho Messenger rằng bạn đã
nhận được yêu cầu. Bản tin xác minh sẽ giống hoàn toàn với bản tin yêu cầu xác minh.
Thêm vào Flow :
• Node ‘funtion’ với đoạn code :
var mode = '';

var vtoken = '';
l0 var challenge = '';
if (msg.payload['hub.mode'])
{
mode = msg.payload['hub.mode'];
}
if (msg.payload['hub.verify_token'])
{
vtoken = msg.payload['hub.verify_token'];
}
if (msg.payload['hub.challenge'])
{
challenge = msg.payload['hub.challenge'];
}
if ('subscribe' == mode &&
'VERIFY_TOKEN_IN_HERE' == vtoken) {
msg.payload = challenge;
}
return msg;
Thay phần 'VERIFY_TOKEN_IN_HERE' bằng mã xác minh của bạn.
• Node ‘http response’ để phản hồi lại yêu cầu.


Nối chung lại với nhau và Deploy.

Figure 26 Flow verify
Như vây, bạn đã xác minh thành công địa chỉ webhook cho app. Chọn trang
‘Sensor_Esp8266’ và chọn Đăng ký.

Figure 27 Subcriber Page

Sau khi hoàn thành các bước trên, bạn đã tạo được liên kết giữa Facebook
Messenger và App Node-RED trên bluemix, phần tiếp theo sẽ hướng dẫn cách để đẩy
tin nhắn mô phỏng trên Node-RED xuống Messenger.


Phần 3: Xây dựng Flow gửi tin nhắn cho Messenger
3.1 Developer và User trong Messenger Platform
Để mô phỏng cho việc tin nhắn thông báo tới Messenger của người dùng, bạn
cần một tài khoản Faceboook khác. Hãy mở một trình duyệt mới và đăng nhập vào
Facebook, ở đây bạn cần có một tài khoản Facebook làm ví dụ cho tài khoản của người
dùng. Facebook ‘Cyan’ cho Developer chạy trên Firefox và facebook ‘Pig’ cho Users
chạy trên Chrome như ở ví dụ này.

Figure 28 User 'Pig'


×