- Added functionality to persist and load the last advertisement timestamp using a JSON state file.
- Introduced methods for saving and loading advertisement state, ensuring reliability across application restarts.
- Enhanced the BinaryCommandProxy class with detailed event buffering and response timing for improved command handling.
- Updated response handling to accommodate new statistics tracking for command execution, including success, timeout, and error rates.
- Improved logging for command processing and event handling to facilitate better debugging and monitoring.
- Introduced a BinaryCommandProxy class to manage TCP connections for binary command communication.
- Defined binary command and response codes for improved command handling.
- Implemented event handlers to forward responses to binary interface clients.
- Integrated binary interface proxy setup and teardown in the PacketCapture class.
- Enhanced logging for better debugging and monitoring of command responses.
- Revised MQTT settings for Let'sMesh Analyzer to include US and EU server configurations.
- Updated server addresses, ports, and transport methods for improved connectivity.
- Enabled authentication tokens and keepalive settings for both MQTT brokers.
- Added comments for optional custom MQTT broker configuration.
- Changed default connection type from BLE to serial in docker-compose.yml and Dockerfile.
- Updated privileged mode settings for improved security and flexibility.
- Enhanced device mounting instructions to recommend using persistent device IDs.
- Added comments for optional environment variables and MQTT settings for better clarity.
- Removed unnecessary default environment variables related to BLE connections.
Improve BLE timeout and disconnect handling.
Refactor auth token generation to use the radio to sign JWTs, with fallbacks to a python implementation (typically unnecessary unless then firmware is 6+ months old). Removes dependency on meshcore-decoder.
Fixes pairing process in pairing_helper.py
- Introduced configurable retry limits for various device commands, including BLE, TCP, health checks, stats, and device info queries.
- Enhanced the retryable_device_command method to utilize connection-specific defaults when max_retries is not specified.
- Implemented connection state management methods to streamline connection checks and state resets after reconnections.
- Improved health check logic to incorporate connection-specific timeout and retry configurations, enhancing reliability and error handling.
- Introduced a grace period for health checks on BLE connections, allowing for a limited number of consecutive failures before considering the connection degraded.
- Adjusted health check timeout and retry logic for BLE and TCP connections to improve reliability.
- Reset health check failure count upon successful connection and health check, ensuring accurate tracking of connection status.
- Improved logging for health check failures and timeouts to aid in debugging and monitoring connection health.
- Introduced `_retryable_device_sign` in `auth_token.py` to handle transient errors during device signing operations with exponential backoff.
- Implemented `retryable_device_command` in `packet_capture.py` for executing device commands with timeout and retry logic, enhancing robustness against communication issues.
- Updated various device command calls in `packet_capture.py` to utilize the new retry logic, improving error handling and reliability in device interactions.
- Bump version in install.ps1 and install.sh to 1.2.
- Remove unnecessary debug logging in Bluetooth pairing functions.
- Enhance error handling in connection health checks for TCP with SDK auto-reconnect.
- Streamline MQTT configuration checks in install.sh.
- Introduced on-device signing as the default method for JWT token generation, with fallback options to Python signing and meshcore-decoder CLI.
- Enhanced error handling and logging for token generation processes.
- Updated installation scripts to reflect changes in authentication methods, removing the requirement for meshcore-decoder.
- Added async support for token creation to improve performance in asynchronous contexts.
- Updated requirements to ensure compatibility with the latest meshcore package for on-device signing support.
- Capture BLE address before disconnecting to ensure proper cleanup.
- Implement forced disconnection via bluetoothctl on Linux systems for BLE devices.
- Add check_dialout_group() function in install.sh to prompt users to add themselves to dialout group when using serial connections
- Fix device name retrieval: wait for self_info to populate and add fallback to PACKETCAPTURE_ORIGIN
- Prevents 'Cannot connect to MQTT without device name' errors when device info is delayed or unavailable
- Fixes indentation errors in packet_capture.py
- Introduced a new environment variable `PACKETCAPTURE_UPLOAD_PACKET_TYPES` to specify which packet types to upload to MQTT.
- Updated `packet_capture.py` to filter packets based on the allowed types, ensuring only specified types are uploaded while still capturing all packets.
- Updated documentation in README.md to explain the new filtering feature and provide usage examples.
- Updated `install.ps1` and `install.sh` to prompt for an optional owner email address during JWT configuration.
- Added email validation and storage in the environment configuration.
- Modified `packet_capture.py` to include the owner email in JWT claims if configured.
- Introduced `Configure-JwtOptions` in `install.ps1` and `configure_jwt_options` in `install.sh` to allow optional configuration of an owner public key for JWT tokens.
- Updated the MQTT broker configuration to prompt for JWT options if not already set.
- Enhanced `packet_capture.py` to include the owner public key and client agent in JWT claims if configured.