Danh sách khách hàng đăng ký một chủ đề nhất định trong máy chủ Mosquitto


8

Vì vậy, đó là câu hỏi chung, nhưng tôi sẽ cung cấp kịch bản ở đây.

Tôi đang chạy máy chủ Mosquitto để cung cấp mqtt comm giữa các mô-đun chuyển tiếp đặc biệt ( Sonoff từ Itead ) và Trợ lý tại gia . Hầu hết thời gian, nó hoạt động tốt. Mỗi mô-đun có chủ đề riêng và có nhiều cấu hình "nhẹ" trong HASS như các mô-đun, do đó chúng có thể được điều khiển từ giao diện web bằng các nút chuyển đổi riêng lẻ.

Mặc dù vậy, tôi đã trải qua các tình huống trạng thái không nhất quán khi đèn thực sự bật và bật tắt trong HASS được hiển thị tắt (và cả tình huống ngược lại). Bằng cách kiểm tra nhật ký, tôi thấy rằng Mosquitto không xuất bản một số tin nhắn nhất định lên HASS (cần được đăng ký vào tất cả các chủ đề trạng thái mô-đun). Cụ thể hơn, với 4 mô-đun và các chủ đề trạng thái tương ứng ( state/sonoff_xx/POWER), HASS dường như chỉ được đăng ký cho các mô-đun 2 và 4 chủ đề, nhưng không phải là 1 và 3. Sau đây là hành vi dự kiến ​​cho mô-đun 4, có thể được xác minh tương tự cho mô-đun làm việc khác, nhưng xuất bản lên HASS bị thiếu cho hai cái kia.

Jun 15 19:22:46 nas mosquitto[9486]: Received PUBLISH from sonoff4 (d0, q0, r1, m0, 'stat/sonoff4/POWER', ... (2 bytes))
Jun 15 19:22:46 nas mosquitto[9486]: Sending PUBLISH to home-assistant (d0, q0, r0, m0, 'stat/sonoff4/POWER', ... (2 bytes))

Đây không phải là một câu hỏi liên quan đến HASS và các mô-đun chuyển tiếp, nhưng đó là về cách đào sâu vào trạng thái của Máy chủ MQTT được cho là có một số khách hàng đã đăng ký nhưng, bằng cách xem nhật ký, thì không.

Câu trả lời:


6

Không, bạn không thể có danh sách khách hàng nào đã đăng ký những gì ngoài mosquitto.

Điều có nhiều khả năng ở đây là HASS không đăng ký thay vì mosquitto không xuất bản cho khách hàng đã đăng ký.

Bạn có thể nhận mosquitto để đăng nhập mỗi khi yêu cầu đăng ký được thực hiện mà sau đó bạn có thể sử dụng để tạo danh sách.

log_type subscribe, unsubscribe

Điều này sẽ ghi lại tất cả những gì khách hàng đăng ký / hủy đăng ký từ những chủ đề.


1
Tôi đã đăng nhập tất cả các cấp ( log_type alltrong mosquitto.conf), thực tế tôi đã kiểm tra mục đăng ký bằng cách kết nối từ bảng điều khiển trong khi journalctl -fđang chạy. Mặc dù vậy, tôi không thể tìm thấy các mục về đăng ký HASS vì điều đó có thể xảy ra vài ngày trước và journald không được định cấu hình là liên tục, vì vậy tôi chỉ có trong tay khởi động hiện tại. Đó là lý do tại sao tôi hy vọng kiểm tra tình trạng Mosquitto.
Dario

1
Bạn không nên tập trung vào cấp độ QoS. Tôi đoán là các tin nhắn được gửi từ các nút (đơn vị Sonoff) đang được gửi bằng QoS = 0 có nghĩa là nó chỉ được gửi một lần. Không đáng tin theo nghĩa đó. Tôi sẽ cố gắng tăng giá trị này cho đến khi tôi tìm thấy một mức độ tốt. Theo tôi, trạng thái chuyển đổi nên sử dụng QoS 1 hoặc 2. Các giá trị cảm biến có thể bỏ lỡ một hoặc hai lần một lần nên sử dụng QoS 0.
Jimmy Westberg

3

Bạn có thể Kích hoạt nhật ký mosquitto cho tất cả và đăng ký nhật ký mà bạn sẽ tìm thấy các thông báo mà bạn có thể giải mã cho mọi hành động của khách hàng như kết nối, ngắt kết nối, đăng ký và xuất bản thậm chí lỗi.

bạn sẽ thiết lập

log_dest topic
log_type all

trong mosquitto.conf sau đó bạn sẽ đăng ký

$SYS/broker/log/#

Tôi mệt mỏi với cách tiếp cận này Đăng ký và xuất bản các sự kiện không được hiển thị
kavie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.