Adds a stdlib-only (termios, no pyserial) control layer for the older RION
NL-42/NL-52 meters, which have no Ethernet option and speak the same ASCII
command family as the NL-43 over RS-232C or USB (virtual COM port).
- nl52/protocol.py: I/O-free parsers for DOD? (14 fields) and DRD? (9
fields), result codes, and level tokens. Handles '--.-' disabled-channel
nulls and space-padded fixed-width fields.
- nl52/client.py: termios SerialPort + NL52Client. Echo-tolerant result-code
reading, buffered multi-line reads, NL-52 rate limits (200ms; 1s for DOD?).
is_request = "?" in cmd (NL-52 requests can carry a param after '?', e.g.
'System Version?NL').
- nl52/cli.py: bench tool — probe/status/start/stop/monitor/poll/raw — for
testing over USB on the dev server with nothing to install.
- test_nl52_protocol.py: 45 parser assertions, host-runnable (no hardware).
Client exchange logic separately validated via pty loopback.
NL-52 quirks vs NL-43: DOD has no Lpeak and no measurement-state (query
Measure? separately); DRD streaming requires the NX-42EX option.
Not yet: SLMM integration (async transport / serial->TCP bridge for the RX55
PAD-mode path), DB model, validation against real hardware.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- db cache dump on diagnostics request.
- individual device logs, db and files.
-Device logs api endpoints and diagnostics UI.
Fix:
- slmm standalone now uses local TZ (was UTC only before)
- fixed measurement start time logic.
- Implemented a new `/roster` endpoint to retrieve and manage device configurations.
- Added HTML template for the roster page with a table to display device status and actions.
- Introduced functionality to add, edit, and delete devices via the roster interface.
- Enhanced `ConfigPayload` model to include polling options.
- Updated the main application to serve the new roster page and link to it from the index.
- Added validation for polling interval in the configuration payload.
- Created detailed documentation for the roster management features and API endpoints.
- Introduced a new communication guide detailing protocol basics, transport modes, and a quick startup checklist.
- Added a detailed list of commands with their functions and usage for NL-43/NL-53 devices.
- Created a verified quick reference for command formats to prevent common mistakes.
- Implemented an improvements document outlining critical fixes, security enhancements, reliability upgrades, and code quality improvements for the SLMM project.
- Enhanced the frontend with a new button to retrieve all device settings, along with corresponding JavaScript functionality.
- Added a test script for the new settings retrieval API endpoint to demonstrate its usage and validate functionality.
- Implement migration script to add ftp_username and ftp_password columns to nl43_config table.
- Create set_ftp_credentials.py script for updating FTP credentials in the database.
- Update requirements.txt to include aioftp for FTP functionality.
- Enhance index.html with FTP controls including enable, disable, check status, and list files features.
- Add JavaScript functions for handling FTP operations and displaying file lists.