# Dashboard for Domotz

**URL:** <https://community.grafana.com/t/dashboard-for-domotz/162980>\
**Category:** Grafana\
**Tags:** api\
**Created:** [May 21, 2026, 3:16am UTC](https://community.grafana.com/t/dashboard-for-domotz/162980 "2026-05-21T03:16:44Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![itf8aba](https://avatars.discourse-cdn.com/v4/letter/i/e0b2c6/32.png) [@itf8aba](https://community.grafana.com/u/itf8aba)\
**Post date:** [May 21, 2026, 3:16am UTC](https://community.grafana.com/t/dashboard-for-domotz/162980/1 "2026-05-21T03:16:44Z")

</div>

Hi Grafana community, I would be interested to know if anyone has had any luck getting a Grafana and Domotz dashboard setup to monitor Network devices, like a NOC dashboard, I am able to get everything going but would like to see how others have created it, I have used Grafana Infinity plugin with Domotz API, also just struggling with colour assignments when devices go down. Interested in anyones input. Thanks for reading.

---

<div class="post-metadata">

**Author:** ![yosiasz](https://sea2.discourse-cdn.com/grafana/user_avatar/community.grafana.com/yosiasz/32/45847_2.png) [@yosiasz](https://community.grafana.com/u/yosiasz)\
**Post date:** [May 21, 2026, 10:27am UTC](https://community.grafana.com/t/dashboard-for-domotz/162980/2 "2026-05-21T10:27:09Z")

</div>

Welcome to forum @itf8aba

Your approach with infinity api is cleanest imo. What does the data look like from rest api (please share obfuscated but with json structure intact)

And what issue are you running to with thr color and is that the only issue

---

<div class="post-metadata">

**Author:** ![infofcc3](https://sea2.discourse-cdn.com/grafana/user_avatar/community.grafana.com/infofcc3/32/51248_2.png) [@infofcc3](https://community.grafana.com/u/infofcc3)\
**Post date:** [May 27, 2026, 1:05pm UTC](https://community.grafana.com/t/dashboard-for-domotz/162980/3 "2026-05-27T13:05:54Z")

</div>

The color assignment issue with Infinity plugin is that to color string values like online or offline coming from the Domotz API

 ![Screenshot (236)](https://us1.discourse-cdn.com/grafana/original/3X/1/1/112e4516132dfec949f2900eb3165c670d061d55.png)  
I have have about 31 devices showing online

 ![Screenshot (227)](https://us1.discourse-cdn.com/grafana/original/3X/c/8/c874da89c9758beaf640f6cb0acad66ace9bcf22.png)

like this is the table view of all the devices

 ![Screenshot (231)](https://us1.discourse-cdn.com/grafana/original/3X/1/c/1c4e643b26d94dc8a3f83bb03d3f7a80dc75cbd1.png)

The solution is to use Value mappings  
In your panel go to Value mappings and add  
Value online → color Green  
Value offline → color Red  
In Field overrides select the status field and add these two override properties  
Color scheme → From thresholds (by value)  
Cell options → Cell type → Colored background  
I have disconnected some devices to show you the colored dashboard

 ![Screenshot (235)](https://us1.discourse-cdn.com/grafana/original/3X/9/5/955afe61878ac06c90ea86513b0902d6939ef21b.png)

Enable Apply to entire row toggle so the entire row turns red when a device goes down This gives you a clean NOC dashboard where every row turns green when the device is online and red when it goes offline  
If you want a historical view of when devices went up and down add a State timeline panel which shows one horizontal bar per device with green and red segments over time

---

<div class="post-metadata">

**Author:** ![itf8aba](https://avatars.discourse-cdn.com/v4/letter/i/e0b2c6/32.png) [@itf8aba](https://community.grafana.com/u/itf8aba)\
**Post date:** [June 9, 2026, 11:37pm UTC](https://community.grafana.com/t/dashboard-for-domotz/162980/4 "2026-06-09T23:37:24Z")

</div>

Hey Yosiasz,

Thank you for the reply, much appreciated.

That’s basically the data structure I’m working with. The data itself appears correct and the statuses are accurate.

What I’m battling with is getting Grafana display this as a Donut display

I am able to do it perfectly with a table but I want to group my devices into donut charts like below and display the Green - Online and Red - Down

Is there a way to do this?

 ![image](https://us1.discourse-cdn.com/grafana/original/3X/c/c/cceef2a14ea43e2e47a9012ef6a9f39ad81a0dd0.png)

 ![image](https://us1.discourse-cdn.com/grafana/original/3X/2/a/2ac8b32cf098997bee31830a436aaf67cf3835b9.png)

---

<div class="post-metadata">

**Author:** ![itf8aba](https://avatars.discourse-cdn.com/v4/letter/i/e0b2c6/32.png) [@itf8aba](https://community.grafana.com/u/itf8aba)\
**Post date:** [June 9, 2026, 11:49pm UTC](https://community.grafana.com/t/dashboard-for-domotz/162980/5 "2026-06-09T23:49:46Z")

</div>

This is what I have and the reason the one slice is green is that I have the Aruba controller and the main AP named identical so it returns 2

 ![image](https://us1.discourse-cdn.com/grafana/original/3X/9/c/9c1fce5ed85a98dbb020cbb63151ddd3bd161b30.png)

---

<div class="post-metadata">

**Author:** ![yosiasz](https://sea2.discourse-cdn.com/grafana/user_avatar/community.grafana.com/yosiasz/32/45847_2.png) [@yosiasz](https://community.grafana.com/u/yosiasz)\
**Post date:** [June 10, 2026, 3:11am UTC](https://community.grafana.com/t/dashboard-for-domotz/162980/6 "2026-06-10T03:11:43Z")

</div>

> [@yosiasz](#):
>
> What does the data look like from rest api (please share obfuscated but with json struc/ture intact)

Still waiting on the above to help ushelp you answer your question. But using mock data with infinity JQ query this might work?

 ![image](https://us1.discourse-cdn.com/grafana/original/3X/7/d/7d0cb22e7ba45e45515e25d6b222d790c5724f2f.png)

---

<div class="post-metadata">

**Author:** ![itf8aba](https://avatars.discourse-cdn.com/v4/letter/i/e0b2c6/32.png) [@itf8aba](https://community.grafana.com/u/itf8aba)\
**Post date:** [June 10, 2026, 10:35pm UTC](https://community.grafana.com/t/dashboard-for-domotz/162980/7 "2026-06-10T22:35:14Z")

</div>

Hey Yosia

Sorry man, not sure why I didn’t answer this question, thank you for your response and my data looks like this, is this what you need?

{  
“kind”: “Panel”,  
“spec”: {  
“id”: 6,  
“title”: “Access Points”,  
“description”: “”,  
“links”: ,  
“data”: {  
“kind”: “QueryGroup”,  
“spec”: {  
“queries”: [  
{  
“kind”: “PanelQuery”,  
“spec”: {  
“query”: {  
“kind”: “DataQuery”,  
“version”: “v0”,  
“group”: “yesoreyeram-infinity-datasource”,  
“datasource”: {  
“name”: “grafanacloud-infinity”  
},  
“spec”: {  
“columns”: ,  
“filters”: ,  
“format”: “table”,  
“global\_query\_id”: “”,  
“parser”: “backend”,  
“root\_selector”: “”,  
“source”: “url”,  
“type”: “json”,  
“uql”: “parse-json”,  
“url”: “[https://api-eu-west-1-cell-1.domotz.com/public-api/v1/agent/303901/device](https://api-eu-west-1-cell-1.domotz.com/public-api/v1/agent/303901/device)”,  
“url\_options”: {  
“data”: “”,  
“headers”: [  
{  
“key”: “”,  
“value”: “”  
}  
],  
“method”: “GET”  
}  
}  
},  
“refId”: “A”,  
“hidden”: false  
}  
}  
],  
“transformations”: [  
{  
“kind”: “Transformation”,  
“group”: “filterFieldsByName”,  
“spec”: {  
“options”: {  
“byVariable”: false,  
“include”: {  
“names”: [  
“display\_name”,  
“importance”,  
“status”,  
“type”,  
“vendor”  
]  
}  
}  
}  
},  
{  
“kind”: “Transformation”,  
“group”: “groupBy”,  
“spec”: {  
“options”: {  
“fields”: {  
“display\_name”: {  
“aggregations”: ,  
“operation”: “groupby”  
},  
“name”: {  
“aggregations”: ,  
“operation”: “aggregate”  
},  
“status”: {  
“aggregations”: [  
“count”  
],  
“operation”: “groupby”  
},  
“type”: {  
“aggregations”: ,  
“operation”: “groupby”  
},  
“vendor”: {  
“aggregations”:   
}  
}  
}  
}  
},  
{  
“kind”: “Transformation”,  
“group”: “filterByValue”,  
“spec”: {  
“options”: {  
“filters”: [  
{  
“config”: {  
“id”: “substring”,  
“options”: {  
“value”: “Wi-Fi”  
}  
},  
“fieldName”: “type”  
}  
],  
“type”: “include”,  
“match”: “any”  
}  
}  
}  
],  
“queryOptions”: {}  
}  
},  
“vizConfig”: {  
“kind”: “VizConfig”,  
“group”: “piechart”,  
“version”: “13.1.0-27040157436”,  
“spec”: {  
“options”: {  
“reduceOptions”: {  
“values”: true,  
“calcs”: ,  
“fields”: “/^status \(count\)$/”  
},  
“pieType”: “donut”,  
“sort”: “desc”,  
“tooltip”: {  
“mode”: “single”,  
“sort”: “none”,  
“hideZeros”: false  
},  
“legend”: {  
“showLegend”: false,  
“displayMode”: “list”,  
“placement”: “bottom”  
},  
“displayLabels”:   
},  
“fieldConfig”: {  
“defaults”: {  
“custom”: {  
“hideFrom”: {  
“tooltip”: false,  
“viz”: false,  
“legend”: false  
}  
},  
“color”: {  
“mode”: “palette-classic”,  
“fixedColor”: “#73BF69”  
},  
“mappings”: [  
{  
“type”: “value”,  
“options”: {  
“Online”: {  
“color”: “green”,  
“index”: 0  
},  
“Down”: {  
“color”: “red”,  
“index”: 1  
}  
}  
}  
]  
},  
“overrides”: [  
{  
“matcher”: {  
“id”: “byName”,  
“options”: “status (count)”,  
“scope”: “series”  
},  
“properties”: [  
{  
“id”: “mappings”,  
“value”: [  
{  
“type”: “regex”,  
“options”: {  
“pattern”: “\._ONLINE_\”,  
“result”: {  
“color”: “green”,  
“index”: 1  
}

---

<div class="post-metadata">

**Author:** ![yosiasz](https://sea2.discourse-cdn.com/grafana/user_avatar/community.grafana.com/yosiasz/32/45847_2.png) [@yosiasz](https://community.grafana.com/u/yosiasz)\
**Post date:** [June 10, 2026, 10:44pm UTC](https://community.grafana.com/t/dashboard-for-domotz/162980/8 "2026-06-10T22:44:13Z")

</div>

> [@yosiasz](#):
>
> What does the **data look like from rest api** (please share obfuscated but with json structure intact)

😆☕

So what I Was asking as you might have missed in my comment is for you to provide sample json data returned from your domotz api

---

<div class="post-metadata">

**Author:** ![itf8aba](https://avatars.discourse-cdn.com/v4/letter/i/e0b2c6/32.png) [@itf8aba](https://community.grafana.com/u/itf8aba)\
**Post date:** [July 2, 2026, 12:04am UTC](https://community.grafana.com/t/dashboard-for-domotz/162980/9 "2026-07-02T00:04:57Z")

</div>

Below the image is the Data for the Switches panel, is this what you needed?

All I want to do is display status = Down devices in the donut chart in a different colour.

As you can see everything is green

Devices offline table:

TPLSCAPC10 = SCADA Chart

TPLMSBUPS01 = UPS Chart

TPLITMSW02 = Network Switches Chart

TPLCTNAP01 = Access Points Chart\

 ![image](https://us1.discourse-cdn.com/grafana/original/3X/9/d/9d672d181485c926d6b4ec19818ae6d06f168986.png)

“state”: “Done”,

“series”: [

```
{

  "refId": "A",

  "fields": \[

    {

      "name": "display_name",

      "type": "string",

      "config": {

        "custom": {

          "hideFrom": {

            "tooltip": false,

            "viz": false,

            "legend": false

          }

        },

        "color": {

          "mode": "palette-classic",

          "fixedColor": "green"

        },

        "mappings": \[\]

      },

      "values": \[

        "TPLADMSW05",

        "TPLBNGSW02",

        "TPLBNGSW01",

        "TPLRENSW01",

        "TPLMSBSW01",

        "TPLHASSW01",

        "TPLCHLSW03",

        "TPLENGSW01",

        "TPLCHLSW02",

        "TPLADMSW01",

        "TPLBYDSW01",

        "TPLOUTSW01",

        "TPLMSBSW03",

        "TPLBSBSW02",

        "TPLCORSW02",

        "TPLSVRSW01",

        "TPLADMSW04",

        "TPLMCCSW01",

        "TPLSECSW02",

        "TPLFRZSW03",

        "TPLBNGSW03",

        "TPLCHLSW05",

        "TPLMEDSW02",

        "TPLGRDSW02",

        "TPLCASSW03",

        "TPLBSBSW03",

        "TPLMSBSW04",

        "TPLSPKSW02",

        "TPLSBXSW02",

        "TPLCSTSW01",

        "TPLDEMSW01",

        "TPLTFDSW01",

        "TPLSTGSW01",

        "TPLSTOSW01",

        "TPLITMSW01",

        "TPLITMSW02"

      \],

      "state": {

        "scopedVars": {

          "\__dataContext": "Filtered out in JSON serialization"

        },

        "displayName": null,

        "seriesIndex": 0

      }

    },

    {

      "name": "ip_addresses",

      "type": "string",

      "config": {

        "custom": {}

      },

      "values": \[

        "\[\\"10.10.50.7\\"\]",

        "\[\\"10.10.50.8\\"\]",

        "\[\\"10.10.50.9\\"\]",

        "\[\\"10.10.50.10\\"\]",

        "\[\\"10.10.50.11\\"\]",

        "\[\\"10.10.50.12\\"\]",

        "\[\\"10.10.50.14\\"\]",

        "\[\\"10.10.50.15\\"\]",

        "\[\\"10.10.50.16\\"\]",

        "\[\\"10.10.50.18\\"\]",

        "\[\\"10.10.50.19\\"\]",

        "\[\\"10.10.50.21\\"\]",

        "\[\\"10.10.50.27\\"\]",

        "\[\\"10.10.50.28\\"\]",

        "\[\\"10.10.50.50\\"\]",

        "\[\\"10.10.50.51\\"\]",

        "\[\\"10.10.50.52\\"\]",

        "\[\\"10.10.50.53\\"\]",

        "\[\\"10.10.50.54\\"\]",

        "\[\\"10.10.50.55\\"\]",

        "\[\\"10.10.50.57\\"\]",

        "\[\\"10.10.50.58\\"\]",

        "\[\\"10.10.50.59\\"\]",

        "\[\\"10.10.50.60\\"\]",

        "\[\\"10.10.50.61\\"\]",

        "\[\\"10.10.50.62\\"\]",

        "\[\\"10.10.50.63\\"\]",

        "\[\\"10.10.50.65\\"\]",

        "\[\\"10.10.50.66\\"\]",

        "\[\\"10.10.50.67\\"\]",

        "\[\\"10.10.50.68\\"\]",

        "\[\\"10.10.50.70\\"\]",

        "\[\\"10.10.50.100\\"\]",

        "\[\\"10.10.50.13\\"\]",

        "\[\\"10.10.50.17\\"\]",

        "\[\\"10.10.50.20\\"\]"

      \],

      "state": {

        "scopedVars": {

          "\__dataContext": "Filtered out in JSON serialization"

        },

        "displayName": null,

        "seriesIndex": 1

      }

    },

    {

      "name": "type",

      "type": "string",

      "config": {

        "custom": {}

      },

      "values": \[

        "{\\"detected_id\\":174,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":1101,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":1101,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":1101,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":1101,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":1101,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":56,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":1101,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":1101,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":47,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":47,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":47,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":47,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":47,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":47,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":47,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":47,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":47,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":314,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":174,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":6,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}",

        "{\\"detected_id\\":174,\\"id\\":81,\\"label\\":\\"Switch\\"}",

        "{\\"detected_id\\":0,\\"id\\":28,\\"label\\":\\"PoE Switch\\"}"

      \],

      "state": {

        "scopedVars": {

          "\__dataContext": "Filtered out in JSON serialization"

        },

        "displayName": null,

        "seriesIndex": 2

      }

    },

    {

      "name": "vendor",

      "type": "string",

      "config": {

        "custom": {}

      },

      "values": \[

        "Hewlett Packard Enterprise",

        "Hewlett Packard Enterprise",

        "HPE",

        "Hewlett Packard Enterprise",

        "Hewlett Packard Enterprise",

        "Aruba Networks",

        "HPE",

        "HPE",

        "HPE",

        "HPE",

        "Aruba Networks",

        "Aruba Networks",

        "HPE",

        "Hewlett Packard Enterprise",

        "Aruba Networks",

        "Aruba Networks",

        "Aruba Networks",

        "Hewlett Packard Enterprise",

        "Aruba Networks",

        "Aruba Networks",

        "Hewlett Packard Enterprise",

        "HPE",

        "HPE",

        "HPE",

        "HPE",

        "Aruba Networks",

        "Aruba Networks",

        "HPE",

        "Aruba Networks",

        "Aruba Networks",

        "Aruba Networks",

        "HPE",

        "Netgear",

        "Unknown",

        "Hewlett Packard Enterprise",

        "Unknown"

      \],

      "state": {

        "scopedVars": {

          "\__dataContext": "Filtered out in JSON serialization"

        },

        "displayName": null,

        "seriesIndex": 3

      }

    },

    {

      "name": "display_name (count)",

      "values": \[

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1,

        1

      \],

      "type": "number",

      "config": {

        "custom": {}

      },

      "state": {

        "scopedVars": {

          "\__dataContext": "Filtered out in JSON serialization"

        },

        "displayName": null,

        "seriesIndex": 35,

        "range": {

          "min": 1,

          "max": 1,

          "delta": 0

        }

      }

    }

  \],

  "length": 36

}

```

],

“request”: {

```
"app": "dashboard",

"requestId": "SQR282",

"timezone": "browser",

"range": {

  "to": "2026-05-20T02:06:24.882Z",

  "from": "2026-05-20T02:01:24.882Z",

  "raw": {

    "from": "2026-05-20T02:01:24.882Z",

    "to": "2026-05-20T02:06:24.882Z"

  }

},

"interval": "2s",

"intervalMs": 2000,

"targets": \[

  {

    "refId": "A",

    "hide": false,

    "datasource": {

      "uid": "grafanacloud-infinity",

      "type": "yesoreyeram-infinity-datasource"

    },

    "columns": \[\],

    "filters": \[\],

    "format": "table",

    "global_query_id": "",

    "parser": "backend",

    "root_selector": "",

    "source": "url",

    "type": "json",

    "uql": "parse-json",

    "url": "https://api-eu-west-1-cell-1.domotz.com/public-api/v1/agent/303901/device",

    "url_options": {

      "data": "",

      "headers": \[

        {

          "key": "X-API-KEY",

          "value": ""

        }

      \],

      "method": "GET"

    }

  }

\],

"maxDataPoints": 193,

"scopedVars": {

  "\__sceneObject": "Filtered out in JSON serialization",

  "\__interval": {

    "text": "2s",

    "value": "2s"

  },

  "\__interval_ms": {

    "text": "2000",

    "value": 2000

  }

},

"startTime": 1782950842844,

"rangeRaw": {

  "from": "2026-05-20T02:01:24.882Z",

  "to": "2026-05-20T02:06:24.882Z"

},

"dashboardUID": "ittc2st",

"panelId": 14,

"panelName": "Network Switches",

"panelPluginId": "piechart",

"dashboardTitle": "Domotz Dashboard",

"endTime": 1782950844327

```

},

“timings”: {

```
"dataProcessingTime": 0

```

},

“structureRev”: 1

}
