Open-source Building Management
Connect your software to any building equipment — regardless of protocol, vendor, or model. One platform, one API, every device.
Learn moreThe challenge
Every building is different. Every piece of equipment comes with its own protocol, its own quirks, and its own integration burden.
Each manufacturer has its own proprietary way of communicating. Connecting a new device means learning yet another protocol from scratch.
BACnet, Modbus, MQTT, HTTP, KNX — each requires a completely different integration stack. The glue code keeps growing, project after project.
Raw device values have no standard shape. Building applications that work across equipment brands and models is a constant uphill battle.
Gridone is built for extensibility. It is device, protocol, and vendor-agnostic. Build any application on top of it, deploy it wherever you want.
Extensibility — Devices
Tired of writing custom integration code for every new device you encounter? That's exactly what makes building management software impossible to scale.
With Gridone, all vendor-specific logic is encapsulated in a simple, portable YAML file: a driver. Write once, reuse across every building. Share with the community.
Public driver library coming soon.
id: thermocktat_http transport: http type: thermostat device_config: - name: ip attributes: - name: temperature data_type: float read: "GET ${ip}/v1" json_pointer: /ambient_temperature - name: temperature_setpoint data_type: float read: "GET ${ip}/v1" json_pointer: /temperature_setpoint write: method: "POST" path: "${ip}/v1/temperature_setpoint" body: value: ${value} - name: onoff_state data_type: bool read: "GET ${ip}/v1" json_pointer: /enabled write: method: "POST" path: "${ip}/v1/enabled" body: value: ${value}
id: thermocktat_modbus transport: modbus-tcp type: thermostat device_config: - name: device_id attributes: - name: temperature data_type: float read: IR0:2 byte_convert: "float32 big_endian" - name: temperature_setpoint data_type: float read_write: HR0:2 byte_convert: "float32 big_endian" - name: onoff_state data_type: bool read_write: C0 - name: mode data_type: str read_write: HR6 mapping: 1: heat 2: cool 3: fan 4: auto - name: fan_speed data_type: str read_write: HR8 mapping: 1: auto 2: low 3: medium 4: high
id: breeze_bc106_4d_thermostat transport: bacnet device_config: - name: device_instance attributes: - name: state data_type: bool read_write: BV1 - name: temperature data_type: float read: AI1 - name: temperature_setpoint data_type: float read: AV3 write: object_type: AV object_instance: 3 write_priority: 8 - name: mode data_type: int read_write: AV1 - name: fan_speed data_type: int read_write: AV2
id: thermocktat_mqtt transport: mqtt type: thermostat device_config: - name: device_id update_strategy: polling_interval: 60s discovery: topic: thermocktat/# field_getters: - name: device_id codecs: - json_pointer: /device_id attributes: - name: temperature data_type: float read: topic: thermocktat/${device_id}/snapshot request: topic: thermocktat/${device_id}/get/snapshot message: input: "hello" codecs: - json_pointer: /ambient_temperature - name: temperature_setpoint data_type: float read: topic: thermocktat/${device_id}/snapshot request: topic: thermocktat/${device_id}/get/snapshot message: input: hello write: topic: thermocktat/${device_id}/set/temperature_setpoint message: value: ${value} codecs: - json_pointer: /temperature_setpoint
id: thermocktat_knx transport: knx type: thermostat device_config: - name: ga_main - name: ga_middle attributes: - name: temperature data_type: float read: "${ga_main}/${ga_middle}/4" codecs: - knx_dpt: "9.001" - name: temperature_setpoint data_type: float read_write: "${ga_main}/${ga_middle}/1" codecs: - knx_dpt: "9.001" - name: onoff_state data_type: bool read_write: "${ga_main}/${ga_middle}/0" codecs: - knx_dpt: "1.001" - name: mode data_type: str read_write: "${ga_main}/${ga_middle}/5" codecs: - knx_dpt: "5.010" - mapping: {1: heat, 2: cool, 3: fan, 4: auto}
Extensibility — Applications
Gridone is API-first — a REST API today, MCP server coming soon. Focus on what's your core business. Rely on Gridone for scaling deployment across buildings.
What you get
One file per device model. No code required. Portable across buildings and shareable with the community.
Every reading stored automatically. Query, aggregate, and export historical data through the API.
Thermostat, heat pump, weather sensor — drivers declare a type, enabling consistent schemas and UI behavior across vendors.
Documented HTTP API for every capability. App-based extensibility lets you add custom features on top of the core.
Define automated workflows and rules that react to device data in real time. Coming soon.
Deploy anywhere. Full control over your infrastructure and data — no vendor lock-in, no cloud dependency.
Quick start
Learn more
Explore the documentation, check out the API reference, or jump straight into the code.