Skip to content

Getting Your Sensor Data from the API

Simon Smale edited this page Jan 12, 2026 · 2 revisions

A quick guide to getting your sensor data from the Duux API

What you need

To get the sensor data you will need to be able to sign into the API, this is done with the same credentials as this integration.

The API Swagger pages

Swagger is a tool used by developers to provide documentation for the endpoints that are available in their API. For us, it gives us an easier way to see and test the requests.

To access the Swagger page, go to https://v5.api.cloudgarden.nl/swagger/index.html.

The endpoints are split into sections and have the request HTTP method on the right. GET is usually to Get data, POST is to create, PUT and PATCH are for updates and DELETE deletes. POST can also be used for updates.

Clicking on the bar expands it and shows more details. To interact with it, you will need to click the try it out button in the top right. image image

The text box becomes editable and the blue Execute button sends the request. The response will be shown below that.

image The image above shows an error being returned.

Logging in

To login and allow Swagger to make requests as you, you will need to find the /auth/v4/login GET endpoint in the list, as shown below. image

In the text box, replace the username with your email address and the password with the password you setup for the integration.

When the response comes back, you want to copy everything that is in the token section.

{
  "token": "Bearer eyJhBGcrOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNzbWFsZTkzQGdtYWlsLmNvbSIsImV4cCI6MTc3NjAyMTExNCwiaWF0IjoxNzY4MjQ1MTE0fQ.WVwBB7jnFQT0HgYCYHqUn-JqtSltS-UwpOoHFXpgrck",
  "refresh_token": null,
  "username": "MY EMAIL",
  "displayname": "Simon",
  "lang": "The Moon"
}

So for the example above, I want the following:

Bearer eyJhBGcrOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InNzbWFsZTkzQGdtYWlsLmNvbSIsImV4cCI6MTc3NjAyMTExNCwiaWF0IjoxNzY4MjQ1MTE0fQ.WVwBB7jnFQT0HgYCYHqUn-JqtSltS-UwpOoHFXpgrck

Click on the green Authorize button at the top of the page and paste the token in.


The bearer token should be treated like your password. Be careful sharing it!


To check you are logged in correctly, use the /auth/current-user endpoint to check you get your information back.

Getting the sensor data

Scrolling down the page, you will find a section called Sensor, running the GET /sensor endpoint will give you the details of your device(s).

I would be careful with the Mac address as there are some endpoints that give details about the Mac address, even if it is not in your account.

For me, this is the output of my Duux Edge v2

Duux Edge v2 /sensor details
{
  "data": [
    {
      "id": 274364,
      "type": "51",
      "name": "DUUX.1.266641",
      "displayName": "Office Heater",
      "owner": "storage",
      "location": "Warehouse",
      "deviceId": "REDACTED",
      "tcf": 1,
      "baseLineCalibration": 0,
      "hcf": 1,
      "hBaseLine": 0,
      "batchId": 11,
      "placementDate": "2024-06-03T03:04:09",
      "story": "REDACTED",
      "address": null,
      "latitude": null,
      "longtitude": null,
      "config": null,
      "retired": 0,
      "hidden": false,
      "notifications": true,
      "notificationEmail": null,
      "sensorTypeIdsensorType": 50,
      "createdAt": "2024-06-03T03:04:09",
      "updatedAt": "2026-01-12T06:42:19",
      "parentSensorId": null,
      "spaceId": REDACTED,
      "online": true,
      "connectionType": "mqtt",
      "connectionUpdateDate": "2026-01-12T06:42:19",
      "color": null,
      "serialNumber": null,
      "space": {
        "id": REDACTED,
        "name": "Office"
      },
      "sensorType": {
        "productIds": [
          "ml6gqdjaacijzzgq"
        ],
        "id": 50,
        "name": "DUUX Edge heater v2"
      },
      "simcard": null,
      "calibrationPreset": null
    }
  ],
  "errorMessage": null
}

The 'Supported' Commands

There is a GET endpoint called /smarthome/sensor that gives you the above data, plus a block for the commands the sensor supports.

It has been my experience that this is not always accurate....

