How It WorksAssetsBenefitsPartnersFAQPricingDevelopersLoginStart Free
Developers

Connect Your Devices to FYXO

Two ways to get your field device data into FYXO: deploy our Gateway Driver on-site to poll devices directly, or use our REST API to read data from devices already connected to your account.

Gateway Protocols7
API Endpoints8
AuthOAuth 2.0
Rate Limit60 req/min
Connectivity Layer Architecture

FYXO's connectivity layer abstracts away protocol complexity. Any field device — regardless of manufacturer or protocol — is normalised into a canonical asset model that feeds into AI-powered optimisation and bidirectional control.

Field DevicesLayer 1

Physical assets on-site — any device with a supported industrial protocol.

Power MetersSolar InvertersBatteriesEV ChargersHeat MetersCompressors
🔌Protocol AdaptersLayer 2

FYXO Gateway translates each protocol into a unified reading format — one adapter per protocol, all running in parallel.

Modbus TCP/RTUSunSpec (IEEE 1547)DLMS/COSEMDL/T645M-BusMQTTOCPP 1.6/2.0
🔄Normalisation LayerLayer 3

Raw register values are normalised into standard fields (power_kw, voltage_v, soc_percent, etc.) — the "Stripe for Energy Devices" abstraction.

Canonical Asset ModelUnit ConversionQuality FlagsTimestamp Alignment
☁️FYXO CloudLayer 4

Authenticated ingestion via Bearer token. Auto-registers new devices, stores telemetry, and makes data available instantly in the Portal.

Telemetry IngestAsset RegistryTime-Series StorageReal-Time Dashboard
🧠AI OptimisationLayer 5

Claude AI analyses prices, device state, and user preferences to generate optimal dispatch schedules — shifting load to the cheapest hours.

Price Signal EngineDispatch SchedulerLoad ForecastingSavings Calculator
🎯Command & ControlLayer 6

Bidirectional: cloud sends commands back through the gateway to devices. Every command passes through safety validation, drift detection, and conflict locks before execution.

Command DispatchAcknowledgement LoopSafety SandboxUser Consent Layer
Canonical Asset Model — Unified Data Schema

Regardless of the underlying protocol, every device reading is normalised into standard fields. This is the core abstraction — your application code never needs to know whether data came from a Modbus register, a DLMS OBIS code, or an M-Bus VIF.

FieldTypeDescriptionProtocol Sources
power_kwfloatActive power in kilowattsModbus, SunSpec, DLMS, DL/T645, MQTT
voltage_vfloatLine voltage in voltsModbus, DLMS, DL/T645
current_afloatLine current in amperesModbus, DLMS, DL/T645
energy_kwhfloatCumulative energy in kWhAll protocols
soc_percentfloatState of charge (batteries)Modbus, SunSpec
temperature_cfloatDevice temperature in °CModbus, M-Bus, SunSpec
statusenumonline | offline | fault | standbyAll protocols
fault_codeuint16Manufacturer fault/alarm codeModbus, SunSpec
frequency_hzfloatGrid frequency in HzModbus, SunSpec, DLMS
power_factorfloatPower factor (0–1)Modbus, DLMS, DL/T645
flow_ratefloatVolume flow (L/h or m³/h)M-Bus
pressure_barfloatDischarge pressure in barModbus (compressors)
// Every device produces this shape — protocol details are abstracted away
{
  "deviceId": "meter-sdm630",
  "protocol": "modbus_tcp",        // or "dlms", "dlt645", "mbus", "sunspec"
  "deviceType": "meter",
  "name": "Main Power Meter",
  "data": {
    "power_kw": 8.42,
    "voltage_v": 231.4,
    "current_a": 12.1,
    "energy_kwh": 14523.7,
    "power_factor": 0.98,
    "frequency_hz": 50.01,
    "status": "online"
  },
  "readAt": "2026-06-24T14:30:00Z"
}
Data Flow — Telemetry, Control & Safety

The connectivity layer is bidirectional. Reading telemetry is only half the story — FYXO also dispatches optimisation commands back to devices, with a full safety chain that prevents AI from taking harmful actions.

↑ Device → CloudTelemetry Ingest

Gateway polls devices at configurable intervals (default 5–15s), batches readings, and POST to /api/gateway/telemetry with Bearer fgw_ token. Auto-registers unknown devices.

At-least-once delivery
Automatic retry on network failure
Per-device error isolation
↓ Cloud → DeviceCommand Dispatch

Pending commands are returned in telemetry responses. Gateway maps command actions (set_power, set_soc, charge) to protocol-specific register writes.

Command deduplication via acknowledgement
Protocol-aware write routing (TCP vs RTU)
Unknown action rejection
↑ Device → CloudCommand Acknowledgement

After execution, gateway reports success/failure back to cloud. Prevents re-execution of completed commands on subsequent telemetry cycles.

Ack on success and failure
Command lifecycle tracking
Timeout-based fallback
🛡️ Enforced at CloudSafety & Policy

Every write command passes through multiple safety layers before reaching the device. AI decisions cannot override safety validation.

Geofence — block sanctioned countries
Drift detection — >50% power change in 30min blocked
Schedule bomb protection — max 5/day/asset
Conflict lock — one agent per asset at a time
User email notification on every write
Platform Requirements
Runtime
Node.js 18+
Linux, Windows, macOS, Docker
Hardware
No custom hardware
Raspberry Pi, industrial PCs, existing gateways
Network
HTTPS outbound
No inbound ports, no VPN required
Security
Bearer token (fgw_)
Per-gateway token, TLS encrypted