Xây dựng Server Nodejs cho IoT

hiện em đang làm một project nho nhỏ về IoT, em cần build 1 server chạy local bằng Node.js và thực hiện các chức năng
1) điều khiển các thiết bị đó thông qua internet
2) đọc trạng thái (đang on/ hay off) , đọc dữ liệu của cảm biến (nhiệt độ, độ ẩm, …)
3) quản lý nhiều thiết bị theo từng ID hoặc IP khác nhau ( ví dụ xài 4 thiết bị ESP - 2 thiết bị Android ) thì phân biệt và phân quyền sử dụng
4) có thể streaming audio hoặc video ạ (em xài module esp32 - cam)
5) lưu trữ ảnh và video khi cần vào database
6) tất cả sẽ thực hiện qua app mobile em viết bằng android studio.

Em cần chuẩn bị những kiến thức nào , và thực hiện từ đâu đến đâu ạ ? Em đã research khá nhiều nhưng thông tin nhiều quá em không chọn lọc được , hiện tại em có biết dùng phương thức socket để kết nối real-time, cần viết API … Nhưng em khá mơ hồ về nó ạ
Em mong được anh chị đi trước chỉ dẫn hướng đi để em hoàn thiện project của mình ạ. Xin cảm ơn

  1. Điều khiển là gì? Thiết bị đó là những gì? hãng/model nào => lựa chọn/xác định rồi thì mua về, tìm nguồn hỗ trợ của thiết bị đó. Đó có thể là sdk, đặc tả giao thức để giao tiếp với thiết bị…
  2. giống như 1
  3. bạn gặp vấn đề gì với yêu cầu này?
  4. xem tài liệu về module đó + google, và việc này không chỉ dừng lại ở 1 câu hỏi mà còn phải tìm hiểu về livesteam. Ví dụ làm sao để lấy được hình ảnh hoặc live video từ cam, làm sao để stream qua network, rồi client của bạn là gì (mobile/browser/desktop) , bạn có implement luôn phần client đó hay không
  5. lưu trữ ảnh và video vào database thì bạn gặp khó khăn gì
  6. phần này đã có câu trả lời cho client của câu 4. như vậy bạn có 1 app mobile làm client điều khiển và xem video live, bạn có một server trung gian sử dụng nodejs.

Vậy thì cần chuẩn bị kiển thức về làm app android, nodejs, giao tiếp mạng, tài liệu về các module iot
Đa số các bạn đều ngụy biện cho việc lười biếng bằng những câu kiểu như “em mới học”, “đọc tài liệu khá mơ hồ”… Vậy bạn đã làm được bất kì cái gì nhỏ xíu trong những thứ mà bạn định làm chưa? Ví dụ:

  • Tạo web server bằng nodejs, sau đó truy cập thử, và nhận đợc web có helloworld
  • Tạo app hello world trên android (cái này thì template có lúc tạo project rồi)
  • Thử thêm một cái nút trên cái app đó, bấm vào thì ra được 1 câu thông báo bạn đã bấm nút trên màn hình (hoặc đại loại là bắt được sự kiện bấm nút đó)
  • Kết nối được với server từ app mobile (gọi http api) đó lấy được chữ hello world từ app mobile
  • Rồi sửa lại bấm nút trên app và gọi api về server để lấy data gì đó hiện lên (dù chỉ là 1 message đơn giản)
  • Rồi lại thêm cái nút thứ 2, thêm một cái api khác trên web server, như vậy app có 2 nút, server có 2 api để 2 nút đó gọi khi người dùng tap vào, chỉ đơn giản là server trả về message “bạn vừa gọi api 1” “bạn vừa gọi api 2” để client hiển thị thôi
  • rồi tiếp tục chỉnh webserver kết nối với database, chạy được câu query gì đó (bất kì)
  • rồi làm api upload file (video/image)… vào database…

và rất nhiều bước khác nữa, kể ra đã thấy nhức đầu và tốn thời gian chứ nói gì là giải thích hay hướng dẫn

cái bạn mô tả là 1 tổ hợp rất nhiều kiến thức nhiều mảng khác nhau chứ không chỉ đơn thuần là chỉ có 1 mảng, và với người chưa biết gì thì đó là một cái gì đó rất to bự (hoặc biết theo kiểu nghe qua keyword api, socket, realtime thì chắc cũng chỉ có tác dụng search google mà thôi, hơn được người không biết gì tí xíu)
mọi thứ lớn lao đều bắt đầu từ những cái nhỏ bé, đừng có nghĩ là sẽ có tài liệu gì đó mà chỉ cần đọc và làm vài nữa là sẽ xong ngay, cái đó chỉ có trong mơ thôi

5 Likes

Giống như bạn trên đã trả lời.
Chia nhỏ ra hết mức có thể từng nội dung, thử nghiệm từng bước, tìm hiểu từng phần.

Em đã research khá nhiều nhưng thông tin nhiều quá em không chọn lọc được

Kiến thức trên mạng so với các chức năng của bạn, không phải là chỉ chọn lọc, mà còn cần tổng hợp nữa.
Sau khi nắm chắc được từng phần nhỏ, thì cần có tư duy để tổng hợp lại, thiết kế ra hệ thống hoàn chỉnh.
Để làm hết các yêu cầu trên thì không phải đơn giản.
Không ai rảnh mà chỉ cho bạn từ a-z đâu.

Trước hết, mình nghĩ bạn nên vào http://arduino.vn/, tập làm các demo nho nhỏ từ dễ đến khó.
Sau khi quen với arduino rồi thì tìm hiểu thêm về server, web, mobile app.
Học tập cho đến khi bạn tự hình dung ra được hệ thống, đó là lúc có thể bắt đầu dự án được.

Ngoài ra, câu hỏi này thiếu thông tin trầm trọng.
Liệt kê ra được phương hướng cơ bản để làm thì tốt rồi, nhưng chưa cho rõ được kiến thức nào bạn đang có sẵn, kiến thức nào chưa?
Hay là thậm chí chưa biết tí gì về lập trình, mà chỉ mới search Google?
(Đọc câu hỏi thì mình đang nghĩ theo hướng này, chưa biết bất cứ thứ gì)

5 Likes

dạ em cảm ơn những ý kiến của anh ạ, em xin lỗi vì thật sự em chỉ mới bắt đầu đụng đến nodejs. Còn trước đó em chỉ tập trung code cho module và làm app mobile, em đã làm xong chức năng cơ bản nhưng push thông báo và điều khiển bật tắt led nhưng thông qua firebase thôi ạ. Vì em không phải dân IT nên đa số em tự mò mẫm trên mạng và hơi rối rắm ạ. Em sẽ cũng đã làm dc cái phần socket cho module connect và cho app mobile connect được rồi ạ. Bây giờ em sẽ tìm hiểu kỹ hơn những thứ mà anh đã góp ý. Em xin ghi nhận ạ!

dạ em cảm ơn những ý kiến của anh ạ, em xin lỗi vì thật sự em chỉ mới bắt đầu đụng đến nodejs. Còn trước đó em chỉ tập trung code cho module và làm app mobile, em đã làm xong chức năng cơ bản như push thông báo và điều khiển bật tắt led nhưng thông qua firebase thôi ạ. Vì em không phải dân IT nên đa số em tự mò mẫm trên mạng và hơi rối rắm ạ. Em sẽ cũng đã làm dc cái phần socket cho module connect và cho app mobile connect được rồi ạ. Bây giờ em sẽ tìm hiểu kỹ hơn những thứ mà anh đã góp ý. Em xin ghi nhận ạ!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?