Theo quy định tại Điều 39 Thông tư số 10/2021/TT-BTNMT, dữ liệu quan trắc môi trường tự động (nước thải, khí thải công nghiệp CEMS) bắt buộc phải được truyền trực tiếp từ thiết bị đo ghi (Datalogger) về máy chủ của Sở Tài nguyên và Môi trường (Sở TN&MT) thông qua phương thức FTP hoặc sFTP dưới định dạng tệp tin văn bản thuần (.txt) với chu kỳ phát chậm nhất 05 phút một lần và thời gian lưu trữ đệm tại trạm tối thiểu 60 ngày.
Trọng điểm giải pháp & phần cứng Thông tư 10: Tham khảo ngay giải pháp datalogger quan trắc môi trường thông tư 10 và cấu hình phần cứng đạt chuẩn quy chuẩn datalogger điều 39 thông tư 10 (Model DeviceLab DL-ENV10) nằm trong cẩm nang kỹ thuật trạm quan trắc tự động của DeviceLab, hướng dẫn chi tiết từ đấu nối cảm biến đến nghiệm thu 72 giờ với Sở TN&MT.
📌 Tóm Tắt Quy Chuẩn Kỹ Thuật TT10/2021 (Key Takeaways):
- Phương thức truyền hợp chuẩn: FTP (Port 21) hoặc sFTP (SSH File Transfer Protocol – Port 22). Nhiều Sở TN&MT như Hà Nội, TP.HCM, Bình Dương, Bắc Ninh bắt buộc sFTP để chống giả mạo gói tin.
- Cấu trúc tên tệp tin: Bắt buộc theo định dạng
[Mã_Trạm]_[Năm][Tháng][Ngày]_[Giờ][Phút][Giây].txt. Dấu phân cách giữa các trường là ký tự Tab ( ) hoặc dấu phẩy (,). - Tần suất truyền dữ liệu: Định kỳ 05 phút/lần đối với nước thải và khí thải tự động; 01 giờ/lần đối với thông số thời tiết phụ trợ.
- Cơ chế Store-and-Forward: Khi đứt kết nối mạng 4G hoặc máy chủ Sở bảo trì, Datalogger phải lưu đệm vào Flash cục bộ và tự động gửi bù (backfill) từng file theo thứ tự thời gian ngay khi có mạng.
- Hình ảnh camera: Truyền luồng video RTSP độ phân giải tối thiểu HD 720p quan sát cửa xả và hệ thống lấy mẫu tự động.

