Cài đặt nền tảng ThingsBoard

Một phần của tài liệu (Luận văn thạc sĩ) Nghiên cứu xây dựng phần mềm thu thập và giám sát dữ liệu trong nông nghiệp thông minh sử dụng nền tảng THINGS BOARD (Trang 46 - 59)

3.1.1.Cấu hình yêu cầu

Things Board được hỗ trợ cài đặt tên 2 nền tảng phổ thông hiện nay tùy theo nhu cầu của người sử dụng là Cài đặt tại máy chủ (On Premise) hoặc Cài đặt trên điện toán đám mây (On Cloud). Ở luận văn này, học viên tập trung vào tìm hiểu cách sử dụng và vận hành Things Board. Do đó, luận văn lựa chọn phương pháp cài đặt tại máy tính. Things Board hỗ trợ rất nhiều nền tảng hệ điều hành phổ thông hiện nay có thể kể đến như: Windows, Linux, Docker, Raspberry Pi OS…

Hình 3. 1: Các nền tảng hệ điều hành Things Board hỗ trợ

Với khả năng hỗ trợ chạy đa dạng các nền tảng cho phép Things Board có thể dễ dàng được cài đặt tùy thuộc vào nhu cầu sử dụng của người dùng cũng như

37

các ràng buộc của dự án. Things Board yêu cầu máy có cấu hình tối thiểu với 1GB bộ nhớ, nhưng khuyến nghị 8GB RAM để đảm bảo hoạt động của phần mềm được ổn định. Ở luận văn này, học viên tập trung vào sử dụng Things Board trên nền tảng Linux cụ thể là Ubuntu 18.06. Quá trình cài đặt chi tiết được trình bày ở mục 3.2.2.

3.1.2.Cài đặt nền tảng Things Board trên Ubuntu Bước 1: Cài đặt nền tảng Java (JDK)

Để cài đặt JDK (Java 11) trên Ubuntu, người dùng cần thực hiện chạy các lệnh tương ứng sau trên Terminal của hệ điều hành.

sudo apt update

sudo apt install openjdk-11-jdk

Sau khi cài đặt thành công JDK, người dùng cần cấu hình Java 11 là dịch vụ Java mặc định của hệ thống. Để làm việc đó, người dùng sử dụng lệnh sau: sudo update-alternatives --config java

Để kiểm tra lại việc cài đặt java và cấu hình đã thành công, chúng ta cần kiểm tra phiên bản java mặc định của hệ thống thông qua lệnh sau:

java –version

Nếu kết quả trên Terminal trả về như dạng sau thì có thể tiếp tục chuyển sang bước 2.

openjdk version "11.0.xx"

OpenJDK Runtime Environment (...) OpenJDK 64-Bit Server VM (build ...)

Bước 2: Cài đặt ThingsBoard service

Ở bước 2, cần tiến hành cài đặt ThingsBoard service làm nền tảng cho hoạt động của ThingsBoard trên máy được cài đặt. Phần mềm ThingsBoard đã được hãng công bố đường dẫn chính thức, do vậy để cài đặt chúng ta chỉ cần tải về chương trình cài đặt thông qua trình wget sau đó thực thi chạy file cài đặt. Cụ thể lệnh tải về và cài đặt phần mềm như sau:

38

wget

https://github.com/thingsboard/thingsboard/releases/downlo ad/v3.3.2/thingsboard-3.3.2.deb

sudo dpkg -i thingsboard-3.3.2.deb

Sau một quá trình 2 lệnh được thực thi thì phần mềm ThingsBoard đã được cài đặt trên máy tính mà chúng ta sử dụng. Bước kế tiếp là cấu hình cho ThingsBoard hoạt động theo ý muốn của chúng ta.

Bước 3: Cấu hình cơ sở dữ liệu cho ThingsBoard

ThingsBoard hỗ trợ nhiều cách thức triển khai các dịch vụ Database (CSDL) khác nhau tùy thuộc vào nhu cầu của người sử dụng và tài nguyên mà hệ thống có.

Hình 3. 2: Các phương án cấu hình CSDL của ThingsBoard

