Live Coverage

Deployed gateways · data from Actility ThingPark
Search & Filter
RF Region
Tags (Actility)
Add Deployed Gateway
πŸ’‘ tip: right-click on the map to add a gateway at that spot
Gateways (0)
No gateways yet β€” add one above.
Data
Actility ThingPark Wireless
Pulls your deployed base stations (name, LRR ID, GPS, connection state) directly from the ThingPark Wireless Control-Plane API and merges them into the list above (matched by LRR ID).
CORS note: ThingPark's API is typically not reachable with direct browser fetches from a local/static file β€” you'll likely see a network error. If that happens, run the included thingpark_cors_proxy.py script (python thingpark_cors_proxy.py your-thingpark-hostname) and point this field at http://localhost:8787 instead of the ThingPark hostname.

Field mapping caveat: installation type (indoor/outdoor) is set from Actility's "Location mode" field β€” outdoor only when it's Onboard GNSS Position, indoor otherwise (Manual or unset). RF Region is probed from a few plausible field names (unconfirmed against a live response), and RSSI is left blank (ThingPark reports RSSI per uplink, not per gateway) β€” edit synced entries to correct these.

Large fleets: GPS location is only available on the per-station detail resource, so syncing fetches each gateway's detail individually (up to 16 at a time). For 1000+ gateways this can take real time β€” the sync button shows live progress, don't close the tab mid-sync. Redundancy-zone/overlap detection runs across every active gateway regardless of fleet size, so a very large fleet may take a little longer to redraw.
Console Connect IoT (SIM Status)
Cross-references each gateway's ICCID against Console Connect by PCCW Global to pull live SIM status (active/paused/etc.), then combines it with the gateway's own online/offline state into a diagnosis (see caveat below).
β€” or, no API access yet β€”
Auth confirmed, SIM lookup still a scaffold: login now uses the real Aeris IoT-A OAuth2 password-grant flow (POST /iot/api/auth/token β†’ Bearer token β†’ /iot/api/ecm/enterprises/{enterprise_id}/...), taken from PCCW Console Connect's official Enterprise Management API v26.1 spec. That document covers enterprise/subscription-package administration only β€” it has no endpoint to look up a single SIM's live status by ICCID, so the lookup path itself is still a best guess to be corrected once you have that spec (or its sibling doc). The CSV import below works today with no credentials β€” it reads the exact file Console Connect's own portal exports.

Diagnosis: gateway offline + SIM active β†’ Backhaul/Device Fault. Gateway offline + SIM inactive β†’ Connectivity/Billing Issue. Gateway online + usage over your threshold β†’ Traffic Anomaly Alert (off until you set a threshold above β€” a single reading has no trend to compare against).
Display
Model honesty: Outdoor uses Victorias field-calibrated path loss (nβ‰ˆ6.3, 1.5km); indoor uses nβ‰ˆ4.5, 500m ceiling from Browan field testing. Environment tags scale these. This is not Longley-Rice / COST-231 terrain-aware simulation.
Model: EIRP 16dBm AS923-3 · outdoor n=6.32 (1.5km), indoor n=4.5 (500m)
Coverage (calibrated estimate)

Excellent (β‰₯ -50 dBm)
Strong (-50 to -70 dBm)
Moderate (-70 to -90 dBm)
Weak (-90 to -110 dBm)
Edge (-110 to -130 dBm)
Inactive / down
Overlap zone (redundancy)
- - - Calibrated ceiling
- - - 7.2km textbook ref. (outdoor only)

Project Planning

