Appearance
Device connectivity
Autoconnecto accepts telemetry through native device transports and tenant integration webhooks. Every path normalizes into the same telemetry pipeline (dashboards, alarms, retention).
In the web app
| Task | Where |
|---|---|
| Copy token, HTTP/MQTT/WS examples | Devices → device → Check connectivity |
| LoRa DevEUI | Same modal → LoRa / webhook tab (or optional field on Create device) |
| Webhook URLs + secret | Tenant Settings → LoRa & integration webhooks |
On create device, integration.external_id is set automatically to the device ID (for generic webhooks). LoRa networks still need DevEUI because they send hardware id, not your access token.
Native device transports
HTTP
http
POST https://api.autoconnecto.in/api/v1/{deviceToken}/telemetry
Content-Type: application/json
{"temperature": 24.5, "humidity": 61}- CBOR:
Content-Type: application/cborwith the same object shape. - Batch:
POST .../telemetry/batchwith{ "items": [ { "telemetry": {...}, "ts": optional } ] }(max 100 items).
SDK: TelemetryBatch_http in autoconnecto-sdk.
MQTT
Topics (token in path):
devices/{deviceToken}/telemetryv1/devices/{deviceToken}/telemetry(ThingsBoard-style)
MQTT username = device access token.
SDK: BasicTelemetry_mqtt, SwitchControl_mqtt, etc.
WebSocket (device protocol)
Not the dashboard Socket.IO client. Connect to the device WebSocket port shown in Check connectivity, then:
{"type":"auth","deviceToken":"..."}{"type":"telemetry","data":{"temperature":24.5}}
Gateway devices
- Create a device with Mark as Gateway Device.
- Create child devices with Parent gateway set.
- Publish with the gateway token and body:
json
{
"childDeviceId": "child-device-uuid",
"telemetry": { "temperature": 24.5 }
}SDK: GatewayRelay_http. See backend GATEWAY_DEVICES.md for rules (one parent level, child must exist).
Integration webhooks
Auth: X-Webhook-Secret or Authorization: Bearer {secret}.
Generate per-tenant secret in Tenant Settings. Optional global env INTEGRATION_WEBHOOK_SECRET for ops.
| Adapter | Endpoint |
|---|---|
| Generic | POST /api/v1/integrations/generic/telemetry?tenantId={uuid} |
| ChirpStack | POST /api/v1/integrations/chirpstack/telemetry?tenantId={uuid} |
| TTN v3 | POST /api/v1/integrations/ttn/telemetry?tenantId={uuid} |
Generic webhook
Identify the device with token or device id:
json
{
"deviceToken": "access-token",
"temperature": 22.5,
"humidity": 60
}json
{
"externalDeviceId": "device-uuid",
"telemetry": { "temperature": 22.5 }
}Reserved top-level keys (not counted as telemetry): deviceToken, externalDeviceId, tenantId, childDeviceId, ts, timestamp.
Gateway relay on generic webhook: include childDeviceId with the gateway token or mapped gateway id.
LoRaWAN
Map DevEUI on the Autoconnecto device (integration.lorawan.dev_eui). ChirpStack and TTN adapters read their native uplink JSON (deviceInfo.devEui, end_device_ids.dev_eui).
Script samples: SDK examples/integrations/.
Catalog
http
GET /api/v1/connectivity/catalogReturns transport metadata and endpoint templates.
SDK & examples
- Device SDK (ESP32)
- SDK repo: CONNECTIVITY.md
Operations
- Run migration
0013_tenant_integration_secrets.sqlbefore using tenant webhook secrets. - Set
PUBLIC_API_BASE_URLon the API host so generated webhook URLs match your environment.
