📢 Chào mừng các bạn đến với Rcom Dăm Yi blog - Kho tài liệu và giải pháp công nghệ bổ ích! Hệ thống liên tục cập nhật dữ liệu học tập mới.

Tìm hiểu cơ bản về hệ thống IoT và hệ thống kết nối thực – ảo

🌐 PHÒNG THÍ NGHIỆM IoT & THỰC – ẢO

Từ cảm biến → Internet → Cloud → AI → Digital Twin → Điều khiển

🚀 Phiên bản nâng cao với nhiều mô phỏng tương tác bằng HTML, CSS và JavaScript

🎯 Mục tiêu của bài học

Sau khi hoàn thành bài viết, người học có thể hình dung được một hệ thống IoT không chỉ ở mức "cảm biến gửi dữ liệu", mà còn hiểu được cách dữ liệu được truyền, xử lý, trực quan hóa, phân tích và sử dụng để điều khiển thiết bị trong thế giới thực.

Đặc biệt, bài viết xây dựng một mô hình thu nhỏ của hệ thống kết nối thực – ảo, trong đó trạng thái của "phòng học thật" được phản ánh lên "phòng học số".

1. Nhìn IoT theo một kiến trúc hoàn chỉnh

Một hệ thống IoT thực tế có thể được hình dung qua nhiều lớp. Tùy ứng dụng, kiến trúc có thể khác nhau, nhưng tư duy cơ bản là: thu thập dữ liệu → kết nối → xử lý → phân tích → hành động.

🌡️
Sensor
Cảm biến
→
🔌
Device
Thiết bị
→
📡
Gateway
Kết nối
→
☁️
Cloud
Dữ liệu
→
🤖
Analytics
Phân tích
→
⚙️
Actuator
Điều khiển

2. Sensor và Actuator – hai mắt xích quan trọng

🌡️ Sensor – Cảm biến

Cảm biến giúp hệ thống "nhìn" hoặc "cảm nhận" thế giới vật lý.

  • Nhiệt độ
  • Độ ẩm
  • Ánh sáng
  • Chuyển động
  • Áp suất
  • Khoảng cách

⚙️ Actuator – Cơ cấu chấp hành

Actuator nhận lệnh từ hệ thống và tạo ra tác động lên thế giới thực.

  • Motor
  • Quạt
  • Đèn
  • Máy bơm
  • Van
  • Khóa cửa
💡 Hãy nhớ:

Sensor giúp hệ thống "biết".

Actuator giúp hệ thống "làm".

Khi Sensor + xử lý + mạng + Actuator kết hợp thành vòng lặp, chúng ta có thể xây dựng hệ thống tự động hóa.

3. Mô phỏng số 1 – Bảng điều khiển IoT thời gian thực

Mô phỏng dưới đây tạo ra dữ liệu cảm biến liên tục. Thầy có thể bật/tắt hệ thống và quan sát các giá trị thay đổi.

📊 IoT LIVE DASHBOARD

🌡️ Nhiệt độ
--
°C
💧 Độ ẩm
--
%
💡 Ánh sáng
--
lux
👥 Người
--
người
Hệ thống đang chờ khởi động...

4. Mô phỏng số 2 – Hệ thống tự động hóa

Bây giờ chúng ta không chỉ quan sát dữ liệu. Hệ thống sẽ sử dụng điều kiện để đưa ra hành động.

Ví dụ luật điều khiển:
 Nếu nhiệt độ > 32°C → Bật quạt Nếu ánh sáng < 200 lux → Bật đèn Nếu không có người → Tắt đèn và quạt 

⚙️ AUTOMATION ENGINE

🌡️ Nhiệt độ
30
°C
💡 Ánh sáng
500
lux
🌀 Quạt
OFF
💡 Đèn
OFF
Hệ thống đang ở chế độ giám sát.

5. Mô phỏng số 3 – Phòng học thông minh

Hãy coi khung dưới đây là một phòng học vật lý. Các biểu tượng đại diện cho thiết bị thật.

🏫 PHÒNG HỌC 10A1 – MÔ HÌNH THỰC
🌀 Quạt
💡 Đèn
🚪 Cửa
👨‍🎓
Điều gì đang xảy ra?