Duux Edge v2 /smarthome/sensor details
{
  "data": [
    {
      "id": 274364,
      "type": "51",
      "name": "DUUX.1.266641",
      "displayName": "Office Heater",
      "owner": "storage",
      "deviceId": "REDACTED",
      "sensorTypeId": 50,
      "online": true,
      "connectionUpdateDate": "2026-01-12T06:42:19.000Z",
      "connectionType": "mqtt",
      "sensorType": {
        "fwVersion": "14.3.10",
        "alexaDisplayCategories": "[\"THERMOSTAT\"]",
        "name": "DUUX Edge heater v2",
        "description": "DUUX Edge heater v2",
        "googleDeviceType": "action.devices.types.HEATER",
        "id": 50,
        "type": 51,
        "Traits": [
          {
            "id": 1,
            "commands": [
              "tune set power {on}"
            ],
            "config": {
              "unique_name": "OnOff",
              "on": {
                "requestStatusPath": "latestData.fullData.power",
                "mapValue": {
                  "valueMap": [
                    {
                      "match": true,
                      "value": 1
                    },
                    {
                      "match": false,
                      "value": 0
                    }
                  ]
                }
              }
            },
            "name": "OnOff",
            "queryOnly": 0,
            "type": "command",
            "settings": {
              "friendlyNames": [
                {
                  "lang": "en",
                  "synonyms": [
                    "Power",
                    "Power Switch",
                    "On Off"
                  ]
                },
                {
                  "lang": "es",
                  "synonyms": [
                    "Encendido",
                    "Interruptor",
                    "Encender Apagar"
                  ]
                }
              ]
            }
          },
          {
            "id": 4,
            "commands": [
              "tune set sp {temperatureSetpoint}",
              "tune set mode {heaterMode}"
            ],
            "config": {
              "unique_name": "TemperatureSettingEdgeHeater",
              "temperatureSetpoint": {
                "requestStatusPath": "latestData.fullData.sp"
              },
              "temperature": {
                "requestStatusPath": "latestData.fullData.temp"
              },
              "heaterMode": {
                "defaultReturnValue": "HEAT"
              }
            },
            "name": "TemperatureSetting",
            "queryOnly": 0,
            "type": "command",
            "settings": {
              "temperatureStepCelsius": 1,
              "temperatureRange": {
                "minThresholdCelsius": 5,
                "maxThresholdCelsius": 36
              },
              "availableThermostatModes": [
                "HEAT"
              ]
            }
          },
          {
            "id": 16,
            "commands": [
              "tune set night {nightMode}"
            ],
            "config": {
              "unique_name": "NightMode",
              "availableMode": {
                "defaultReturnName": "night_mode",
                "defaultReturnSetting": "off",
                "requestStatusPath": "latestData.fullData.night"
              },
              "command_key": "nightMode"
            },
            "name": "Modes",
            "queryOnly": 0,
            "type": "command",
            "settings": {
              "availableModes": [
                {
                  "name": "night_mode",
                  "command_key": "nightMode",
                  "name_values": [
                    {
                      "name_synonym": [
                        "Night mode",
                        "Sleep mode",
                        "Quiet mode"
                      ],
                      "lang": "en"
                    },
                    {
                      "name_synonym": [
                        "Modo noche"
                      ],
                      "lang": "es"
                    }
                  ],
                  "settings": [
                    {
                      "setting_name": "off",
                      "setting_value": "0",
                      "setting_values": [
                        {
                          "setting_synonym": [
                            "Off"
                          ],
                          "lang": "en"
                        },
                        {
                          "setting_synonym": [
                            "Off"
                          ],
                          "lang": "es"
                        }
                      ]
                    },
                    {
                      "setting_name": "on",
                      "setting_value": "1",
                      "setting_values": [
                        {
                          "setting_synonym": [
                            "On"
                          ],
                          "lang": "en"
                        },
                        {
                          "setting_synonym": [
                            "On"
                          ],
                          "lang": "es"
                        }
                      ]
                    }
                  ],
                  "ordered": true
                }
              ]
            }
          },
          {
            "id": 18,
            "commands": [
              "tune set heating {mode}"
            ],
            "config": {
              "unique_name": "EdgeOilModesTrait",
              "availableMode": {
                "defaultReturnName": "edge_mode",
                "defaultReturnSetting": "low",
                "requestStatusPath": "latestData.fullData.heatin"
              },
              "command_key": "mode"
            },
            "name": "Modes",
            "queryOnly": 0,
            "type": "command",
            "settings": {
              "availableModes": [
                {
                  "name": "edge_mode",
                  "command_key": "mode",
                  "name_values": [
                    {
                      "name_synonym": [
                        "Mode",
                        "Setting",
                        "Program",
                        "Profile"
                      ],
                      "lang": "en"
                    },
                    {
                      "name_synonym": [
                        "Modo"
                      ],
                      "lang": "es"
                    }
                  ],
                  "settings": [
                    {
                      "setting_name": "low",
                      "setting_value": "1",
                      "setting_values": [
                        {
                          "setting_synonym": [
                            "Low"
                          ],
                          "lang": "en"
                        },
                        {
                          "setting_synonym": [
                            "Baja"
                          ],
                          "lang": "es"
                        }
                      ]
                    },
                    {
                      "setting_name": "high",
                      "setting_value": "2",
                      "setting_values": [
                        {
                          "setting_synonym": [
                            "High"
                          ],
                          "lang": "en"
                        },
                        {
                          "setting_synonym": [
                            "Alta"
                          ],
                          "lang": "es"
                        }
                      ]
                    },
                    {
                      "setting_name": "max",
                      "setting_value": "3",
                      "setting_values": [
                        {
                          "setting_synonym": [
                            "Boost",
                            "Max"
                          ],
                          "lang": "en"
                        },
                        {
                          "setting_synonym": [
                            "Aumento"
                          ],
                          "lang": "es"
                        }
                      ]
                    }
                  ],
                  "ordered": true
                }
              ]
            }
          }
        ]
      },
      "space": {
        "name": "Office"
      },
      "latestData": {
        "deviceId": "REDACTED",
        "pluginName": "tune",
        "pluginUid": "ml6gqdjaacijzzgq",
        "data": {
          "temp": 15,
          "hum": null,
          "tvoc": null,
          "co2": null,
          "pmn03": null,
          "pmn05": null,
          "pm1": null,
          "pm2_5": null,
          "pm0_3": null,
          "pm0_5": null,
          "pm10": null,
          "time": "2026-01-12T19:24:05Z",
          "sensor": "REDACTED",
          "zt1": null,
          "zt2": null,
          "zt3": null,
          "zt4": null,
          "pluginName": "tune",
          "pluginUid": "ml6gqdjaacijzzgq"
        },
        "fullData": {
          "1": null,
          "2": null,
          "3": null,
          "4": null,
          "5": null,
          "6": null,
          "7": null,
          "8": null,
          "9": null,
          "10": null,
          "11": null,
          "12": null,
          "13": null,
          "14": null,
          "15": null,
          "16": null,
          "18": null,
          "19": null,
          "20": null,
          "21": null,
          "22": null,
          "24": null,
          "101": null,
          "103": null,
          "time": "2026-01-12T19:24:05Z",
          "aq": null,
          "basel": null,
          "batcha": null,
          "batlvl": null,
          "blow": null,
          "co2": null,
          "di1": null,
          "di2": null,
          "di3": null,
          "dp1": null,
          "dp2": null,
          "dp3": null,
          "dpr": null,
          "dpt": null,
          "dry": null,
          "eco": null,
          "eco2": null,
          "err": 0,
          "fan": null,
          "filres": null,
          "filter": null,
          "heatin": 3,
          "horosc": null,
          "hours": null,
          "hum": null,
          "ion": null,
          "laundr": null,
          "led": null,
          "lock": 0,
          "mode": 0,
          "night": 0,
          "p03": null,
          "pluginId": null,
          "pluginName": "tune",
          "pluginUid": "ml6gqdjaacijzzgq",
          "pm1": null,
          "pm10": null,
          "pm2_5": null,
          "pmn03": null,
          "pmn05": null,
          "pmn1": null,
          "pmn10": null,
          "pmn25": null,
          "pmn5": null,
          "power": 1,
          "ppm": null,
          "pump": null,
          "raw": null,
          "sensor": "REDACTED",
          "sleep": null,
          "source": "Ingestor1",
          "sp": 16,
          "speed": null,
          "status": 0,
          "swing": null,
          "t1": null,
          "t10": null,
          "t2": null,
          "t3": null,
          "t4": null,
          "t5": null,
          "t6": null,
          "t7": null,
          "t8": null,
          "t9": null,
          "temp": 15,
          "tilt": null,
          "timer": 0,
          "timerr": null,
          "timrm": 0,
          "tvoc": null,
          "unit": null,
          "verosc": null,
          "wm": null,
          "zt1": null,
          "zt2": null,
          "zt3": null,
          "zt4": null,
          "pm0_3": null,
          "pm0_5": null
        },
        "scores": null,
        "labels": null,
        "latest": "2026-01-12T19:24:05"
      }
    }
  ],
  "errorMessage": null
}

Clone this wiki locally