Nỗi Ám Ảnh Bị Phạt Vi Phạm Hành Chính Khi Truyền Dữ Liệu Về Sở TN&MT
Trong các dự án quan trắc môi trường tự động, nỗi ám ảnh lớn nhất của nhà thầu EPC và ban quản lý nhà máy không phải là khâu mua cảm biến, mà là bài toán duy trì đường truyền dữ liệu thông suốt về máy chủ của Sở TN&MT. Theo Nghị định 45/2022/NĐ-CP về xử phạt vi phạm hành chính trong lĩnh vực bảo vệ môi trường, hành vi không truyền số liệu hoặc để mất kết nối quá thời hạn quy định có thể bị phạt từ 50.000.000 VNĐ đến 250.000.000 VNĐ, thậm chí bị đình chỉ hoạt động xả thải.
Thực tế kiểm tra tại các khu công nghiệp trọng điểm cho thấy, hơn 75% sự cố đứt gãy truyền số liệu bắt nguồn từ các nguyên nhân kỹ thuật rất sơ đẳng:
- Sử dụng máy tính công nghiệp (IPC) chạy Windows làm Datalogger: Hệ điều hành Windows tự ý tải bản cập nhật (Windows Update) rồi khởi động lại lúc nửa đêm; quạt gió tản nhiệt hút hơi hóa chất ăn mòn bo mạch; ổ cứng SSD bị lỗi phân vùng khi mất điện đột ngột.
- Sai lệch định dạng tên file hoặc dấu phân cách: Chỉ cần thừa một khoảng trắng (space) thay vì ký tự Tab, hoặc phần mềm viết file dùng định dạng UTF-8 có dấu (BOM), phần mềm tiếp nhận của Sở sẽ tự động từ chối (reject) và gắn cờ trạm “Mất kết nối”.
- Bộ đệm phần mềm không có cơ chế gửi bù lũy tiến: Khi đường truyền 4G chập chờn 2 ngày, phần mềm IPC tích lũy 576 file. Khi mạng có lại, IPC gửi ồ ạt 576 file cùng lúc làm tràn băng thông cổng FTP của Sở, khiến tài khoản bị khóa tạm thời vì nghi ngờ tấn công từ chối dịch vụ (DDoS).
Cấu Trúc Chi Tiết Của Tệp Tin .txt Truyền Về Sở TN&MT Chuẩn Thông Tư 10
Điều 39 Thông tư 10/2021/TT-BTNMT quy định rất nghiêm ngặt cấu trúc nội dung của tệp tin dữ liệu. Một tệp tin truyền chuẩn bao gồm 2 phần chính: Header (tiêu đề trạm và thông số) và Data Body (giá trị đo kèm mã trạng thái trạng thái thiết bị).
# Ví dụ: KCN_QUANGMINH_NT01_20261012_143000.txt
# Nội dung bên trong file (dấu phân cách là ký tự TAB ):
Station_ID DateTime pH TSS COD NH4 Temp Flow_Out Status
KCN_QUANGMINH_NT01 2026-10-12 14:30:00 7.35 28.4 45.2 2.15 29.8 120.5 00
Ý nghĩa các trường thông tin trong tệp tin:
| Tên trường | Định dạng chuẩn | Mô tả kỹ thuật & Quy định |
|---|---|---|
| Station_ID | Chuỗi ký tự (String) | Mã định danh trạm do Sở TN&MT cấp trong văn bản chấp thuận nghiệm thu. Tuyệt đối không tự ý đổi mã. |
| DateTime | YYYY-MM-DD HH:mm:ss | Thời gian ghi nhận số liệu đo theo giờ Việt Nam (UTC+7). Bắt buộc Datalogger phải đồng bộ chuẩn thời gian NTP internet. |
| Các thông số đo | Số thực (Float 2 số lẻ) | Ví dụ: pH (7.35), TSS (28.4 mg/L), COD (45.2 mg/L), NH4+ (2.15 mg/L), Lưu lượng tức thời (Flow_Out m3/h). |
| Mã trạng thái (Status) | Mã nhị phân / Hex / Thập phân | Quy định trạng thái của trạm: 00 (Bình thường), 01 (Hiệu chuẩn sensor), 02 (Bảo trì), 03 (Lỗi thiết bị), 04 (Vượt ngưỡng). |
EF BB BF) ở đầu file UTF-8. Bộ phân tích cú pháp của hệ thống Sở TN&MT sẽ coi ký tự này là mã rác không hợp lệ và hủy bỏ toàn bộ gói dữ liệu. Datalogger chuyên dụng DL-ENV10 xuất tệp tin ở chuẩn ANSI ASCII thuần túy, loại bỏ 100% rủi ro lỗi font và BOM.

