Version 1.1 by MinhTam Chau on 2025/10/13 15:01

Show last authors
1 = HƯỚNG DẪN GỬI DỮ LIỆU TỪ VBOX LÊN GOOGLE SHEETS
2 =
3
4 == Tổng quan ==
5
6 V-BOX của Wecon hỗ trợ lập trình bằng Lua, cho phép gửi dữ liệu lên các dịch vụ web thông qua giao thức HTTP/HTTPS. Trong hướng dẫn này, chúng ta sẽ sử dụng Google Apps Script để tạo API trung gian, giúp nhận dữ liệu từ HMI/V-BOX và ghi vào Google Sheet
7 [[image:1760338256525-104.png||height="309" width="734"]]
8
9
10 Bước 1: Tạo Google Apps Script để nhận dữ liệu
11
12 - Đăng nhập vào https:~/~/docs.google.com/
13
14 - Sau đó chọn vào “Blank spreadsheet” để tạo 1 Sheet mới chứa dữ liệu
15
16
17 [[image:1760338298848-510.png||height="517" width="1035"]]
18
19
20 (1) Chọn vào “Extention” trên thanh công cụ
21
22 (2) Sau đó chọn vào “Apps Script”
23
24
25 [[image:1760338327427-620.png||height="600" width="1151"]]
26
27
28 (1) Trong Apps Script ta vào File tạo 1 File Code.gs để chứa chương trình
29
30 (2) Điền ID Google Sheet sẽ nhận dữ liệu từ V-BOX gửi lên
31
32 Lưu ý: ID sẽ được lấy từ /d/ và /edit
33
34
35 [[image:1760338388582-151.png]]
36
37 [[image:1760338406650-812.png||height="382" width="987"]]
38
39
40 (1) Chọn vào Deploy → New Deployment
41
42 (2) Sau đó chọn đến mục “Who has access”
43
44 rồi chọn vào Anyone
45
46 (3) Nhấn Deploy
47
48 (4) Copy URL lại vì đây là địa chỉ để V-BOX
49
50 gửi Request đến Google Sheet
51
52 [[image:1760338442980-985.png||height="302" width="870"]]
53
54 [[image:1760338456582-697.png]]
55
56 [[image:1760338471331-231.png]]
57
58 Bước 2: Tạo Script để gửi dữ liệu lên Google Sheet
59 Trên giao diện V-NET chọn đến V-BOX cần gửi dữ liệu đi
60
61
62 (1) Chọn vào mục “Lua Script”
63
64 (2) Chọn vào “New” để tạo 1 Script mới
65
66 (3) Đặt tên cho script và chọn chế độ chạy Timing
67
68 [[image:1760338532321-688.png]]
69
70 Sau đó viết 1 chương trình để thực hiện viêc gửi dữ liệu từ VBOX lên Google Sheets
71
72
73 Lưu ý: thay thế URL bằng URL đã được lấy ở bước 1 (Sau khi Deployment)
74
75 [[image:1760338565593-989.png]]
76
77 ~-~- ~#~#~#~#~#~# Khai báo thư viện và URL của Google Sheets ~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~-~-
78
79 local socket = require("socket")
80
81 local https = require("https")
82
83 local ltn12 = require("ltn12")
84
85 id = 0
86
87 ~-~- API URL của Google Apps Script
88
89 URL = "https:~/~/script.google.com/macros/s/AKfycbxI8d5txR4Izxvjlq2-0L8fuF-AVdmYQpb_yTkqELnXEslFswaGfGD8iP6CMqrmXqY/exec"
90
91 ~-~- ~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~# Chương trình kết nối và thực hiện việc gửi dữ liệu về Google Sheets với 2 giá trị Nhiệt độ và Độ Ẩm ~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~##
92
93 function send_data()
94
95 id = id + 1
96
97 local temp = addr_getword("@Temp") or 0
98
99 local humi = addr_getword("@Humi") or 0
100
101 local str = '{"id":' .. id .. ',"temp":' .. temp .. ',"humi":' .. humi .. '}'
102
103 local response_body = {}
104
105 local res, code, headers, status = https.request{
106
107 url = URL,
108
109 method = "POST",
110
111 headers = {
112
113 ["Content-Type"] = "application/json",
114
115 ["Content-Length"] = tostring(#str)
116
117 },
118
119 source = ltn12.source.string(str),
120
121 sink = ltn12.sink.table(response_body)
122
123 }
124
125 if code == 200 then
126
127 print("Gửi thành công: " .. table.concat(response_body))
128
129 else
130
131 print("Lỗi gửi dữ liệu: " .. tostring(code))
132
133 end
134
135 end
136
137
138 ~-~- ~#~#~#~#~#~#~#~#~#~#Chương trình chính dùng 1 bit trang thái  để gửi dữ liệu đi ~#~#~#~#~#~#~#~#~#~#~#~##~-~-
139 function Google_Sheet.main()
140
141 local upload_data = addr_getbit("@Upload")
142
143 if upload_data == 1 then
144
145 send_data()
146
147 end
148
149 end
150
151
152 Khi bit Update được chuyển sang trạng thái ON dữ liệu sẽ được gửi lên Google Sheets
153
154
155 [[image:1760338851032-545.png]]