3.4 TRIỂN KHAI VÀ THEO DÕI KẾT QUẢ:
- Lập trình ứng dụng thu thập các thông số cảm biến, bao gồm toàn bộ các khối chức năng Giám sát. Các khối này đòi hỏi thời gian đáp ứng các sự kiện thời gian thực, nhanh nên tôi sử dụng kỹ thuật xử lý đa luồng – multithreading.
- Lập trình ứng dụng giao diện xem trạng thái và cấu hình trên nền tảng Django, bao gồm các giao diện xem, khai báo và cấu hình các thông số của các khối Giám sát.
- Thiết kế và dựng database lưu trữ nền tảng Sql Server. - Dựng Mqtt broker cho module Report.
- Lập trình dịch vụ nhận sự kiện và lưu trữ vào database lưu trữ. - Lập trình dịch vụ cảnh báo cho nhân sự quản lý.
CHƯƠNG 4: ĐÁNH GIÁ VÀ KẾT LUẬN
4.1ĐÁNH GIÁ:
4.1.1 Đánh giá kết quả thử nghiệm:
Sau thời gian thực nghiệm để kiểm tra độ ổn định của hệ thống và thực hiện một số giả lập sự kiện. Hệ thống cho kết quả hoạt động ở độ ổn định cao, các thông số định kỳ cũng như trạng thái sự kiện được báo cáo như kỳ vọng.
4.1.2 Ưu điểm của hệ thống:
Hệ thống giám sát điều kiện môi trường và an ninh phòng máy cho SCTV được xây dựng dựa trên kiến trúc công nghệ Internet of Things có nhiều ưu điểm được tóm gọn:
- Tính ứng dụng cao: Xuất phát từ nhu cầu vận hành, kết hợp các tiêu chuẩn kỹ
thuật và kinh nghiệm quản lý thực tiễn, hệ thống được xây dựng có tính ứng dụng cao giúp tối ưu nhiều công đoạn trong qui trình vận hành, sản xuất.
- Tính mở rộng: Thiết bị phần cứng gateway là Raspberry Pi và giao thức truyền
thông về phía cloud là MQTT làm cho hệ thống có tính mở không giới hạn (như đã trình bày ở chương 3).
4.1.3 Hạn chế của hệ thống:
Hệ thống có rất nhiều ưu điểm nếu như hoàn thiện, tuy nhiên trong phạm vi luận văn và tại thời điểm hiện tại hệ thống vẫn còn tồn tại nhiều hạn chế, cụ thể:
- Bảo mật: Trong kiến trúc Internet of Things, bảo mật là một trong các yếu tố được
quan tâm hàng đầu. Hệ thống hiện tại chưa triển khai một số công nghệ, phương pháp để tăng độ tin cậy cho hệ thống.
- Công nghệ: Công nghệ lớp vật lý hiện tại kết nối giữa các sensor và gateway là
có dây, cũng như tính bảo mật, công nghệ không dây cũng là một công nghệ lõi của Internet of Things, việc triển khai ứng dụng công nghệ này vào hệ thống giúp tối ưu không gian, thẩm mỹ cũng như công đoạn đi dây trong phòng máy chật chội.
- Mở rộng: Trong phòng máy hiện có rất nhiều thông số cần thu thập giám sát, dự
báo cũng như điều khiển như battery, UPS, tải điện, server, router…
4.2KẾT LUẬN:
Sự hội tụ của các công nghệ lõi hình thành công nghệ Internet of Things, đặc biệt là công nghệ vi cơ điện tử giúp việc xây dựng các hệ thống tự động như hệ thống thông
hơn bao giờ hết. Với chi phí phải chăng và tính ứng dụng cao, hệ thống khi được phát triển hoàn chỉnh giúp các doanh nghiệp viễn thông như SCTV giảm thiểu được rất nhiều nguồn nhân lực vận hành các phòng, góp phần đảm bảo an ninh, an toàn truyền dẫn phát sóng.
PHỤ LỤC
A. Chương trình mẫu lấy dữ liệu nhiệt độ và in tất cả nhiệt độ của các cảm biến nhiệt độ DS18B20 lên màn hình:
1. from subprocess import Popen,PIPE 2.
3. class Temp_Sensor(object):
4. SensorList = []
5. def __init__(self,serial):
6. self.serial = serial #serial: địa chỉ nhận dạng cảm biến 7. self.value = 0
8. Temp_Sensor.SensorList.append(self) 9.
10. def get_temp(self):
11. '''Lấy dữ liệu nhiệt độ theo độ Celsius từ cảm biến'''
12. data = Popen('cat /sys/bus/w1/devices/' + self.serial +
'/w1_slave'],shell=True,stdout=PIPE, stderr=PIPE)
13. out,err = data.communicate() 14. if err=='' and out !='':
15. val = round(float(out.decode('utf-
8').split('\n')[1].split('=')[1])/1000,1)
16. self.value = val 17. def show_me(self):
18. print (f"-{self.serial}:{self.value}")
19.
20. def get_sensor(): 21. import os
22. rootpath = '/sys/bus/w1/devices/'
23. for temp_sensor in os.listdir(rootpath): 24. if temp_sensor.startswith("28-"):
25. Temp_Sensor(temp_sensor) 26.
27. def show_temp():
28. for sensor in Temp_Sensor.SensorList: 29. sensor.get_temp() 30. sensor.show_me() 31. 32. if __name__=="__main__": 33. get_sensor() 34. show_temp()
B. Chương trình mẫu kết nối thiết bị An ninh ra vào để lấy sự kiện.
1. #Author: Loctt
2. #Released Date: 07/06/2020 3.
4. from Constants import StatusMessage,AccessStatusDict 5. import report_service 6. 7. def run(ip): 8. import zk 9. status=0 10. event_status = '' 11. attendance_status = None 12. needReport = False
13. myClient = zk.ZK(ip,timeout=5) 14. if myClient.helper.test_ping(): 15. try: 16. myClient.connect() 17. needReport = False 18. if len(AccessControl.zkClient.get_serialnumber()): 19. status = AccessStatusDict.status_connect_sucessfully 20. for attendance,data in
AccessControl.zkClient.live_capture():#Theo dõi sự kiện
21. if attendance is None:
22. if len(data) == 16:
23. if data[9] == '1':#Quên đóng cửa
24. event_status = AccessStatusDict.status_open_door_alarm 25. elif len(data) == 8: 26. event_status =
AccessStatusDict.status_hack_device
27. print("Phát hiện hành vi tác động vào thiết bị")
28. elif len(data) == 0:
29. if not myClient.helper.test_ping(): break
30. else:
31. if attendance.status == 1: #Truy cập bằng vân tay
32. event_status = AccessStatusDict.status_access_by_finger
33. elif attendance.status == 3: #Truy cập bằng pass
34. event_status = AccessStatusDict.status_access_by_pass
35. else: #Truy cập bằng RFID card
36. event_status = AccessStatusDict.status_access_by_card 37. except Exception as e:
38. print ("Có lỗi bất thường: {}".format(e))
39. else:
40. status = AccessStatusDict.status_ping_not_ok 41. if __name__=="__main__":
42. run('192.168.1.102')
C. Chương trình mẫu kiểm tra file chuyển động của camera trong thư mục cho trước:
1. #Author: Loctt
2. #Released Date: 16/08/2020
3. import os, platform
4. import report_service 5.
6. list_files = [] 7.
8. def getFullPathOfAllFilesInFolder(rootpath):
9. '''Hàm đệ quy lấy toàn bộ đường dẫn File trong thư mục rootPath''' 10. import re,time
11. today = time.strftime("%Y-%m-%d",time.localtime())
12. for item in os.listdir(rootpath):
13. itemFullPath = os.path.join(rootpath,item)
14. if re.search("\d{4}-\d{2}-\d{2}",item) and today != item: 15. os.system (f"rm -rf {itemFullPath}")
16. else:
18. elif itemFullPath.endswith('h264'): list_files.append(itemFullPath) 19. list_files.sort() 20. return list_files 21. 22. def getbase64contentFile(contentFileInBytes):
23. '''Hàm convert dữ liệu từ Byte sang Base64 cho việc chuyển thông tin về server trong MQTT'''
24. import base64
25. return base64.b64encode(contentFileInBytes).decode('ascii')
26.
27. def run():
28. from Constants import CameraStatusDict 29. cameraName = ""
30. while True:
31. list_files = []
32. getFullPathOfAllFilesInFolder(record_files_dir) 33. today = time.strftime("%Y-%m-%d",time.localtime())
34. for recFileFullPath in list_files: 35. #Xem hom nay co file nao khong
36. if today in recFileFullPath:
37. cameraName = recFileFullPath.split('/')[-2]:
38. recFileName = recFileFullPath.split('/')[-1]
39. status = CameraStatusDict.status_motion_detect 40. contentFileInBase64 = ""
41. with open(recFileFullPath,'rb') as recFile: 42. contentFileInBytes = recFile.read() 43. contentFileInBase64 = getbase64contentFile(contentFileInBytes=contentFileInBytes) 44. report_service.reportStatusDataCamera(name=cameraName,recfilename=re cFileName,recdata=contentFileInBase64) 45. os.system('rm ' + recFileFullPath) 46. list_files.remove(recFileFullPath) 47.
D. Code thực hiện kết nối và gửi thông điệp đến broker của hàm Gửi Report lên Server
48. #Author: Loctt 49. #Released Date: 26/01/2021 50. 51. import paho.mqtt.client as mqtt 52. import time 53. 54. clientId = '1' 55. client = mqtt.Client('1') 56. broker_address='server_domain/server_ip' 57. based_topic = "gs{0}/".format(clientId) 58.
59. def on_connect(client, userdata, flags, rc): 60. if rc==0:
61. print("Connected!",rc)
62. else:
63. print("Can't connect, returned code=",rc)
64.
65. def connect():
66. global based_topic 67. global client
68. #Thực hiện khai báo các thông số và kết nối
69. client.username_pw_set(username='username',password='password')
70. client.on_connect=on_connect 71. client.loop_start()
72. client.connect(broker_address,keepalive=15)
73. #Thiết lập thông điệp di chúc cho biết thiết bị không còn kết nối
74. client.will_set(based_topic + "connected"
,payload='0',qos=1,retain=True)
75. return client 76. 77. def disconnect(): 78. global client 79. client.loop_stop() 80. client.disconnect() 81.
82. def send_report(topic='',data='',qos=0,retain=False):
83. global based_topic
84. client.publish(based_topic + topic,data=data,qos=qos,retain=retain)
TÀI LIỆU THAM KHẢO
[1]. Perry Lea (2018), Internet of Things for Architects, Packt, ISBN 978-1-78847- 059-9.
[2]. Adrian McEwen, Hakim Cassimally (2014), Designing the Internet of Things, Wiley, ISBN 978-1-118-43063-7.
[3]. Bộ Thông tin và Truyền thông Việt Nam, Thuyết minh dự thảo tiêu chuẩn quốc
gia, tiêu chuẩn về thuật ngữ, định nghĩa cho IoT,
http://mic.gov.vn/Upload_Moi/VanBan/Thuyet-minh-Du-thao-tieu-chuan- thuat-ngu-dinh-nghia-cho-IoT---25.01.2019.doc, truy cập ngày 17/06/2020. [4]. Wikipedia, Http, https://vi.wikipedia.org/wiki/Hypertext_Transfer_Protocol,
truy cập ngày 17/06/2020.
[5]. EMS Việt Nam, Giải pháp giám sát môi trường cho trung tâm dữ liệu, http://www.emsvietnam.com.vn/gioi-thieu-ve-giai-phap-giam-sat-moi-
truong-cho-trung-tam-du-lieu-va-tram-bts-cua-ems, truy cập ngày 17/03/2021. [6]. Universal Alarm System, https://sites.google.com/site/universalalarm/he-
thong-giam-sat-va-canh-bao-toan-dien, truy cập 17/03/2021.
[7]. ATPro, Hệ thống giám sát phòng máy chủ, https://atpro.com.vn/san-pham/he- thong-giam-sat-phong-may-chu-trung-tam-du-lieu-2, truy cập 17/03/2021. [8]. Hệ thống quản lý tòa nhà thông minh BMS, http://gsptech.vn/bms-systems-
thong-quan-ly-toa-nha-bms/, truy cập ngày 17/03/2021.
[9]. Huỳnh Thái Hoàng (2014), Hệ thống điều khiển thông minh, Nhà xuất bản đại học Quốc gia TP. Hồ Chí Minh.
[10]. Raspberry Pi Foundation, What is Raspberry Pi,
https://www.raspberrypi.org/help/what-%20is-a-raspberry-pi/, truy cập ngày 03/06/2020.
[11]. Raspberry Pi Foundation, Installing operating system images,
https://www.raspberrypi.org/documentation/setup/, truy cập ngày 03/12/2020. [12]. Colin Dow (2018), Internet of Things Programming Projects, Packt, ISBN
978-1-78913-480-3.
[13]. Maximim Intergrated, Programmable Resolution 1-Wire Digital Thermometer
DS18B20, https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf, truy
cập, truy cập ngày 16/06/2020.
[14]. Thomas Liu, Digital relative humidity & temperature sensor AM2302/DHT22, https://cdn-
shop.adafruit.com/datasheets/Digital+humidity+and+temperature+sensor+A M2302.pdf, truy cập ngày 19/06/2020.
[15]. Django Software Foundation (2020), Django Documentation,
https://media.readthedocs.org/pdf/django/3.0.x/django.pdf, truy cập ngày 03/08/2020.