Gateways
A gateway is an IoT controller the Adapter talks to; every device belongs to one gateway. The page opens with four counters — total gateways, online, devices onboarded, offline gateways — plus Refresh all and Add Gateway.
Gateway card (one per registered controller)
-
Name, host:port and online/offline badge.
-
Auth headers in use (e.g. X-API-KEY, Authorization).
-
Health line: healthy/offline, failure count, last check time, and the exact error when offline (e.g. HTTP 402 trial ended, connection timeout).
-
Device mix bar (lock, Wi-Fi, camera, sensor, other) and total device count.
-
Actions: View devices, Edit (pencil), and a menu with Discover devices, Ping gateway, Run diagnostic, Delete gateway.
Right-hand panels: Fleet Health (% of gateways online), Device Mix (counts by device type) and Recent Activity (latest events such as webhook.delivered, humidity.reading_set, alert.device_offline.email_sent).
Add / edit gateway
The connection is tested before saving (Test & Save). Credentials are encrypted with AES-256-GCM. Fields depend on the gateway type:
| Gateway type | Connection fields | Credentials |
|---|---|---|
| UniFi / generic | Host/IP, port (default 443), base path (for slug-based multi-tenant gateways like ZenPhantom) | Any number of auth headers (name + value) |
| igloohome (cloud) | igloohome cloud API | Client ID, client secret, optional webhook signing public key (RSA-2048), webhook verification mode: off / observe / enforce |
| pod-controller (MQTT) | Broker host (default mqtt.zenspace.io, port 1883) | Broker username and password — write-only; engine reconnects on next reconcile (~10 min) |
Common optional fields: Site/Zone, Organization ID, Skip TLS certificate verification (for self-signed certs), and per-gateway offline alerts — alert recipients, reminder repeat (hours), max reminders and offline threshold (minutes). Blank alert fields inherit the global values from System → Offline alerts.