Khi trạng thái của phòng thay đổi, hệ thống IoT có thể nhận dữ liệu từ cảm biến. Từ dữ liệu đó, phần mềm có thể thay đổi trạng thái của các thiết bị.

Đây là ví dụ đơn giản về một vòng phản hồi:

🏫
Thế giới thực
→
🌡️
Cảm biến
→
💻
Phần mềm
→
⚙️
Điều khiển
→
🏫
Thế giới thực

6. Mô phỏng số 4 – Từ thế giới thực đến thế giới số

Đây là bước quan trọng để hiểu hệ thống kết nối thực – ảo. Chúng ta tạo một "bản sao số" của phòng học.

🪞 DIGITAL TWIN – PHÒNG HỌC 10A1

Trạng thái của mô hình số được cập nhật dựa trên dữ liệu mô phỏng từ phòng học.

🌡️
Nhiệt độ
30°C
💧
Độ ẩm
65%
💡
Ánh sáng
500 lux
🌀
Quạt
OFF
💡
Đèn
OFF
👥
Trạng thái
Có người
Digital Twin đang đồng bộ với hệ thống thực.

7. Digital Twin khác mô phỏng thông thường như thế nào?

Mô phỏng Digital Twin
Có thể chạy độc lập. Gắn với một đối tượng/hệ thống thực.
Dữ liệu có thể là dữ liệu giả định. Thường sử dụng dữ liệu từ hệ thống thực.
Không nhất thiết phải cập nhật liên tục. Có thể được cập nhật theo dữ liệu vận hành.
Chủ yếu dùng để thử nghiệm. Có thể dùng để giám sát, phân tích, mô phỏng và hỗ trợ vận hành.

8. Mô phỏng số 5 – Vòng lặp thực ↔ ảo

Đây là phần quan trọng nhất của bài. Hãy quan sát quá trình dữ liệu đi từ vật thật sang mô hình số và lệnh từ mô hình số quay trở lại vật thật.

🔄 REAL ↔ DIGITAL FEEDBACK LOOP

🏫
REAL
Phòng thật
→
🌡️
Sensor
→
☁️
Data
→
🪞
Digital Twin
→
🤖
Phân tích
→
⚙️
Actuator
→
🏫
REAL
Nhấn "Chạy vòng lặp" để quan sát.

9. Mô phỏng số 6 – Biểu đồ dữ liệu cảm biến

Một hệ thống IoT không chỉ cần hiển thị giá trị hiện tại. Việc lưu dữ liệu theo thời gian cho phép chúng ta quan sát xu hướng.

📈 SENSOR DATA HISTORY

Chưa có dữ liệu.

10. Mô phỏng số 7 – Phát hiện bất thường

Một hệ thống thông minh có thể phát hiện khi dữ liệu vượt khỏi ngưỡng bình thường.

🚨 ANOMALY DETECTION

Trạng thái bình thường.

11. Mô phỏng số 8 – Quản lý năng lượng phòng học

Hệ thống IoT có thể sử dụng dữ liệu để hỗ trợ quản lý năng lượng. Ví dụ: nếu phòng không có người, thiết bị có thể được đưa về trạng thái tiết kiệm.

⚡ SMART ENERGY

💡 Đèn
ON
🌀 Quạt
ON
⚡ Công suất
850
W
💰 Chi phí
0
đ/giờ
Hệ thống đang hoạt động bình thường.

12. Mô phỏng số 9 – MQTT theo cách trực quan

Trong nhiều hệ thống IoT, các thiết bị cần trao đổi thông điệp. Một mô hình phổ biến là kiến trúc publish/subscribe, trong đó thiết bị gửi dữ liệu lên một "topic" và các ứng dụng quan tâm có thể nhận dữ liệu.

Ví dụ:
 Sensor ↓ publish ↓ iot/phong10a1/temperature ↓ Broker ↓ subscribe ↓ Dashboard 

📡 MQTT MESSAGE SIMULATOR

Message Log

> Broker đang chờ message...

13. Mô phỏng số 10 – Gateway và Edge Computing

