Gần đây tôi đã mua một vài rơle wifi từ Xiaomi. Mặc dù chúng đã rất ổn định cho đến nay, tôi thực sự không thích ứng dụng của Xiaomi. Nhưng, tôi thích ý tưởng rằng nó thực sự hoạt động cả trong mạng LAN và qua internet. Khi ở trong mạng LAN, họ rất nhanh chóng bật và tắt, xem xét các máy chủ của Xiaomi đang ở Trung Quốc.
Vì vậy, tôi muốn cuộn rơle dựa trên ESP8266 của riêng mình (tôi biết tôi có thể chuẩn bị phần cứng sẵn sàng, vì vậy đó là một phần thưởng). Vấn đề của tôi là, làm thế nào tôi có thể tự động phát hiện các rơle trên mạng của mình từ một trang web?
Từ một "Ứng dụng", tôi có thể sử dụng SSDP, mDNS-SD hoặc UPNP để phát hiện mọi thứ. Nhưng tôi chưa tìm thấy thông tin về thời tiết này có thể có từ trình duyệt web (về cơ bản Chrome trên Android). Vì tôi đã thay đổi trang web trạm thời tiết của mình thành Ứng dụng web lũy tiến, tôi đã bị cuốn hút. Tôi thực sự thích ý tưởng về những thứ chỉ là trang web chứ không phải ứng dụng bạn phải cài đặt. Và PWAs cũng lấp đầy khoảng trống với chế độ ngoại tuyến.
Mặc dù vậy, điều kỳ lạ là phần "khó" (bật và tắt rơle từ bên ngoài mạng LAN) lại không quan trọng để giải quyết thông qua máy chủ MQTT. Nhưng tôi không muốn dựa vào máy chủ MQTT bên ngoài. Nếu tôi đang ở trên mạng LAN, tôi muốn nói chuyện trực tiếp với rơle. Nếu không, sau đó gửi lệnh thông qua MQTT.
Tất nhiên, tôi có thể dựa vào máy chủ để truy vấn các rơle, nhưng trong trường hợp đó tôi cần kết nối internet (nếu máy chủ MQTT của tôi nằm trên "đám mây") hoặc máy chủ lưu trữ tại nhà. Tôi có một máy chủ ở nhà, và ngay cả khi tôi không có, một quả mâm xôi pi có thể dễ dàng lấp đầy khoảng trống. Nhưng lý tưởng sẽ không cần đến máy chủ khi nói chuyện với các thiết bị qua mạng LAN (Wifi trong trường hợp này). Tôi thích giữ cho P2P càng nhiều càng tốt và chỉ sử dụng MQTT như một cách dự phòng khi tôi sử dụng mạng WAN (MQTT giải quyết các vấn đề về CG-NAT và chuyển tiếp cổng).