Với khuyến nghị của hãng và nhu cầu thực tế sử dụng với số lượng bản tin truyền tải nhỏ (<5000 bản tin/giây), trong luận văn sử dụng PostgreSQL làm cơ sở dữ liệu chính cho hệ thống. Nếu có nhu cầu ứng dụng cao hơn chúng ta có thể dễ dàng cấu hình cơ sở dữ liệu thay thế cho hệ thống. Đặc tính này cho phép ThingsBoard có khả năng hoạt động linh hoạt tùy thuộc vào ứng dụng cũng như nhu cầu mở rộng hệ thống theo thời gian.

Để cài đặt PostgreSQL, chúng ta cần lần lượt thực hiện các lệnh sau:

# install **wget** if not already installed: sudo apt install -y wget

# import the repository signing key: wget --quiet -O -

39

https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# add repository contents to your system: RELEASE=$(lsb_release -cs)

echo "deb http://apt.postgresql.org/pub/repos/apt/ ${RELEASE}"- pgdg main | sudo tee /etc/apt/sources.list.d/pgdg.list # install and launch the postgresql service:

sudo apt update

sudo apt -y install postgresql-12 sudo service postgresql start

Sau khi PostgreSQL, tiếp tục tiến hành tạo tài khoản cũng như tạo CSDL có tên là thingsboard tương ứng trên nền tảng này. Việc tạo tài khoản và bảng CSDL được thực hiện qua các lệnh sau:

sudo su - postgres psql

\password \q

psql -U postgres -d postgres -h 127.0.0.1 -W CREATE DATABASE thingsboard;

\q

Để hoàn thiện cấu hình và cài đặt cho PostgreSQL, chúng ta cần thực hiện sửa nội dung file cấu hình của CSDL mà chúng ta đã tạo với nội dung tương ứng như sau:

sudo nano /etc/thingsboard/conf/thingsboard.conf

Nội dung file cấu hình:

# DB Configuration

export DATABASE_TS_TYPE=sql export

40 SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.Postgre SQLDialect export SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thi ngsboard export SPRING_DATASOURCE_USERNAME=postgres export SPRING_DATASOURCE_PASSWORD=PUT_YOUR_POSTGRESQL_PASSWORD_HE RE export SPRING_DATASOURCE_MAXIMUM_POOL_SIZE=5

# Specify partitioning size for timestamp key-value storage. Allowed values: DAYS, MONTHS, YEARS, INDEFINITE.

export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS

Như vậy, chúng ta đã cấu hình thành công cơ sở dữ liệu trên nền tảng PostgreSQL cho ứng dụng ThingsBoard.

Bước 4: Lựa chọn dịch vụ hàng đợi cho ThingsBoard

ThingsBoard cho phép người cấu hình có thể lựa chọn rất nhiều hệ thống phân phối tin nhắn để thực thi chia sẻ dữ liệu cũng như giao tiếp giữa hệ thống với các thiết bị tùy theo nhu cầu sử dụng cũng như đặc tính của các thiết bị mà người dùng sử dụng. Các dịch vụ mà ThingsBoard hỗ trợ có thể được kể đến như: In Memory, Kafka, RabbitMQ, AWS SQS, Google Pub/Sub, Google Pub/Sub, Confluent Cloud. Mỗi dịch vụ ở trên có những đặc tính nhất định phù hợp với các nhu cầu sử dụng khác nhau. Có những dịch vụ miễn phí và có cả những dịch vụ trả phí. Ở luận văn này do nhu cầu sử dụng không lớn về số lượng dữ liệu cũng như mục tiêu cá nhân muốn tìm hiểu sâu về ứng dụng nên học viên lựa chọn sử dụng dịch vụ In Memory được hỗ trợ sẵn bởi ThingsBoard dành cho mục đích chính là nghiên cứu và phát triển thử nghiệm. Dịch vụ In Memory được cài đặt mặc định cùng ThingsBoard ngay trong quá trình cài đặt ban đầu.

Ngoài ra, trong quá trình sử dụng nếu có nhu cầu, người dùng có thể nhanh chóng cấu hình và chuyển đổi sang dịch vụ khác để sử dụng, một ví dụ khác về việc cài đặt dịch vụ Kafka như một nền tảng hỗ trợ giao tiếp độc lập. Kafka được khuyến

41

nghị sử dụng khi đưa sản phẩm ra thị trường với các ứng dụng được tiến hành cài đặt tại máy chủ của người dùng (On Premise). Quá trình cài đặt Kafka cụ thể cần qua các bước sau:

sudo apt-get install zookeeper

wget https://archive.apache.org/dist/kafka/2.6.0/kafka_2.13- 2.6.0.tgz

tar xzf kafka_2.13-2.6.0.tgz

sudo mv kafka_2.13-2.6.0 /usr/local/kafka

sudo nano /etc/systemd/system/zookeeper.service

[Unit]

Description=Apache Zookeeper server

Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target

Bước 5: Chạy lệnh cài đặt phần mềm

Sau khi cài đặt đủ các thành phần cơ bản mà hệ thống yêu cầu như ở trên, hệ thống đã sẵn sàng để cài đặt khởi chạy các chương trình dịch vụ tương ứng. Để cài đặt một chương trình dịch vụ chúng ta sử dụng lệnh sau:

42

rules, widgets.

sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo

Trong đó loadDemo là tên của chương trình cần cài đặt.

Bước 6: Khởi chạy dịch vụ

Khi quá trình cài đặt thành công, dịch vụ có thể sẵn sàng sử dụng. Để chạy ứng dụng đã được cài đặt người dùng cần chạy lệnh tương ứng sau:

sudo service thingsboard start

Sau khi dịch vụ đã chạy thành công, người dùng có thể quan sát dữ liệu cũng như cấu hình các tham số thông qua giao diện web ở địa chỉ sau:

http://localhost:8080/

Giao diện của trang web sau khi được cấu hình thành công có kết quả dạng như sau:

Hình 3. 3: Giao diện ThingsBoard sau khi cài đặt thành công

3.1.3.Xây dựng một ứng dụng đơn giản với ThingsBoard

43

Để tạo một thiết bị mới, tại giao diện website của ThingsBoard người dùng chọn mục Device và chọn “+” để thêm một thiết bị mới. Sau thao tác trên, giao diện hiển thị một màn hình cấu hình thông tin như sau:

Hình 3. 4: Giao diện cấu hình thông tin thiết bị

Sau khi điền đầy đủ thông tin chọn “ADD” để thêm thiết bị vào hệ thống. Sau đó, chúng ta có thể chọn vào thiết bị để xem thông tin và cấu hình chi tiết cho thiết bị vừa mới được thêm vào.

44

Hình 3. 1: Giao diện thông tin chi tiết của thiết bị

Ở đây có một số thông tin quan trọng mà người dùng cần lưu ý, đó là: DEVICE ID: Đây là ID của thiết bị nằm trong hệ thống.

ACCESS_TOKEN: Đây là mã xác thực cho phép thiết bị kết nối vào hệ thống ThingsBoard. Khi lập trình hoặc cấu hình thiết bị chúng ta cần khai báo Token này ở thiết bị để đảm bảo thiết bị được xác thực và tham gia vào ThingsBoard thành công. Nếu không có Token này thiết bị sẽ không thể kết nối đến Server cũng như gửi gữi liệu lên hệ thống. Lưu ý: Mã Token này có thể được thay đổi theo nhu cầu của người dùng.

Ngoài ra, sau khi cấu hình người dùng có thể hiệu chỉnh các thông tin cũng như các dữ liệu mà thiết bị chứa ở các thẻ liên quan của thiết bị. Khi cấu hình thiết bị trên ThingsBoard hoàn tất, chúng ta chuyển sang xây dựng chương trình cho các thiết bị hoặc Gateway để kết nối và gửi dữ liệu lên hệ thống.

b) Gửi dữ liệu lên ThingsBoard qua MQTT

ThingsBoard hỗ trợ lập trình trên nhiều nền tảng như MCU, SBC (Máy tính nhúng), PC (Máy tính)… thông qua các thư viện tương ứng trên các nền tảng ngôn ngữ như: C/C++, Python, Nodejs… Trong phạm vi luận văn này

45

học viên sẽ xây dựng một ứng dụng bằng ngôn ngữ Python để thử nghiệm giả lập gửi dữ liệu lên Server thông qua giao thức MQTT. Chương trình được xâu dựng bằng cách sử dụng thư viện Paho MQTT làm nền tảng giao tiếp với Server. Sau khi kết nối đến Server, chương trình định kỳ gử một dữ liệu giả lập lên Server. Chương trình cụ thể như sau:

import time import sys import paho.mqtt.client as mqtt import json import random THINGSBOARD_HOST = '$YOUR_THINGSBOARD_HOST' ACCESS_TOKEN = '$YOUR_ACSESS_TOKEN' sensor_data = {'temperature': 0} minA = 10 maxA = 70 client = mqtt.Client() client.username_pw_set(ACCESS_TOKEN) client.connect(THINGSBOARD_HOST, 1883) client.loop_start() try: while True: temperature = random.randrange(minA,maxA) print("temperature:{:g}".format(temperature)) sensor_data['temperature'] = temperature client.publish('v1/devices/me/telemetry',json.dumps(se nsor_data)) time.sleep(10) except KeyboardInterrupt: pass client.loop_stop() client.disconnect()

Chương trình gửi dữ liệu giả lập nhiệt độ trong khoảng 10 – 70 định kỳ mỗi 10s lên hệ thống theo định dạng JSON. Dữ liệu được gửi lên sẽ được

46

ThingsBoard tiếp nhận và đưa vào trường dữ liệu của thiết bị tương ứng thông qua trường ACCESS_TOKEN đã được đề cập ở trên.

c) Cấu hình giao diện hiển thị

Dữ liệu sau khi được ThingsBoard phân tích sẽ được đưa vào mục LATEST TELEMETRY của mỗi thiết bị. Ở giao diện này chúng ta chỉ có thể quan sát dữ liệu dưới dạng các dòng bản ghi. Tuy nhiên, giao diện này khó cho người dùng quan sát cũng như hình dung về tính biến thiên của dữ liệu.

Hình 3. 6: Giao diện LATEST TELEMETRY

Để hiển thị giao diện một cách trực quan hơn cần xây dựng một giao diện đồ thị để hiển thị được sự biến thiên của nhiệt độ theo thời gian. Để tạo được giao diện này, người dùng có thể vào mục Dashboard để thực hiện các thao tác cấu hình. Trong giao diện DashBoard ta vào phần Entity aliases =>Add Alias =>Edit alias và cấu hình như sau:

47

Hình 3. 7: Giao diện cấu hình Alias

Sau đó vào ADD NEW WIDGET => Charts =>Timeseries – Flot.

Hình 3. 8: Giao diện cấu hình đồ thị

Sau đó ta cần chọn thông tin dữ liệu cần hiển thị là dữ liệu của cảm biến mà chúng ta cần hiển thị, cụ thể ở đây là cảm biến nhiệt độ mà chúng ta đã xây dựng ở trên. Các bước cấu hình có dạng như sau:

48

Hình 3. 2: Cấu hình thông tin cần hiển thị lên biểu đồ

Sau các bước cấu hình, ta có kết quả dữ liệu hiển thị trên giao diện cụ thể như sau:

Hình 3. 10: Hiển thị dữ liệu nhiệt độ trên giao diện ThingsBoard

Như vậy, học viên đã trình bày cách xây dựng thành công một ứng dụng đơn giản thực hiện gửi dữ liệu giả lập lên server ThingsBoard thông qua kết nối MQTT. Sau quá trình thử nghiệm, có thể tiến hành tích hợp các chương trình lên các nền tảng khác như: RaspberryPi, ESP8266… kết hợp với các dữ liệu cảm biến để có thể thu thực được các dữ liệu cảm biến môi trường thực

49

và gửi lên ThingsBoard thông qua kết nối Wifi, LAN hoặc 3G/4G tùy thuộc vào đặc tính của thiết bị cũng như địa điểm cần triển khai ứng dụng. Dưới đây là ví dụ về kết quả hiển thị của một cảm biến nhiệt độ, độ ẩm thu thập dữ liệu thực và gửi dữ liệu lên ThingsBoard thông qua kết nối Wifi được thực hiện cấu hình và cài đặt trên Board IoT ESP8266.

Hình 3. 3: Giao diện hiển thị dữ liệu cảm biến nhiệt độ/độ ẩm thực

Một phần của tài liệu (Luận văn thạc sĩ) Nghiên cứu xây dựng phần mềm thu thập và giám sát dữ liệu trong nông nghiệp thông minh sử dụng nền tảng THINGS BOARD (Trang 46 - 59)

Tải bản đầy đủ (PDF)

(72 trang)