Không phải lúc nào dữ liệu cũng cần được gửi toàn bộ lên Cloud. Một số xử lý có thể được thực hiện gần thiết bị, tại Gateway hoặc Edge.

🌡️
Sensor
→
🖥️
Edge/Gateway
→
☁️
Cloud
Ví dụ:

Nếu nhiệt độ tăng quá cao, Gateway có thể phát hiện ngay và kích hoạt quạt mà không cần chờ toàn bộ quá trình xử lý trên Cloud.

Sau đó dữ liệu sự kiện vẫn có thể được gửi lên hệ thống trung tâm để lưu trữ và phân tích.

14. Mô phỏng số 11 – Trung tâm điều khiển IoT

🎛️ SMART SCHOOL CONTROL CENTER

🏫 Phòng
10A1
🟢 Online
YES
📡 Sensor
8
🚨 Alert
0
Trung tâm điều khiển đang hoạt động bình thường.

15. IoT + AI – bước phát triển tiếp theo

Khi hệ thống đã có dữ liệu từ nhiều cảm biến, chúng ta có thể sử dụng các thuật toán phân tích hoặc AI để tìm kiếm quy luật, phát hiện bất thường, dự báo và hỗ trợ ra quyết định.

🌡️
Dữ liệu
→
📊
Phân tích
→
🤖
AI/ML
→
🔮
Dự báo
→
⚙️
Hành động
🌟 Ví dụ:

Hệ thống nhận thấy nhiệt độ phòng thường tăng mạnh vào khoảng 13h30–14h00. Sau nhiều ngày dữ liệu, hệ thống có thể hỗ trợ dự đoán xu hướng và đưa ra cảnh báo hoặc đề xuất hành động.

16. Mô hình tổng thể: IoT → CPS → Digital Twin → AI

🌎
THẾ GIỚI THỰC
↔
🌐
IoT
↔
⚙️
CPS
↔
🪞
Digital Twin
↔
🤖
AI

🌐 IoT

Kết nối thiết bị và dữ liệu.

⚙️ CPS

Kết hợp thế giới vật lý với hệ thống tính toán, mạng và điều khiển.

🪞 Digital Twin

Đại diện số cho đối tượng hoặc hệ thống thực.

🤖 AI

Phân tích dữ liệu, nhận dạng mẫu và hỗ trợ dự báo/quyết định.

17. So sánh các mức độ phát triển

Mức Đặc điểm Ví dụ
1 Thiết bị cảm biến Đo nhiệt độ
2 IoT Đưa nhiệt độ lên Internet
3 IoT + Automation Nhiệt độ cao → bật quạt
4 CPS Hệ thống vật lý và phần mềm tương tác hai chiều
5 Digital Twin Có mô hình số phản ánh trạng thái hệ thống
6 AI + Digital Twin Phân tích, dự báo, tối ưu hóa

18. Một kiến trúc trường học thông minh

🏫
Trường học
→
🌡️📷
Sensor
→
📡
Gateway
→
☁️
Cloud
→
📊
Dashboard
→
🤖
AI

🏫 Các bài toán có thể triển khai

  • Quản lý phòng học.
  • Giám sát nhiệt độ và độ ẩm.
  • Quản lý điện năng.
  • Quản lý thiết bị dạy học.
  • Giám sát phòng máy tính.
  • Quản lý phòng thí nghiệm.
  • Phát hiện thiết bị bất thường.
  • Xây dựng Digital Twin của trường học.

19. Bài tập thực hành

🧪 Bài tập 1

Thiết kế luật:

 Nếu nhiệt độ > 35°C → bật quạt → gửi cảnh báo 

🧪 Bài tập 2

Thiết kế hệ thống tiết kiệm điện:

 Nếu phòng không có người → tắt đèn → tắt quạt → giảm công suất 

🧪 Bài tập 3

Xây dựng Digital Twin đơn giản cho phòng học gồm:

  • Nhiệt độ
  • Độ ẩm
  • Ánh sáng
  • Số người
  • Quạt
  • Đèn

20. Thử thách cuối bài

🚀 THIẾT KẾ HỆ THỐNG IoT CỦA BẠN

Hãy tưởng tượng bạn được giao nhiệm vụ xây dựng Phòng học thông minh 4.0.