Proposed sites for upcoming POCs β€” not yet deployed
Drop proposed sites to see modeled coverage before installing. Uses same calibrated model. Verify against real site survey before deployment.
Search & Filter
RF Region
Gap-Fill Suggestions
Geometric only β€” verify site feasibility.
Suggests locations that maximize new coverage over currently-uncovered area within the visible map region. Ignores terrain, buildings, power/backhaul, device density, and landowner access β€” treat each suggestion as a "somewhere near here needs a gateway" hint, not a final site.
Add Proposed Site
πŸ’‘ tip: right-click on the map to add a site at that spot
Proposed sites (0)
No proposed sites yet.
Data
Display
Indoor floor plan mode.
Upload a client-provided floor plan, georeference it against the map, place indoor gateways, and optionally trace walls to see wall-attenuated coverage. Everything here is a modeled estimate β€” not a substitute for a real indoor RF survey (Ekahau, iBwave, etc.).
1. Load Floor Plan
PNG or JPG. For PDFs, export a page as image first.
2. Set Scale
No floor plan loaded yet.
3. Place Gateways
4. (Optional) Trace Walls
Adds simple additive attenuation per wall crossed (ITU indoor model defaults). Not ray-traced β€” real signals also reflect, diffract, and leak.
Objects on plan (0)
Nothing placed yet.
Data
Planning mode · modeled estimate only · no live RSSI data
Modeled Coverage (planning)

Excellent (β‰₯ -50 dBm)
Strong (-50 to -70 dBm)
Moderate (-70 to -90 dBm)
Weak (-90 to -110 dBm)
Edge (-110 to -130 dBm)
Overlap zone
- - - Calibrated ceiling
- - - 7.2km textbook ref. (outdoor only)
No floor plan loaded.

Upload a floor plan image from the sidebar (PNG or JPG). Best results with plans that show a clear scale bar or a known-distance element (e.g., a labeled corridor) that you can use to calibrate.
Floor plan
Modeled estimate β€” indoor propagation uses distance-decay + wall-count. Not ray-traced. Materials assume ITU defaults. Real coverage depends on furnishings, floor materials, humidity, device orientation, and interference.
Scale: not calibrated

NOC Dashboard

Live gateway + SIM health, downtime, and alerting · recalculates each time you open this tab
Overview
Diagnosed Issues (Gateway + SIM cross-check)
Currently Down
By Site
Recent Status Changes
Auto-Refresh & Alerts
Auto-refresh polls ThingPark on an interval using the credentials saved in the Live Coverage sidebar (won't run without them). Alerts fire once per gateway transition into Inactive, and once per new Backhaul/Connectivity diagnosis — from a sync, a manual status edit, or a Console Connect SIM check.
Gateways that go inactive in the same sync (or the same manual edit) are grouped into one alert instead of one email each. The batch size is compared against your active gateway baseline (not your total fleet size) as a percentage -- e.g. if only ~50% of a 1493-gateway fleet is normally active (747), set the baseline to 747 so 75 gateways down (10%) triggers Level 1 and 187 down (25%) triggers Level 2, instead of diluting against the full 1493. Leave the baseline at 0 or blank to fall back to total fleet size. Click "Use current active count" to set it from what's currently synced in Live Coverage. Below the Level 1 threshold, it goes to Email 1 as a normal alert. At or above Level 1, it's a "minor outage" alert. At or above Level 2, it's escalated further to a "mass outage" alert (still routed per the Email 1/Email 2 rules above).
Template variables: in your EmailJS email template, use placeholders {{to_email}}, {{subject}}, {{message}}, and {{time}} -- this tool fills them in on every alert. For CC, this tool also sends a {{cc_email}} variable (blank if you leave the CC field empty) -- open your template's Settings tab (not Content) and set the Cc field to {{cc_email}} so it picks it up. Free EmailJS accounts cap at 200 emails/month. Gateway+SIM diagnosis alerts (Backhaul/Billing/Traffic) always go to Email 1 -- the escalation tier only applies to "N gateways went inactive" events.
CORS note: some webhook providers block direct browser POSTs. If the test alert fails, route it through a small server-side proxy (same idea as the ThingPark CORS proxy referenced in the Live tab). Email alerts go through EmailJS's own API and aren't affected by this.
Shift Handoff Backup
All data here lives in this browser's local storage only. Export a full backup to hand off to another NOC operator or machine; CSV export (per tab) is still available in each tab's Data section for spreadsheet use.