*Đã lưu trữ* = Cách xây dựng máy chủ web quản lý IoT = Chào các cậu, Tôi là một lập trình viên có sở thích và cần một chút lời khuyên Nói ngắn gọn: Tôi muốn tạo một ứng dụng web nhỏ để điều khiển đèn Philips Hue và các thiết bị IoT khác tại nhà Tôi đã tìm hiểu về Hue API trong Python và có một vài tập lệnh hoạt động tốt. Tôi cũng có một số tập lệnh chạy các lệnh trên mỗi SSH trên một thiết bị khác Vì vậy, bước tiếp theo của tôi, tôi muốn tạo một ứng dụng web để có giao diện người dùng ưa nhìn Trước đây, tôi cũng đã tạo một ứng dụng Android nhỏ, đầu tiên là trong Kotlin, sau đó là Flutter và Firebase và tôi đã rất ngạc nhiên về việc tôi có thể dễ dàng có được một giao diện người dùng khá ưa nhìn hoạt động trong Flutter. Tôi biết Flutter cũng có thể được sử dụng làm ứng dụng web, nhưng tôi không nghĩ đây là công cụ phù hợp cho việc này Tôi đã xem qua React và Angular và tìm hiểu qua các hướng dẫn dành cho người mới bắt đầu. So với Flutter, chúng trông giống như nhiều công việc hơn để làm cho chúng trông đẹp mắt hơn, nhưng có lẽ tôi chỉ cần một mẫu tốt hơn Trong trí tưởng tượng của tôi, tôi muốn kích hoạt một tập lệnh để thu thập trạng thái hiện tại, tập lệnh ghi nó vào một số tệp JSON và giao diện người dùng hiển thị một biểu đồ hoặc sơ đồ đẹp mắt. Sau đó, nhấn một nút và thao tác này sẽ ghi một tệp khác và kích hoạt một tập lệnh, tập lệnh này sẽ đọc tệp và giả sử thay đổi màu sáng tương ứng Bây giờ, thành thật mà nói, tôi hơi lạc lõng với những gì nên bắt đầu Từ những gì tôi thu thập được, tôi có thể xây dựng giao diện người dùng với Angular và sau đó có thể có MongoDB làm "hệ thống tệp"của mình, nơi tôi có thể lưu trữ và tải trạng thái của đèn hoặc tập lệnh cấu hình. Tôi nghĩ khi đó tôi sẽ cần một API để kết nối DB với giao diện người dùng của mình. Tôi hy vọng tôi ít nhất đúng một phần: D Bạn có nói rằng bắt đầu với JS/TS và tạo giao diện người dùng trong Angular hoặc React là hướng đi đúng không? Hay điều này hoàn toàn sai đối với ý định của tôi? Cảm ơn lời khuyên của bạn! Bạn chắc chắn đang đi đúng hướng ở đây, điều bạn còn thiếu là liên kết tất cả lại với nhau thành một thông số kỹ thuật cho máy chủ Điều tôi sẽ làm trong trường hợp của bạn là xây dựng một máy chủ phục vụ một trang web. Trang web đưa các yêu cầu HTTP trở lại API REST do máy chủ hiển thị. Máy chủ là điểm kết nối trung tâm giữa trang web giao diện người dùng, tập lệnh, cơ sở dữ liệu của bạn; không thử và kết nối từ trang web đến DB hoặc thay đổi trạng thái đèn mà không thông qua máy chủ Xác định điểm cuối API của bạn. Giả sử bạn muốn điều khiển đèn của mình; có thể bạn cần: Nhận mã thông báo xác thực [ HTTP GET/api/token with creds in header], returns token or 401 Get status of devices [ HTTP GET /api/devices with token in header], returns JSON status of all devices Get status of lights [ HTTP GET /api/devices/lights with token in header] returns JSON status of all lights Control a single light [ HTTP POST /api/light/ with token in header, payload specifying RGB], returns empty 200 on valid request, 422 otherwise And so forth. Once you have an API spec you can develop whatever you want to first; the server code for the API (Django is good if you're comfortable with Python), the front-end code, the server code for integrating your scripts or the DB. As long as the API is sufficiently specified then the parts will all talk to each other nicely. Separation of concerns makes it simple to build some bits, mock others up, modify and replace as needed A tip: don't write anything to files if you're just sending JSON data around. The server itself can *probably* just call all the script code directly with no need to pass files, and can definitely serve the JSON via HTTP to the web page for display purposes This sounds like a fun project. Can you tell me a little about your end goal with it? Maybe I’ll do something like it at my house. I guess what I’m wondering is aside from being a fun project, what (if any) controls does it give you over your devices that don’t come sort of “baked in” via remote controls or apps for example that may come with the device. Just would like to hear about your real world advantages of doing this == About Community == Members Online