Hệ thống cần có:

  • Ít nhất 3 cảm biến.
  • Ít nhất 2 thiết bị chấp hành.
  • Một Gateway.
  • Một Dashboard.
  • Một hệ thống cảnh báo.
  • Một Digital Twin.
  • Một luật tự động hóa.
  • Một chức năng phân tích dữ liệu.

Hãy vẽ sơ đồ:

 PHÒNG HỌC ↓ SENSOR ↓ GATEWAY ↓ INTERNET ↓ SERVER / CLOUD ↓ DATABASE ↓ DASHBOARD ↓ AI / ANALYTICS ↓ DIGITAL TWIN ↓ CONTROL ↓ ACTUATOR ↓ PHÒNG HỌC 

21. Kiểm tra nhanh

Câu 1: Sensor có nhiệm vụ chính là gì?

Câu 2: Actuator có vai trò gì?

Câu 3: Digital Twin là gì?

22. Kết luận

IoT không chỉ đơn giản là "kết nối thiết bị với Internet". Khi phát triển thành hệ thống hoàn chỉnh, chúng ta có:

🌡️
Sensor
→
📡
Connectivity
→
☁️
Data
→
🤖
Analytics
→
🪞
Digital Twin
→
⚙️
Control

Điểm quan trọng nhất là hình thành được vòng phản hồi giữa thế giới thực và thế giới số.

Thực → Dữ liệu → Số → Phân tích → Quyết định → Điều khiển → Thực.

Đó chính là tư duy nền tảng để tiếp cận các hệ thống IoT, CPS, Digital Twin, Smart School, Smart Home, Smart Agriculture và nhiều hệ thống thông minh khác.

📚 Gợi ý học tiếp:
  • Arduino và ESP32
  • Cảm biến DHT11/DHT22
  • MQTT
  • Node-RED
  • Firebase
  • Python + Flask
  • Google Sheets làm IoT Database
  • AI phân tích dữ liệu cảm biến
  • Digital Twin 2D/3D
  • WebSocket thời gian thực

📌 Toàn bộ các mô phỏng trong bài được xây dựng bằng HTML, CSS và JavaScript, không cần Arduino hoặc thiết bị IoT thật. Các mô phỏng nhằm mục đích minh họa nguyên lý hoạt động và có thể được mở rộng thành các hệ thống IoT thực tế.

Tìm hiểu cơ bản về hệ thống IoT và hệ thống kết nối thực – ảo

🌐 TÌM HIỂU CƠ BẢN VỀ HỆ THỐNG IoT

🔗 Hệ thống kết nối thực – ảo và thế giới số

HTML • CSS • JavaScript

💡 Mục tiêu bài viết

IoT, hệ thống kết nối thực – ảo, CPS và Digital Twin là những khái niệm quan trọng trong quá trình phát triển của công nghệ hiện đại. Bài viết này giúp người mới bắt đầu hình dung các khái niệm trên bằng những ví dụ gần gũi và một mô phỏng IoT trực tiếp bằng JavaScript.

1. IoT là gì?

IoT (Internet of Things – Internet vạn vật) là mô hình trong đó các thiết bị hoặc vật thể trong thế giới thực được trang bị cảm biến, khả năng xử lý và kết nối mạng để thu thập, trao đổi dữ liệu với các hệ thống phần mềm.

Nói một cách đơn giản:

IoT = Vật thật → Cảm biến → Internet → Dữ liệu → Phần mềm → Hành động

Ví dụ: Phòng học thông minh

Một phòng học có cảm biến nhiệt độ. Cảm biến đo được nhiệt độ 34°C và gửi dữ liệu qua Internet đến hệ thống. Phần mềm nhận dữ liệu và hiển thị cho giáo viên.

🌡️
Cảm biến
→
📡
Internet
→
☁️
Cloud/Server
→
💻
Phần mềm

2. Một hệ thống IoT thường gồm những thành phần nào?

🌡️ 1. Cảm biến

Thu thập dữ liệu từ thế giới thực như nhiệt độ, độ ẩm, ánh sáng, chuyển động, khoảng cách...

🧠 2. Bộ xử lý

