How to change device Power Source attribute from Mains to Battery?

Hi there,

I have manually added an Aqara Smoke alarm to deCONZ using a custom DDF. It is displaying as a mains powered device and not a battery powered device. How do I update this? I’m worried about the battery draining quickly due to increased activity.

Here is the DDF and a screenshot of the node descriptor. I appreciate any help, thank you!

{
  "schema": "devcap1.schema.json",
  "manufacturername": "$MF_LUMI",
  "modelid": "lumi.sensor_smoke.acn03",
  "vendor": "Xiaomi",
  "product": "lumi.sensor_smoke.acn03",
  "sleeper": true,
  "status": "Gold",
  "subdevices": [
    {
      "type": "$TYPE_FIRE_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0500"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0402",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0001",
          "0x0500",
          "0xfcc0"
        ]
      },
      "items": [
        {
          "name": "attr/id"
        },
        {
          "name": "attr/lastannounced"
        },
        {
          "name": "attr/lastseen"
        },
        {
          "name": "attr/manufacturername"
        },
        {
          "name": "attr/modelid"
        },
        {
          "name": "attr/name"
        },
        {
          "name": "attr/swversion"
        },
        {
          "name": "attr/type"
        },
        {
          "name": "attr/uniqueid"
        },
        {
          "name": "config/battery",
          "awake": true,
          "parse": {
            "at": "0x0020",
            "cl": "0x0001",
            "ep": 1,
            "eval": "const vmin = 25; const vmax = 30; let bat = Attr.val; if (bat > vmax) { bat = vmax; } else if (bat < vmin) { bat = vmin; } bat = ((bat - vmin) / (vmax - vmin)) * 100; if (bat > 100) { bat = 100; } else if (bat <= 0)  { bat = 1; } Item.val = bat;",
            "fn": "zcl"
          },
          "refresh.interval": 86400,
          "read": {
            "at": "0x0020",
            "cl": "0x0001",
            "ep": 1,
            "fn": "zcl"
          }
        },
        {
          "name": "config/enrolled",
          "public": false
        },
        {
          "name": "config/ledindication",
          "refresh.interval": 86400,
          "read": {
            "at": "0x013c",
            "cl": "0xfcc0",
            "ep": 1,
            "fn": "zcl"
          },
          "write": {
            "at": "0x013c",
            "cl": "0xfcc0",
            "dt": "0x20",
            "ep": 1,
            "eval": "Item.val ? false : true",
            "fn": "zcl",
            "mf": "0x115f"
          },
          "parse": {
            "at": "0x013c",
            "cl": "0xfcc0",
            "ep": 1,
            "eval": "Item.val = Attr.val == 1 ? true : false",
            "fn": "zcl"
          },
          "default": true
        },
        {
          "name": "config/on"
        },
        {
          "name": "config/pending"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/fire",
          "refresh.interval": 86400,
          "read": {
            "at": "0x013a",
            "cl": "0xfcc0",
            "ep": 1,
            "mf": "0x115f",
            "fn": "zcl"
          },
          "parse": {
            "at": "0x013a",
            "cl": "0xfcc0",
            "ep": 1,
            "eval": "Item.val = Attr.val != 0x0A ? true : false",
            "fn": "zcl"
          },
          "default": false
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/lowbattery"
        }
      ]
    }
  ],
  "bindings": [
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0001",
      "report": [
        {
          "at": "0x0020",
          "dt": "0x20",
          "min": 300,
          "max": 43200,
          "change": "0x00000001"
        }
      ]
    }
  ]
}

Deconz show only the reality without hack/modification.
Power source=Main is from the device itself. And not possible to edit the device firmware.

On the lower zigbee core, I don’t think it have an impact, the device type (end device or router) will have more impact.

On the API it’s another thing, here all is possible.

So this part is fine.

All polling value are set at 24h, and I don’t think the bind/report is agressive.

Something you can do is enabling deconz log with flag “info” and “info_l2” and look at a spamming request to/from this device.