All topics
On this page
With Export entire account you download all data of your organisation in one ZIP file. It contains the settings, gateways, Modbus devices, registers, alarms, automations, dashboards, reports, customers and members, plus the readings within the retention period of 365 days. The export is free and uses open formats that software can read (CSV and JSON).
This page also describes how the files are structured. It is the overview of export formats that the European Data Act asks for when you switch to another provider.
Requesting an export
Open the settings
Open Settings and choose Data export.
Request the export
Click Request export. The Export entire account window opens.
Choose what goes in
Choose the File format (CSV for Excel or JSON), the detail of the Readings (every reading, per 15 minutes, per hour or per day) and the Period (everything within the retention period or your own dates). If you have customers, choose the entire account or one customer under Customers.
Start the export
Click Start export. The file is put together in the background. You get an email as soon as it is ready.
Download the file
The button in the email opens Data export in the portal. Click Download next to the export there.
| Rule | Value |
|---|---|
| Who | Owner and administrator of the organisation |
| How often | One export at a time and at most 5 per day |
| How long the file stays available | 30 days |
| Largest file | 50 MB. If the export gets larger, choose a shorter period or less detail |
| One customer | Only the gateways, Modbus devices, registers, alarms, dashboards, reports, tariffs and customer portal of that customer |
| Demo | Only the readings of the last 7 days |
Contents of the ZIP file
| Path | Contents |
|---|---|
manifest.json | Format and version of the export, the chosen options and every file with the number of rows, the size in bytes and a SHA-256 checksum |
README.txt | Short explanation in your language |
config/organization.json | Details of the organisation, branding with references to the logos, timezone, retention periods and notification settings |
config/members.json | Members with email address, name and role |
config/gateways.json | Gateways with their settings, such as RS485 baud rate, parity, stop bits and data bits |
config/modbus_devices.json | Modbus devices with slave id, IP address and port for Modbus TCP, and poll interval |
config/registers.json | Registers with address, function code, data type, byte order, scale, unit and write settings. Removed registers that still have readings are listed with "retired": true |
config/alert_rules.json, alerts.json, alert_entries.json | Alarm rules, alarm history with acknowledgements and the timeline per alarm |
config/automations.json, automation_executions.json | Automations and their executions |
config/commands.json | Log of control and write commands |
config/dashboards.json, shared_dashboards.json | Dashboards with their layout and the share links with settings and expiry |
config/reports.json, report_runs.json | Reports and the details of the generated reports |
config/customers.json, customer_portals.json, customer_members.json, customer_portal_hidden.json | Customers, customer portal settings and who belongs to which customer |
config/tariff_schedules.json, tariff_rates.json, tariff_windows.json, tariff_split_daily.json, energy_tariffs.json | Tariff schedules and kWh per rate per day |
config/webhooks.json, api_keys.json | Webhooks and API keys as metadata |
config/notification_preferences.json, gateway_alert_subscribers.json | Notification preferences of the members and who gets alarm email per gateway |
config/audit_log.json, activity_log.json, gateway_events.json | Audit log, activity log and events per gateway |
Other config/*.json | Gateway groups and tags, system overviews, own templates, synthetic variables and invitations |
timeseries/<serial>/<yyyy-mm>.csv or .json | Readings per gateway per month, in the timezone of the organisation |
Every file in config/ is a JSON array with one object per row. Ids are UUIDs and link the files. device_id refers to a gateway, modbus_dev_id to a Modbus device and register_id to a register.
Not in the export on purpose are secrets (tokens, API keys and their hash, passwords, the webhook secret and the values of custom headers, the codes of share links and invitations), internal data of the automatic monitoring and IP addresses in the audit log.
Readings as CSV
All CSV files are UTF-8 with a BOM, so Excel shows characters such as °C correctly. In Dutch and German a semicolon separates the columns and numbers use a decimal comma. In English a comma separates the columns and numbers use a dot. Times are local time of the organisation as YYYY-MM-DD HH:MM:SS. Values are converted with the scale factor of the register, as the portal shows them.
Every reading
One row per timestamp and one column per register. The column header is Modbus device / Register (unit), with [removed] for a removed register. manifest.json lists for every file which register is in which column. If a register has two readings at the same timestamp, the file holds the first.
Per 15 minutes, hour or day
One row per bucket per register with these columns.
| Column | Meaning |
|---|---|
| Start, End | Start and end of the bucket, local time |
| Modbus device, Register, Unit | Where the value comes from |
| Count | Number of readings in the bucket |
| Average, Minimum, Maximum | Over the readings in the bucket |
| First, Last | First and last reading in the bucket |
| Consumption | Counters only, see Consumption of counters |
| Counter reset | yes when the counter dropped in this bucket |
| Register ID | The id from config/registers.json |
Buckets of 15 minutes and an hour follow the clock. A day runs from midnight to midnight in the timezone of the organisation, so 23 or 25 hours when daylight saving time changes.
Readings as JSON
JSON files follow the format modbuscloud.readings, version 1. First the details of the export and the registers, then the values. Times in JSON are UTC in ISO 8601.
{
"format": "modbuscloud.readings",
"format_version": 1,
"generated_at": "2026-10-15T09:00:00.000Z",
"gateway": { "serial": "6008123409", "name": "Cabinet 1" },
"timezone": "Europe/Amsterdam",
"resolution": "day",
"from": "2026-09-30T22:00:00.000Z",
"to": "2026-10-15T09:00:00.000Z",
"truncated": false,
"row_limit": null,
"complete_from": null,
"values_scaled": true,
"registers": [
{ "id": "53e8429e-...", "name": "Energy import", "unit": "kWh", "modbus_device": "kWh meter 1",
"slave_id": 1, "address": 30001, "data_type": "uint32", "scale_factor": 0.1, "counter": true, "retired": false }
],
"buckets": [
{ "start": "2026-09-30T22:00:00.000Z", "end": "2026-10-01T22:00:00.000Z", "register_id": "53e8429e-...",
"count": 96, "avg": 1452.3, "min": 1447.1, "max": 1457.6, "first": 1447.1, "last": 1457.6, "delta": 10.5, "delta_reset": false }
]
}
| Field | Meaning |
|---|---|
resolution | raw, 15m, hour or day |
truncated, row_limit, complete_from | Only in Download readings per gateway. If the file was cut off, it is complete from complete_from |
values_scaled | Always true. Values are already multiplied by scale_factor |
registers[].counter | true for a counter, such as kWh or operating hours |
readings | With raw a list of { "ts", "register_id", "value" }, including duplicate readings at the same timestamp |
buckets | With 15m, hour and day a list of buckets, as in the example |
delta, delta_reset | Consumption in the bucket and whether the counter dropped. null for a register that is not a counter |
Consumption of counters
A register is a counter when it is set up or recognised as one, such as a kWh meter reading, a volume or operating hours. The consumption of a bucket is the last value of that bucket minus the last value of the previous bucket with readings. For the first bucket the last value from the 7 days before counts. If the value drops, because the counter was reset or the meter was replaced, the consumption of that bucket is empty and Counter reset is yes (delta_reset: true in JSON). The bar chart with consumption in a dashboard uses the same rule.
Readings of one gateway
Download readings in the menu of a gateway offers the same formats and the same detail. Such a file holds at most 500,000 readings. If there are more, you get the newest and the first line of the CSV (or complete_from in JSON) says from which moment the file is complete. See Download readings.
Updated on 15 October 2026
Still stuck?
Email or call us. Include the serial number of the gateway, so we can take a look straight away.
Go to support