Vi điều khiển hoặc máy tính nhỏ xử lý dữ liệu từ cảm biến. Ví dụ: Arduino, ESP32, Raspberry Pi...

📡 3. Kết nối

Wi-Fi, Bluetooth, Ethernet, 4G/5G hoặc các công nghệ mạng khác giúp thiết bị trao đổi dữ liệu.

☁️ 4. Hệ thống dữ liệu

Server hoặc Cloud tiếp nhận, lưu trữ và xử lý dữ liệu từ các thiết bị IoT.

💻 5. Ứng dụng

Website, ứng dụng điện thoại hoặc phần mềm giúp người dùng xem dữ liệu và điều khiển hệ thống.

⚙️ 6. Thiết bị chấp hành

Có thể là quạt, đèn, máy bơm, khóa cửa, máy lạnh... nhận lệnh từ hệ thống để thực hiện hành động.

3. IoT hoạt động như thế nào?

🌎
Thế giới thực
Phòng học
→
🌡️
Cảm biến
Đo dữ liệu
→
📡
Kết nối
Internet
→
☁️
Server
Xử lý dữ liệu
→
💻
Ứng dụng
Hiển thị

4. Hệ thống kết nối thực – ảo là gì?

Có thể hiểu hệ thống kết nối thực – ảo là hệ thống kết nối giữa thế giới vật lý và môi trường số.

Dữ liệu từ thế giới thực được đưa vào hệ thống số để lưu trữ, mô phỏng, phân tích hoặc ra quyết định. Ngược lại, hệ thống số có thể gửi lệnh trở lại để tác động lên thiết bị thật.

Thực → Dữ liệu → Số/Ảo → Phân tích → Quyết định → Điều khiển → Thực

Đây là điểm quan trọng giúp chúng ta phân biệt một hệ thống IoT đơn giản với những hệ thống kết nối thực – ảo phức tạp hơn.

5. Ví dụ: Phòng học thông minh

Hãy tưởng tượng trường học có một phòng học thông minh. Hệ thống có thể thu thập:

  • 🌡️ Nhiệt độ phòng
  • 💧 Độ ẩm
  • 💡 Cường độ ánh sáng
  • 👥 Số người trong phòng
  • 🚪 Trạng thái cửa
  • ⚡ Trạng thái các thiết bị điện

Những dữ liệu này được đưa lên hệ thống số. Người quản lý có thể xem trạng thái phòng học trên máy tính hoặc điện thoại.

🏫
Phòng thật
↔
🌐
IoT
↔
💻
Mô hình số
↔
⚙️
Thiết bị thật

6. IoT và hệ thống kết nối thực – ảo có giống nhau không?

Khái niệm Hiểu đơn giản
IoT Kết nối các thiết bị/vật thể với Internet để thu thập và trao đổi dữ liệu.
CPS Kết hợp hệ thống vật lý với hệ thống tính toán, giám sát và điều khiển.
Digital Twin Tạo mô hình số đại diện cho một đối tượng hoặc hệ thống trong thế giới thực.
VR Tạo môi trường ảo để người dùng quan sát hoặc tương tác.
⚠️ Dễ nhầm:

IoT không đồng nghĩa với thực tế ảo (VR). IoT tập trung nhiều vào thiết bị, cảm biến, dữ liệu và kết nối. VR tập trung vào môi trường ảo và trải nghiệm của người dùng.

7. Digital Twin – "Bản sao số" của thế giới thực

Một ý tưởng quan trọng trong kết nối thực – ảo là Digital Twin.

Có thể hình dung Digital Twin như một "bản sao số" của một đối tượng hoặc hệ thống thực.

Ví dụ, một trường học có thể xây dựng mô hình số của các phòng học. Khi nhiệt độ phòng thật thay đổi, dữ liệu được cập nhật vào hệ thống số.

Phòng học thật
↓
Cảm biến gửi dữ liệu
↓
Mô hình số của phòng học
↓
Phân tích / mô phỏng / cảnh báo
↓
Điều khiển thiết bị thật

8. Mô phỏng một hệ thống IoT bằng JavaScript

Phần dưới đây là một mô phỏng nhỏ. Không cần Arduino hay ESP32. JavaScript sẽ đóng vai trò tạo dữ liệu cảm biến giả lập.

