Skip to content

Gridone: The Backbone of Scalable Building Automation

Buildings are full of untapped automation potential. Gridone is the open platform that connects your software to any building equipment — regardless of protocol, vendor, or model.


Why Gridone?

Every building is different. Every equipment in it comes with its own protocol, its own SDK, its own quirks. Teams end up writing the same integration glue over and over, project after project.

The three problems Gridone solves:

Proprietary everything — every vendor ships a different SDK, API, or communication style. You spend more time reading datasheets than building applications.

Protocol fragmentation — BACnet, Modbus, MQTT, HTTP... each requires a completely different integration stack.

No common data model — raw device values have no standard shape, making it impossible to build applications that work across devices.

Gridone is a platform layer. It abstracts devices behind a unified API using YAML-based drivers — you describe the device once, and Gridone handles communication. Build your building application on top, not around vendor lock-in.


Introducing: Devices drivers

YAML-based, reusable device drivers.

Let's solve the integration problem with building hardware all at once.

A Gridone driver is a YAML file that declares a device's attributes and how to read or write them — in its native protocol. That's where proprietary specifics live, and nowhere else. Declare once, reuse across buildings, share with the community.

id: agrid_thermostat
transport: http

device_config:
  - name: ip

attributes:
  - name: temperature
    data_type: float
    read: "GET ${ip}/api/v1/status"
    json_pointer: /temperature

  - name: setpoint
    data_type: float
    read: "GET ${ip}/api/v1/status"
    json_pointer: /setpoint
    write:
      method: POST
      path: "${ip}/api/v1/setpoint"
      body:
        value: ${value}

  - name: enabled
    data_type: bool
    read: "GET ${ip}/api/v1/status"
    json_pointer: /enabled
    write:
      method: POST
      path: "${ip}/api/v1/enabled"
      body:
        value: ${value}
id: agrid_thermostat
transport: mqtt

device_config:
  - name: device_id

attributes:
  - name: temperature
    data_type: float
    read:
      topic: agrid/${device_id}/snapshot
      request:
        topic: agrid/${device_id}/get/snapshot
        message:
          input: request
    json_pointer: /temperature

  - name: setpoint
    data_type: float
    read:
      topic: agrid/${device_id}/snapshot
      request:
        topic: agrid/${device_id}/get/snapshot
        message:
          input: request
    write:
      topic: agrid/${device_id}/set/setpoint
      request:
        topic: agrid/${device_id}/set/setpoint
        message:
          value: ${value}
    json_pointer: /setpoint

  - name: enabled
    data_type: bool
    read:
      topic: agrid/${device_id}/snapshot
      request:
        topic: agrid/${device_id}/get/snapshot
        message:
          input: request
    write:
      topic: agrid/${device_id}/set/enabled
      request:
        topic: agrid/${device_id}/set/enabled
        message:
          value: ${value}
    json_pointer: /enabled
id: agrid_thermostat
transport: modbus-tcp

device_config:
  - name: device_id

attributes:
  - name: temperature
    data_type: float
    read: IR0:2
    byte_convert: "float32 big_endian"

  - name: setpoint
    data_type: float
    read_write: HR0:2
    byte_convert: "float32 big_endian"

  - name: enabled
    data_type: bool
    read_write: C0

What you get

YAML-based, reusable device drivers — one file per device model, shared across buildings and protocols.

Automatic time-series recording — every reading stored automatically. Query, aggregate, and export historical data with no extra setup.

REST API for every capability — control devices, query data, manage configuration. All over a documented HTTP API.

Self-hosted and Open source — deploy anywhere. No vendor lock-in, full control over your infrastructure and data.


Get started

git clone https://github.com/Agrid-Dev/gridone
cd gridone
uv sync
uv run fastapi dev apps/api_server/main.py