Files
LEDMatrix/scripts/utils
ChuckBuildsandClaude Opus 5 5b1e3d492e feat(tools): manage the MQTT bridge and Pixlet editor from the Tools tab
PR #544's change, ported onto the api_v3 package split (#553). Identical
behaviour; only the placement of the new code differs.

The original added 508 lines to web_interface/blueprints/api_v3.py, which #553
deletes, so every hunk of it would conflict irreconcilably. Ported by AST:
26 new top-level items sorted to where the split puts each kind --

  __init__.py   2 imports, 11 constants, 7 helpers
  starlark.py   4 routes  (/starlark/editor/{apps,status,start,stop})
  misc.py       2 routes  (/integrations/mqtt-bridge{,/config})

Everything outside api_v3.py -- the Tools partial, the installer scripts, the
JS tests -- applied unchanged.

Routes: 111 from the split plus these 6 = 117, and the url-map snapshot is
regenerated to match, which is exactly what test_api_v3_url_map.py is designed
to make you do when routes are added.

Full Python suite: 4,278 passed, 68 skipped, 0 failed. The JS tests this PR
ships could not be run here -- node is not installed on this machine -- so
test/js/dom/test_tools_sections.js is unverified.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014RRtqXDCnvnY6EQwhT5CV9
2026-09-11 10:15:39 -04:00
..
2025-12-27 14:15:49 -05:00
2025-12-27 14:15:49 -05:00

Utility Scripts

This directory contains utility scripts for maintenance and system operations.

Scripts

  • clear_cache.py - Clears LEDMatrix cache data (specific keys or all cache)
  • start_web_conditionally.py - Conditionally starts the web interface based on config settings
  • wifi_monitor_daemon.py - Background daemon that monitors WiFi/Ethernet connection and manages access point mode
  • cleanup_venv.sh - Cleans up Python virtual environment files
  • clear_python_cache.sh - Clears Python cache files (pycache, *.pyc, etc.)
  • pixlet_config_editor.sh - Opens Pixlet's own config UI for one installed Starlark app
  • apply_dns_single_request.sh - Adds options single-request to the resolver (run by ledmatrix-dns-fix.service)

Usage

Clear Cache

python3 scripts/utils/clear_cache.py --list          # List cache keys
python3 scripts/utils/clear_cache.py --clear-all      # Clear all cache
python3 scripts/utils/clear_cache.py --clear <key>    # Clear specific key

Start Web Interface Conditionally

This script is typically called by the systemd service (ledmatrix-web.service) and checks the web_display_autostart setting in config/config.json before starting the web interface.

WiFi Monitor Daemon

This daemon is typically run as a systemd service (ledmatrix-wifi-monitor.service) and automatically manages WiFi access point mode based on network connectivity.

Pixlet Config Editor

Run it when you want Pixlet's own config form for a Starlark app -- live render preview, cascading dropdowns -- rather than the LEDMatrix one.

./scripts/utils/pixlet_config_editor.sh                 # list installed apps
./scripts/utils/pixlet_config_editor.sh penndot_signs   # edit, on localhost:8080

Deliberately not a service. It stops the display for the length of the session and pixlet serve listens with no authentication, so it should only be running while you are actually editing. It backs the config up first and restarts the display on exit, however it exits.

It binds loopback only, with no flag to change that: anything that can reach pixlet serve can rewrite the app's config, and a printed warning is not access control. To edit from another machine, forward the port -- SSH does the authenticating and nothing is left listening on the LAN:

ssh -L 8080:localhost:8080 pi@ledpi.local

Apply DNS Single-Request Fix

Installed and run by ledmatrix-dns-fix.service; see systemd/README.md. Safe to run by hand (sudo ./scripts/utils/apply_dns_single_request.sh) and idempotent.