🌐 BẢNG ĐIỀU KHIỂN IoT – PHÒNG HỌC

```
🌡️ Nhiệt độ
--
°C
💧 Độ ẩm
--
%
💡 Ánh sáng
--
lux
🌀 Quạt
OFF
```

Hệ thống đang chờ dữ liệu...

9. Mô hình hoạt động của ví dụ trên

🌡️
Cảm biến
→
📡
Dữ liệu
→
💻
JavaScript
→
📊
Hiển thị
→
🌀
Điều khiển

Trong ví dụ trên, dữ liệu cảm biến được mô phỏng bằng JavaScript. Trong một hệ thống IoT thực tế, dữ liệu có thể đến từ Arduino, ESP32, Raspberry Pi hoặc các thiết bị IoT khác.

10. Từ IoT đến hệ thống thông minh

IoT chỉ là một phần của một hệ thống lớn hơn. Khi kết hợp IoT với cơ sở dữ liệu, Cloud, AI và các thuật toán phân tích, chúng ta có thể xây dựng những hệ thống thông minh.

🌡️
Cảm biến
→
🌐
IoT
→
☁️
Cloud
→
🤖
AI
→
⚙️
Điều khiển
🌟 Ví dụ:

Cảm biến phát hiện nhiệt độ cao → dữ liệu gửi lên hệ thống → AI/phần mềm phân tích → xác định phòng đang nóng → hệ thống gửi lệnh → quạt hoặc điều hòa được bật.

11. IoT có thể ứng dụng ở đâu?

🏫 Giáo dục

Phòng học thông minh, quản lý thiết bị, theo dõi môi trường, phòng thí nghiệm thông minh.

🏠 Nhà thông minh

Điều khiển đèn, quạt, điều hòa, cửa, camera và các thiết bị gia đình từ điện thoại.

🌾 Nông nghiệp

Đo độ ẩm đất, nhiệt độ, điều khiển tưới nước, theo dõi cây trồng.

🏭 Công nghiệp

Giám sát máy móc, phát hiện sự cố, theo dõi dây chuyền sản xuất.

🚗 Giao thông

Theo dõi phương tiện, giao thông thông minh, cảm biến và quản lý bãi đỗ xe.

🏥 Y tế

Theo dõi các thiết bị và dữ liệu trong các hệ thống chăm sóc sức khỏe.

12. Tóm tắt kiến thức

🔹 IoT: Kết nối thiết bị/vật thể với Internet.

🔹 Cảm biến: Thu thập dữ liệu từ thế giới thực.

🔹 Internet: Truyền dữ liệu giữa thiết bị và hệ thống.

🔹 Cloud/Server: Lưu trữ và xử lý dữ liệu.

🔹 Ứng dụng: Hiển thị dữ liệu và cho phép người dùng tương tác.

🔹 CPS: Kết hợp hệ thống vật lý với hệ thống tính toán và điều khiển.

🔹 Digital Twin: Mô hình số đại diện cho đối tượng/hệ thống thực.

🔹 VR: Môi trường ảo để người dùng tương tác.

13. Kiểm tra nhanh kiến thức

Câu 1. IoT là viết tắt của cụm từ nào?

Câu 2. Thiết bị nào thường dùng để thu thập dữ liệu trong IoT?

Câu 3. Digital Twin có thể hiểu đơn giản là gì?

🚀 Kết luận

IoT giúp các thiết bị trong thế giới thực có khả năng thu thập và trao đổi dữ liệu thông qua mạng.

Khi dữ liệu thực được kết nối với hệ thống số, được phân tích, mô phỏng và có khả năng điều khiển ngược trở lại thiết bị thật, chúng ta tiến tới các hệ thống kết nối thực – ảo, CPS và Digital Twin.

Đây là một trong những nền tảng quan trọng của chuyển đổi số, nhà máy thông minh, thành phố thông minh, trường học thông minh và Internet vạn vật.

📚 Nội dung mang tính nhập môn, phù hợp cho học sinh, giáo viên và người mới bắt đầu tìm hiểu về IoT, hệ thống kết nối thực – ảo và các công nghệ liên quan.

