Đẩy so với bình chọn
Giải pháp đề xuất gửi yêu cầu AJAX thường xuyên của bạn nghe có vẻ giống như bỏ phiếu - bạn thường xuyên gửi yêu cầu để kiểm tra xem trạng thái có thay đổi hay không. Sẽ có ý nghĩa hơn nhiều khi đẩy các thay đổi đến máy chủ khi cảm biến piezo phát hiện ra sự thay đổi.
Đó là sự khác biệt giữa điều này:
Máy chủ: Có ai đó ở cửa không?
Cảm biến: Không .
Máy chủ: Có ai đó ở cửa không?
Cảm biến: Không .
Máy chủ: Có ai đó ở cửa không?
Cảm biến: Không .
... lặp lại quảng cáo vô hạn ...
Và điều này:
Cảm biến: Có ai đó ở cửa!
Ví dụ đầu tiên là bỏ phiếu, và thứ hai là đẩy. Bạn có thể biết cái nào sẽ có mức sử dụng năng lượng thấp hơn, mã ít phức tạp hơn và giảm mức sử dụng mạng.
HTTP hay cái gì khác?
Yêu cầu AJAX được gửi qua HTTP, do đó, nó khá nặng và yêu cầu một số bắt tay TCP trên mỗi kết nối (trừ khi bạn sử dụng Keep-Alive ).
Có thể đáng để xem xét các giao thức thay thế như MQTT (có một số giải thích tốt trong câu hỏi ' Khi nào và tại sao nên sử dụng giao thức MQTT? ', Có vấn đề rất giống với bạn).
Một nhà môi giới tin nhắn như MQTT có thể mạnh hơn một chút so với bạn thực sự cần trong tình huống hiện tại của bạn, nhưng một nhà môi giới MQTT có thể dễ dàng mở rộng nếu bạn chọn thêm nhiều thiết bị vào mạng gia đình thông minh của mình, trong khi hệ thống yêu cầu AJAX hiện tại của bạn sẽ nhanh chóng sụp đổ Hãy tưởng tượng bốn hoặc năm thiết bị khác nhau bỏ phiếu cho nhau; nó sẽ nhanh chóng dẫn đến mạng của bạn trở nên quá tải và nó sẽ tiêu tốn rất nhiều vào việc sử dụng năng lượng.
Nút và nút Web
Sử dụng ổ cắm web và Node sẽ giải quyết vấn đề sử dụng đẩy thay vì thăm dò ý kiến , vì vậy theo tôi, đó sẽ là một ý tưởng tốt. Tuy nhiên , tôi nghi ngờ việc bỏ phiếu sẽ hiệu quả nếu bạn thực sự không muốn học Node.
Nếu bạn muốn một giải pháp mở rộng sẽ hoạt động khi bạn mở rộng ngôi nhà thông minh của mình, chắc chắn phải đi với đẩy - nó sẽ tiết kiệm rất nhiều rắc rối và nước mắt. Nếu bạn chỉ muốn một bằng chứng nhanh chóng về khái niệm, bỏ phiếu có thể sẽ hoạt động.
Lời khuyên cá nhân của tôi là bạn nên tìm hiểu các ổ cắm web hoặc điều tra bằng cách sử dụng một nhà môi giới tin nhắn như MQTT. Bạn có thể sử dụng thư viện máy khách như Mosquitto-PHP (với hướng dẫn của HiveMQ ) để đơn giản hóa bằng MQTT trong PHP hoặc chỉ cần đi với Node và ổ cắm web. Tôi nghi ngờ tài nguyên học tập cho Node và web socket sẽ tốt hơn, nhưng MQTT có xu hướng được ưa chuộng cho môi trường nhà thông minh / IoT.