feat: add MQTT notifications - #187
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add optional MQTT notifications for new Significant Connections.
Notifications build on the existing Significant Connections detection. Events are stored independently of notification delivery, and a learning period prevents notifications while TapMap is still building its initial Insights history.
MQTT can be configured with
tapmap --configure-mqttand supports TLS and optional authentication. Broker addresses are restricted to IPv4 or IPv6 addresses so TapMap does not perform DNS lookups when connecting to the broker.MQTT delivery is best effort. Messages use QoS 0, are not retained, and TapMap automatically reconnects after connection loss.
Desktop credentials are stored in the operating system keyring. Docker stores MQTT configuration and credentials in the persistent
/datadirectory.The default notification learning period is 7 active Insights days and can be configured with
TAPMAP_NOTIFICATION_LEARNING_DAYS.Testing
MQTT was manually tested on Windows, Linux, macOS, and Docker, including configuration and persistence, TLS and authentication, message delivery and payloads, learning-period behavior, connection loss and reconnection, unavailable brokers, authentication rejection and recovery, invalid configuration, and clean shutdown.
The automated test suite and Ruff checks pass.
Documentation
Add MQTT documentation and update Help, About, Docker, environment variables, privacy information, and architecture documentation.