Bài 20 (Phần 5) - Tích hợp Chuyên môn & Xuất Báo cáo

Thời gian dùng thử đã hết!

Hệ thống iTeach đã vượt quá 15 ngày dùng thử. Vui lòng nhập License Key.

Bài 20. Quản lý sổ đầu bài điện tử (Phần 5)
Tích hợp Lịch báo giảng & Phân công chuyên môn

Cấu trúc Cơ sở dữ liệu (Database Schema): Để hệ thống chặt chẽ, ta cần 3 Sheet tương tác với nhau:

  • Sheet `PhanCong`: (Lớp, Môn, Giáo viên). Quy định ai dạy lớp nào.
  • Sheet `LichBaoGiang`: (Tuần, Thứ, Tiết, Lớp, Môn, Bài dạy, Giáo viên). Được giáo viên nhập lên vào cuối tuần trước dựa vào PhanCong.
  • Sheet `SoDauBai`: (Ngày, Lớp, Tiết, Môn, Bài dạy, Xếp loại, Giáo viên). Khớp với thực tế giảng dạy.

1. Mã nguồn Back-end (Code.gs)

Viết các hàm truy xuất dữ liệu riêng biệt để chuẩn bị cho việc xuất file Excel từ Client.

// 1. Hàm lấy Lịch Báo Giảng theo Giáo viên
function layLichBaoGiangTheoGV(tenGV) {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LichBaoGiang");
  let data = sheet.getDataRange().getValues();
  
  // Bỏ dòng tiêu đề và lọc theo tên Giáo viên (Giả sử cột G - index 6 là tên GV)
  let ketQua = data.slice(1).filter(row => row[6] === tenGV);
  return ketQua;
}

// 2. Hàm lấy Sổ Đầu Bài theo Lớp
function laySoDauBaiTheoLop(tenLop) {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SoDauBai");
  let data = sheet.getDataRange().getValues();
  
  // Bỏ dòng tiêu đề và lọc theo Lớp (Giả sử cột C - index 2 là Lớp)
  let ketQua = data.slice(1).filter(row => row[2] === tenLop);
  return ketQua;
}

2. Giao diện Tích hợp & Xuất Báo Cáo

NgàyLớpTiếtMôn & Bài dạyXLGV
TuầnThứTiếtLớpMôn & Bài dạy

Bảng Phân Công Chuyên Môn (Master Data)

Dữ liệu này là gốc rễ để giới hạn Giáo viên chỉ được lên lịch báo giảng và nhập sổ đầu bài đúng lớp, đúng môn được phân công.

Tổ Chuyên MônGiáo viênMôn dạyLớp phụ trách
Bài 20. Sổ Đầu Bài (Phần 4) - Xuất Báo Cáo & In Ấn

Thời gian dùng thử đã hết!

Phần mềm đã vượt quá 15 ngày dùng thử miễn phí. Vui lòng nhập mã bản quyền (License Key).

Bài 20. Sổ Đầu Bài: Xuất Excel & In Báo Cáo PDF

Có 2 cách tiếp cận để xuất báo cáo:

  1. Xuất Excel (Back-end): Google Sheets hỗ trợ một đường link bí mật giúp tải file tự động. Chỉ cần thay /edit bằng /export?format=xlsx trong đường dẫn của file Sheets, hệ thống sẽ trả về một file Excel.
  2. In PDF (Front-end): Thay vì dùng Apps Script tạo PDF rất phức tạp, ta dùng tính năng window.print() của trình duyệt kết hợp với CSS @media print. Kỹ thuật này sẽ "phù phép" trang web, ẩn đi các nút bấm, menu và biến bảng dữ liệu thành một trang A4 hoàn hảo.

1. Mã nguồn Back-end (Code.gs)

Chúng ta sẽ viết một hàm để lấy tự động ID của file Google Sheets hiện tại và ghép thành đường link tải Excel.