So Sánh Giao Thức Truyền FTP Truyền Thống vs sFTP Mã Hóa SSH
Trước năm 2021, đa số các tỉnh thành sử dụng giao thức FTP truyền thống qua cổng 21. Tuy nhiên, theo xu thế an toàn an ninh mạng quốc gia, hầu hết các Sở TN&MT hiện nay đã chuyển đổi hoặc yêu cầu bắt buộc giao thức sFTP (SSH File Transfer Protocol) chạy trên cổng 22.
| Tiêu chí so sánh | FTP (Cổng 21) | sFTP qua SSH (Cổng 22) |
|---|---|---|
| Mã hóa dữ liệu | Không mã hóa (Plain text). Mật khẩu và số liệu truyền lộ thiên. | Mã hóa đầu cuối qua SSH (AES-256). Chống nghe lén gói tin tuyệt đối. |
| Xác thực tài khoản | Username & Password cơ bản. | Hỗ trợ Username/Password hoặc SSH Key Pair (RSA 4096-bit). |
| Vượt tường lửa (Firewall) | Dùng 2 kênh (Command port 21 và Data port động), rất hay bị chặn bởi Router 4G công nghiệp. | Chỉ dùng 1 cổng duy nhất (Port 22), dễ dàng đi qua mọi lớp NAT và Firewall 4G Viettel/VinaPhone. |
| Tính tương thích thiết bị nhúng | Nhẹ, vi điều khiển nhỏ 8-bit cũng chạy được. | Yêu cầu vi điều khiển 32-bit (ARM Cortex-M4/M7) có đủ RAM chạy thuật toán mã hóa mật mã học mbedTLS. |
Thuật Toán Lưu Trữ Đệm (Store-and-Forward) Chống Mất Số Liệu
Một trạm quan trắc tự động dù đắt tiền đến đâu cũng vô nghĩa nếu không có cơ chế tự phục hồi sau sự cố mạng. Khi nhà mạng bảo trì trạm BTS 4G hoặc đường cáp quang nhà máy bị đứt, Datalogger phải tự động chuyển sang chế độ tự trị (Autonomous Mode).
| QUY TRÌNH STORE-AND-FORWARD TRÊN DATALOGGER DL-ENV10 |
+———————————————————————————–+
| [Đọc cảm biến Modbus/4-20mA] –> [Tạo file .txt chuẩn TT10] |
| | |
| v |
| [Kiểm tra kết nối sFTP] |
| / |
| (Thành công) (Thất bại/Mất mạng) |
| / |
| v v |
| [Gửi file lên Sở] [Ghi vào Flash NOR công nghiệp] |
| [Xóa cờ chờ gửi] [Đánh dấu cờ PENDING_BACKFILL] |
| | |
| v |
| [Mạng 4G phục hồi kết nối] |
| | |
| v |
| [Gửi bù tuần tự từng file cũ] <–+ |
| (Giãn cách 2 giây/file tránh nghẽn server) |
+———————————————————————————–+
Trên dòng thiết bị Datalogger DL-ENV10 của DeviceLab, bộ nhớ Flash công nghiệp 32MB cho phép lưu giữ liên tục hơn 180 ngày số liệu (khoảng 52.000 tệp tin .txt). Thiết bị sử dụng hệ thống tệp tin nhúng chuyên dụng LittleFS có khả năng chống phân mảnh và bảo vệ an toàn dữ liệu kể cả khi nguồn điện bị ngắt đột ngột ngay trong chu kỳ ghi Flash.
Đoạn Mã Python Mô Phỏng Client Truyền File sFTP Chuẩn TT10
Để hỗ trợ các kỹ sư kiểm thử đường truyền từ phòng thí nghiệm trước khi đấu nối thiết bị ra hiện trường, dưới đây là đoạn mã Python sử dụng thư viện paramiko để tạo file mẫu và đẩy lên máy chủ sFTP của Sở:
import datetime
import os
STATION_CODE = “NT_KCN_VSIP1_01”
SFTP_HOST = “sftp.sotnmt.binhduong.gov.vn”
SFTP_PORT = 22
SFTP_USER = “kcn_vsip1_user”
SFTP_PASS = “SecretPass2026@”
REMOTE_DIR = “/data_receive/”
# 1. Tạo tên file theo chuẩn YYYYMMDD_HHmmss.txt
now = datetime.datetime.now()
filename = f”{STATION_CODE}_{now.strftime(‘%Y%m%d_%H%M%S’)}.txt”
# 2. Tạo nội dung tệp tin phân cách bằng ký tự Tab ( )
header = “Station_ID DateTime pH TSS COD NH4 Temp Flow Status
“
data_line = f”{STATION_CODE} {now.strftime(‘%Y-%m-%d %H:%M:%S’)} 7.42 25.1 41.8 1.85 30.2 115.4 00
“
with open(filename, “w”, encoding=”ascii”) as f:
f.write(header)
f.write(data_line)
# 3. Kết nối sFTP an toàn qua cổng 22
try:
transport = paramiko.Transport((SFTP_HOST, SFTP_PORT))
transport.connect(username=SFTP_USER, password=SFTP_PASS)
sftp = paramiko.SFTPClient.from_transport(transport)
remote_path = os.path.join(REMOTE_DIR, filename)
sftp.put(filename, remote_path)
print(f”Truyền thành công tệp tin: {filename}”)
sftp.close()
transport.close()
os.remove(filename) # Xóa file tạm sau khi gửi thành công
except Exception as e:
print(f”Lỗi truyền sFTP: {e}. Kích hoạt cơ chế lưu đệm Flash!”)
Checklist Kiểm Tra Đường Truyền Trước Khi Nghiệm Thu Với Đoàn Sở TN&MT
Trước khi gửi công văn mời đoàn thanh tra Sở TN&MT về kiểm tra trạm và cấp biên bản nghiệm thu đấu nối số liệu, kỹ sư công trình cần đối soát danh mục 6 tiêu chí kỹ thuật sau:
Bảng Kiểm Tra Bàn Giao Kỹ Thuật (Pre-Commissioning SOP):
- [ ] Kiểm tra đồng bộ giờ NTP: Sai số thời gian giữa Datalogger và máy chủ Sở không được vượt quá ±30 giây.
- [ ] Thử nghiệm cắt nguồn điện lưới: Ngắt aptomat tổng nguồn 220V, kiểm tra khối pin UPS lithium dự phòng duy trì trạm hoạt động liên tục tối thiểu 4 tiếng và phát tín hiệu cảnh báo mất điện.
- [ ] Thử nghiệm ngắt mạng Internet: Rút ăng-ten 4G trong 30 phút (tương ứng 6 chu kỳ phát file), sau đó cắm lại để kiểm tra xem Datalogger có gửi bù đầy đủ 6 file bị thiếu theo đúng thứ tự thời gian hay không.
- [ ] Kích hoạt máy lấy mẫu tự động: Giả lập tín hiệu COD hoặc TSS vượt ngưỡng qua ngõ vào analog/Modbus, kiểm tra tiếp điểm rơ-le DO của Datalogger đóng lệnh điều khiển máy lấy mẫu hút nước vào bình bảo quản mẫu đối chứng.
- [ ] Kiểm tra định dạng file: Tải file trực tiếp từ thư mục Sở về mở bằng Notepad++, kiểm tra không có ký tự lạ UTF-8 BOM, dấu phân cách giữa các cột phải là ký tự Tab.
- [ ] Luồng camera cửa xả: Kiểm tra link RTSP camera quan sát rõ điểm lấy mẫu và cửa xả, kết nối ổn định trên phần mềm giám sát của Sở.

Datalogger Quan Trắc Môi Trường DeviceLab DL-ENV10
Thiết kế vi điều khiển ARM Cortex-M4 chạy FreeRTOS thời gian thực. Không dùng Windows, không sợ virus, tích hợp sẵn pin sạc UPS 6-8 tiếng, 2 cổng RS485 cách ly quang 2.5kV và module 4G công nghiệp truyền sFTP bảo mật.
- Đọc trực tiếp cảm biến Hach, Endress+Hauser, Yokogawa, WTW, Meinsberger.
- Hỗ trợ OEM dán nhãn thương hiệu riêng cho nhà thầu hồ sơ thầu.
Hotline Kỹ thuật: 0982.503.355 (Zalo)