The Community MQTT integration caches firmware_version and model in _cached_device_info for the entire lifetime of the fanout module. This cache is only cleared when the module restarts (i.e., when Community MQTT settings change or is restarted, or remote term restarts). If the radio firmware is updated and the radio reboots, the backend reconnects and correctly refreshes radio_manager.firmware_version and radio_manager.device_model, but the Community MQTT module continues publishing the old cached values indefinitely.
The fix is to replace the _fetch_device_info() call in _publish_status() with direct reads from radio_manager.device_model, radio_manager.firmware_version, and radio_manager.firmware_build, which are already refreshed on every reconnect by the post-connect setup. _fetch_device_info() should be retained as a fallback where radio_manager.device_info_loaded is False.
Happy to submit a PR with the proposed changes.
The Community MQTT integration caches firmware_version and model in _cached_device_info for the entire lifetime of the fanout module. This cache is only cleared when the module restarts (i.e., when Community MQTT settings change or is restarted, or remote term restarts). If the radio firmware is updated and the radio reboots, the backend reconnects and correctly refreshes radio_manager.firmware_version and radio_manager.device_model, but the Community MQTT module continues publishing the old cached values indefinitely.
The fix is to replace the _fetch_device_info() call in _publish_status() with direct reads from radio_manager.device_model, radio_manager.firmware_version, and radio_manager.firmware_build, which are already refreshed on every reconnect by the post-connect setup. _fetch_device_info() should be retained as a fallback where radio_manager.device_info_loaded is False.
Happy to submit a PR with the proposed changes.
<!-- github-sync-id:4297422927 -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The Community MQTT integration caches firmware_version and model in _cached_device_info for the entire lifetime of the fanout module. This cache is only cleared when the module restarts (i.e., when Community MQTT settings change or is restarted, or remote term restarts). If the radio firmware is updated and the radio reboots, the backend reconnects and correctly refreshes radio_manager.firmware_version and radio_manager.device_model, but the Community MQTT module continues publishing the old cached values indefinitely.
The fix is to replace the _fetch_device_info() call in _publish_status() with direct reads from radio_manager.device_model, radio_manager.firmware_version, and radio_manager.firmware_build, which are already refreshed on every reconnect by the post-connect setup. _fetch_device_info() should be retained as a fallback where radio_manager.device_info_loaded is False.
Happy to submit a PR with the proposed changes.
Sounds good; thanks!