// Hàm lấy Link tải file Excel trực tiếp từ Google Sheets
function layLinkXuatExcel() {
  let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  let fileId = spreadsheet.getId();
  
  // Cấu trúc link tải trực tiếp của Google
  let exportUrl = "https://docs.google.com/spreadsheets/d/" + fileId + "/export?format=xlsx";
  
  return exportUrl;
}
💡 Mẹo nhỏ: Nếu bạn muốn xuất ra file PDF từ Google Sheets, chỉ cần đổi format=xlsx thành format=pdf. Tuy nhiên, xuất PDF theo cách này sẽ lấy toàn bộ trang tính gốc (chưa được format đẹp mắt). Do đó, ở phần Front-end dưới đây, ta sẽ dùng CSS để tạo bản in PDF xịn xò hơn.

2. Giao diện & Kỹ thuật Xử lý (Front-end)

Báo cáo Sổ đầu bài

STT Ngày Lớp Tiết Môn Nội dung bài dạy XL Giáo viên
Bài 19. Sổ Đầu Bài (Phần 3) - Xóa & Thống kê

Thời gian dùng thử đã hết!

Phần mềm đã vượt quá 15 ngày dùng thử miễn phí. Vui lòng nhập mã bản quyền.

Bài 19. Sổ Đầu Bài: Xóa Dữ Liệu & Báo Cáo Thống Kê

Trọng tâm bài học:
1. Thuật toán Xóa (Delete): Cần xác định chính xác số thứ tự dòng (Row Index) trên Google Sheets để xóa đúng đối tượng. Bắt buộc phải có hộp thoại xác nhận (Confirm) để tránh vô tình click nhầm.
2. Xử lý mảng (Array processing): Ứng dụng kỹ thuật đếm phần tử trong mảng (tương tự vòng lặp trong Python) bằng hàm filter() của JavaScript để tạo Bảng điều khiển (Dashboard) theo dõi thi đua trực quan.

1. Mã nguồn Back-end (Code.gs)

Hàm xóa dữ liệu trên Google Sheets rất đơn giản nhờ phương thức deleteRow(). Tuy nhiên, sự nguy hiểm là nếu xóa sai dòng, dữ liệu sẽ mất vĩnh viễn.

// Hàm Xóa một tiết học khỏi Sổ Đầu Bài
function xoaTietHoc(rowIndex) {
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SoDauBai");
  
  // Xóa dòng tại vị trí rowIndex
  sheet.deleteRow(rowIndex);
  
  return "Đã xóa dữ liệu thành công!";
}
💡 Lưu ý quan trọng: Khác với Cập nhật (Update) dùng setValue(), khi sử dụng deleteRow(), toàn bộ các dòng bên dưới sẽ bị đẩy lên trên. Do đó, thao tác xóa nên được thực hiện cẩn thận, và ngay sau khi xóa thành công trên Server, Frontend phải lập tức gọi lại hàm traCuuSoDauBai() (đã học ở Bài 18) để cập nhật lại danh sách, đảm bảo các rowIndex của các dòng còn lại không bị sai lệch.

2. Thuật toán Thống kê (Front-end JS)

Thay vì bắt Server (Google Script) phải đếm số lượng rồi mới trả về, ta tận dụng luôn mảng dữ liệu (Array) đã tải xuống trình duyệt để thống kê. Việc này giúp ứng dụng chạy nhanh hơn và giảm tải cho Server.

// Trích xuất code trong hàm vẽ bảng (JS)
function capNhatThongKe(data) {
  // data là mảng 2 chiều chứa danh sách các tiết học
  let tongSo = data.length;
  
  // Lọc và đếm số tiết đạt loại A (cột thứ 6 trong mảng, index = 6)
  let soLoaiA = data.filter(row => row[6] === "A").length;
  let soLoaiB = data.filter(row => row[6] === "B").length;
  let soLoaiC = data.filter(row => row[6] === "C").length;

  // Đổ dữ liệu ra Giao diện HTML
  document.getElementById("valTotal").innerText = tongSo;
  document.getElementById("valA").innerText = soLoaiA;
  // ...
}

3. Giao diện Tổng hợp Báo cáo & Quản lý

Bảng Điều Khiển Ban Giám Hiệu (Dashboard)

Tổng số tiết đã dạy
0
Tiết học loại A (Tốt)
0
Tiết học loại B (Khá)
0
Tiết học loại C (TB)
0
Ngày Lớp Tiết Môn & Bài dạy XL Quản trị