serversdown 3ee0cae31e fix(settings): add SFM Forward tab to settings dialog (v1.5.1)
v1.5.0 shipped the forwarder module + INI keys but the settings
dialog wasn't extended, so the only way operators could enable
forwarding was hand-editing config.ini.  This adds a sixth tab
("SFM Forward") with:

  - Forward events to SFM    checkbox
  - SFM Server URL           entry + Test button (GETs /health)
  - Forward Interval (sec)   spinbox
  - Quiescence (sec)         spinbox
  - Missing-Report Grace     spinbox
  - HTTP Timeout             spinbox
  - State File               entry + Browse...

Save-time guard: enabling the forwarder without a URL raises a
validation error rather than silently saving a non-functional
config.

Patch release — same on-disk INI schema, no config migration.
2026-05-10 00:01:25 +00:00
2026-03-17 21:54:15 -04:00

Series 3 Watcher v1.5.1

Monitors Instantel Series 3 (Minimate) call-in activity on a Blastware server. Runs as a system tray app that starts automatically on login, reports heartbeats to terra-view, and self-updates from Gitea.


The easiest way to deploy to a field machine is the pre-built Windows installer.

  1. Download series3-watcher-setup.exe from the latest release on Gitea.
  2. Run the installer on the target machine. It installs to C:\Program Files\Series3Watcher\ and adds a shortcut to the user's Startup folder.
  3. On first launch the Setup Wizard opens automatically — fill in the terra-view URL and Blastware path, then click Save & Start.
  4. A coloured dot appears in the system tray. Done.

The watcher will auto-start on every login from that point on.

Auto-Updates

The watcher checks Gitea for a newer release approximately every 5 minutes. When a newer .exe is found it downloads it silently, swaps the file, and relaunches — no user action required.

Updates can also be pushed remotely from terra-view → Settings → Developer → Watcher Manager.


Building & Releasing

See BUILDING.md for the full step-by-step process covering:

  • First-time build and installer creation
  • Publishing a release to Gitea
  • Releasing hotfix updates (auto-updater picks them up automatically)

Running Without the Installer (Dev / Debug)

pip install -r requirements.txt
python series3_tray.py        # tray app (recommended)
python series3_watcher.py     # console-only, no tray

config.ini must exist in the same directory. Copy config-template.ini to config.ini and edit it, or just run series3_tray.py — the wizard will create it on first run.


Configuration

All settings live in config.ini. The Setup Wizard covers every field, but here's the reference:

API / terra-view

Key Description
API_ENABLED true to send heartbeats to terra-view
API_URL Terra-View base URL, e.g. http://192.168.1.10:8000 — the /api/series3/heartbeat endpoint is appended automatically
API_INTERVAL_SECONDS How often to POST (default 300)
SOURCE_ID Identifier for this machine (defaults to hostname)
SOURCE_TYPE Always series3_watcher

Paths

Key Description
SERIES3_PATH Blastware autocall folder, e.g. C:\Blastware 10\Event\autocall home
MAX_EVENT_AGE_DAYS Ignore .MLG files older than this (default 365)
LOG_FILE Path to the log file

Scanning

Key Description
SCAN_INTERVAL_SECONDS How often to scan the folder (default 300)
MLG_HEADER_BYTES Bytes to read from each .MLG header for unit ID (default 2048)
RECENT_WARN_DAYS Log unsniffable files newer than this window

Logging

Key Description
ENABLE_LOGGING true / false
LOG_RETENTION_DAYS Auto-clear log after this many days (default 30)

Auto-Updater

Key Description
UPDATE_SOURCE gitea (default) or url — where to check for updates
UPDATE_URL Base URL of the update server when UPDATE_SOURCE = url (e.g. terra-view URL). The watcher fetches /api/updates/series3-watcher/version.txt and /api/updates/series3-watcher/series3-watcher.exe from this base.

SFM Event Forwarder (v1.5.1+)

Forwards each Blastware event binary (and its paired <binary>.TXT ASCII report when present) to an SFM server's /db/import/blastware_file endpoint, where the report is parsed and the rich per-channel stats (PPV, ZC Freq, Time of Peak, Peak Acceleration / Displacement, sensor self-check) land in a searchable database. Default-off — existing deployments keep their old behaviour after auto-updating until the operator opts in.

Key Description
SFM_FORWARD_ENABLED true to enable forwarding (default false)
SFM_URL Base URL of the SFM server, e.g. http://10.0.0.44:8200
SFM_FORWARD_INTERVAL_SECONDS Scan-and-forward cadence (default 60); independent of the heartbeat interval
SFM_QUIESCENCE_SECONDS Skip files modified within this many seconds (default 5) — avoids forwarding mid-write
SFM_MISSING_REPORT_GRACE_SECONDS If a .TXT partner hasn't appeared after this many seconds, forward the binary alone (default 60)
SFM_HTTP_TIMEOUT Per-request HTTP timeout in seconds (default 60)
SFM_STATE_FILE Path to the JSON state file tracking sha256 of forwarded events. Leave blank to default to <log dir>/sfm_forwarded.json

Forwarded files are tracked by sha256 in the state file, so re-scans / restarts / auto-updates never re-POST the same content. A failed POST stays in the pending pool and is retried on the next interval.


Tray Icon

Colour Meaning
Grey Starting / no scan yet
Green All detected units OK
Yellow At least one unit Pending
Red At least one unit Missing, or error

Right-click the icon for: status, per-unit list, Settings, Open Log Folder, Exit.


terra-view Integration

When API_ENABLED = true, the watcher POSTs a telemetry payload to terra-view on each heartbeat interval. terra-view updates the emitter table and tracks the watcher process itself (version, last seen, log tail) in the Watcher Manager.

To view connected watchers: Settings → Developer → Watcher Manager.


Requirements

  • Windows 7 or later
  • Python 3.8 (only needed if running from source — not needed with the installer)
  • Blastware 10 event folder accessible on the local machine

Versioning

Follows Semantic Versioning. Current release: v1.5.1. See CHANGELOG.md for full history.


License

Private / internal — Terra-Mechanics Inc.

S
Description
Scans blastware's ACH folder and reports updated files to an API via HTTP.
Readme 618 KiB
2026-05-11 12:37:32 -04:00
Languages
Python 98.1%
Inno Setup 1.1%
Batchfile 0.8%