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.
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.
Deployment (Recommended — Installer)
The easiest way to deploy to a field machine is the pre-built Windows installer.
- Download
series3-watcher-setup.exefrom the latest release on Gitea. - Run the installer on the target machine. It installs to
C:\Program Files\Series3Watcher\and adds a shortcut to the user's Startup folder. - On first launch the Setup Wizard opens automatically — fill in the terra-view URL and Blastware path, then click Save & Start.
- 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.