Update frequency Blitzwolf BW-SHP13 (TZ3000_g5xawfcq)

Ha yes right, HA is able to make more complex than using a “standard” docker ystem.

@jjansen85

  1. Can you please share what precisely you changed (and how did that improve your update frequency)?
  • I lowered the “max interval” value(s) from 300 to 10, saved the DDF and performed a “hot reload”. Still, the update frequency is slow (10 seconds are not respected, instead it took 8 minutes…). What am I doing wrong?
  • I also lowered the “refresh interval” for “state/power” from 300 to 10. Still not working as expected/configured (still took 60 to 120 seconds to update).
  • Would you mind sharing your whole .json file/content?
  1. What is the final “solution” to make those changes permanent (HA environment running deCONZ as addon)?

8 mn ? for me the reporting is not working on your device, but strange the “refresh interval” is not working too, perhaps something visible in logs ? It 's a poll, so so you probbly can see the periodic request.

To make thoses change permanent, put the the DDF on a “user folder”.

No problem:

{
  "schema": "devcap1.schema.json",
  "manufacturername": [
    "_TZ3000_g5xawfcq",
    "_TZ3000_amdymr7l"
  ],
  "modelid": [
    "TS0121",
    "TS011F"
  ],
  "vendor": "Blitzwolf",
  "product": "BW-SHP13",
  "sleeper": false,
  "status": "Gold",
  "path": "/devices/bw_shp13_smart_plug_JJ.json",
  "subdevices": [
    {
      "type": "$TYPE_SMART_PLUG",
      "restapi": "/lights",
      "uuid": [
        "$address.ext",
        "0x01"
      ],
      "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": "state/alert",
          "default": "none"
        },
        {
          "name": "state/on",
          "refresh.interval": 5
        },
        {
          "name": "state/reachable"
        }
      ]
    },
    {
      "type": "$TYPE_POWER_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0b04"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0051",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0B04"
        ]
      },
      "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/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/current",
          "refresh.interval": 10,
          "default": 0
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/power",
          "refresh.interval": 10,
          "default": 0
        },
        {
          "name": "state/voltage",
          "refresh.interval": 60,
          "default": 0
        }
      ]
    },
    {
      "type": "$TYPE_CONSUMPTION_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0702"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0051",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0702"
        ]
      },
      "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/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/consumption",
          "refresh.interval": 60,
          "read": {
            "at": "0x0000",
            "cl": "0x0702",
            "ep": 0,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0000",
            "cl": "0x0702",
            "ep": 0,
            "eval": "Item.val = Attr.val * 10"
          },
          "default": 0
        },
        {
          "name": "state/lastupdated"
        }
      ]
    }
  ],
  "bindings": [
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0006",
      "report": [
        {
          "at": "0x0000",
          "dt": "0x10",
          "min": 1,
          "max": 300
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0702",
      "report": [
        {
          "at": "0x0000",
          "dt": "0x25",
          "min": 1,
          "max": 300,
          "change": "0x0000000A"
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0B04",
      "report": [
        {
          "at": "0x0505",
          "dt": "0x21",
          "min": 1,
          "max": 300,
          "change": "0x00000001"
        },
        {
          "at": "0x0508",
          "dt": "0x21",
          "min": 1,
          "max": 300,
          "change": "0x00000064"
        },
        {
          "at": "0x050B",
          "dt": "0x29",
          "min": 1,
          "max": 300,
          "change": "0x00000001"
        }
      ]
    }
  ]
}

I don’t know. I use deCONZ within its own docker environment. I don’t use the HA addon.

Thank you both @Smanar and @jjansen85.

Now I use the same DDF (content). Still I get update times (tested 2 times with 2 plugs) of 30, 34, 46, 54, 60, 71, 85, 90 seconds. Still inacceptable.

  1. What do I need to do after editing the DDF in deCONZ? I saved it and performed a “File / Hot reload”.
    → Do I need to restart the whole deCONZ addon/container for the changes to take effect? I don’t think so, according to the docs hot reload is sufficient.

  2. I have no idea where such “user” folder would be using the HA deCONZ addon. And how I can tell the devices (BW-SHP 13) where to find their DDF file… - or do they find each other based on the content (hardware/model id), no matter where the DDFs are located?

@jjansen85 You did move your /devices/blitzwolf/bw_shp13_smart_plug.json to /devices/bw_shp13_smart_plug_JJ.json, did you?

  1. Well the logging for a newby looks like a pure mess… which of theses is of interest to check if the polling happens?
    grafik
    I see some entries for the device but no idea if I’m looking at the right lines (or what I’m looking at all). E. g.:
22:53:48:976 ZCL read attr 0x84FD27FFFE5F07DE, ep: 0x01, cl: 0x0006, attr: 0x0000, mfcode: 0x0000, aps.id: 208, zcl.seq: 9
22:53:49:057 ZCL got data for node=0xF05A, cl=0x0006, at=0x0000, status=0x00, type=0x10
22:53:49:065 ZCL read attr 0x84FD27FFFE5F07DE, ep: 0x01, cl: 0x0B04, attr: 0x0508, mfcode: 0x0000, aps.id: 210, zcl.seq: 10
22:53:49:107 ZCL got data for node=0xF05A, cl=0x0B04, at=0x0508, status=0x00, type=0x21
22:53:49:132 ZCL read attr 0x84FD27FFFE5F07DE, ep: 0x01, cl: 0x0B04, attr: 0x050B, mfcode: 0x0000, aps.id: 212, zcl.seq: 11
22:53:49:163 ZCL got data for node=0xF05A, cl=0x0B04, at=0x050B, status=0x00, type=0x29
22:53:49:190 ZCL read attr 0x84FD27FFFE5F07DE, ep: 0x01, cl: 0x0B04, attr: 0x0505, mfcode: 0x0000, aps.id: 214, zcl.seq: 12
22:53:49:221 ZCL got data for node=0xF05A, cl=0x0B04, at=0x0505, status=0x00, type=0x21
...
22:55:30:485 	0x84FD27FFFE5F07DE force poll (2)
...
22:56:04:976 ZCL read attr 0x84FD27FFFE5F07DE, ep: 0x01, cl: 0x0006, attr: 0x0000, mfcode: 0x0000, aps.id: 104, zcl.seq: 153
22:56:05:006 ZCL got data for node=0xF05A, cl=0x0006, at=0x0000, status=0x00, type=0x10
22:56:05:020 ZCL read attr 0x84FD27FFFE5F07DE, ep: 0x01, cl: 0x0B04, attr: 0x0508, mfcode: 0x0000, aps.id: 106, zcl.seq: 154
22:56:05:052 ZCL got data for node=0xF05A, cl=0x0B04, at=0x0508, status=0x00, type=0x21
22:56:05:079 ZCL read attr 0x84FD27FFFE5F07DE, ep: 0x01, cl: 0x0B04, attr: 0x050B, mfcode: 0x0000, aps.id: 109, zcl.seq: 156
22:56:05:125 ZCL got data for node=0xF05A, cl=0x0B04, at=0x050B, status=0x00, type=0x29
22:56:05:156 ZCL read attr 0x84FD27FFFE5F07DE, ep: 0x01, cl: 0x0B04, attr: 0x0505, mfcode: 0x0000, aps.id: 111, zcl.seq: 157

Thank you for pointing me into the right direction, appreciate your help a lot.

As sample

22:53:49:107 ZCL got data for node=0xF05A, cl=0x0B04, at=0x0508, status=0x00, type=0x21

This one mean you have a attribute report for the node 0xF05A for the current (at=0x0508), 0x050B is for the power.

22:56:05:156 ZCL read attr 0x84FD27FFFE5F07DE, ep: 0x01, cl: 0x0B04, attr: 0x0505, mfcode: 0x0000, aps.id: 111, zcl.seq: 157

This one is not nice, it’s deconz that read itself a value, mean generaly the reporting is not working for your device, if I m right the timing for this action is the one set by “refresh.interval”.
On your log for the attrbute 0x050B you have one at 22:53:49:190 and another at 22:56:05:079 so with 3mn delay.

For plugs the “hot relaod” is immediate.

Try to check if in logs you haven’t closer “ZCL read attr”, less than the 3mn one from your capture.
Or you can use the GUI to ask the attribute value every 10s (for exemple the attribute 0x0508 in the cluster 0x0B04 and check if the device support it ? Perhaps you will have an error message.

Current status: update of current consumption happens every 60 to 70 seconds - even 10 seconds are configured - which is lightyears better than the many minutes (5 to 8) like before.

Next to the log thing I have one DDF content question:
How important is the "path": "/devices/blitzwolf/bw_shp13_smart_plug.json", line?

Because I store my custom DDF for testint purposes on another location as mentioned here. It is now located at /data/.local/share/dresden-elektronik/deCONZ/devices/bw_shp13_smart_plug_MyCustomConfig.json, which should be a permanent storage for the Home Assistant deCONZ addon.

My full DDF looks like this (path line still unchanged):

bw_shp13_smart_plug_MyCustomConfig.json
{
  "schema": "devcap1.schema.json",
  "manufacturername": [
    "_TZ3000_g5xawfcq",
    "_TZ3000_amdymr7l"
  ],
  "modelid": [
    "TS0121",
    "TS011F"
  ],
  "vendor": "Blitzwolf",
  "product": "BW-SHP13",
  "sleeper": false,
  "status": "Gold",
  "path": "/devices/blitzwolf/bw_shp13_smart_plug.json",
  "subdevices": [
    {
      "type": "$TYPE_SMART_PLUG",
      "restapi": "/lights",
      "uuid": [
        "$address.ext",
        "0x01"
      ],
      "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": "state/alert",
          "default": "none"
        },
        {
          "name": "state/on",
          "refresh.interval": 5
        },
        {
          "name": "state/reachable"
        }
      ]
    },
    {
      "type": "$TYPE_POWER_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0b04"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0051",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0B04"
        ]
      },
      "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/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/current",
          "refresh.interval": 10,
          "default": 0
        },
        {
          "name": "state/lastupdated"
        },
        {
          "name": "state/power",
          "refresh.interval": 10,
          "default": 0
        },
        {
          "name": "state/voltage",
          "refresh.interval": 10,
          "default": 0
        }
      ]
    },
    {
      "type": "$TYPE_CONSUMPTION_SENSOR",
      "restapi": "/sensors",
      "uuid": [
        "$address.ext",
        "0x01",
        "0x0702"
      ],
      "fingerprint": {
        "profile": "0x0104",
        "device": "0x0051",
        "endpoint": "0x01",
        "in": [
          "0x0000",
          "0x0702"
        ]
      },
      "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/on"
        },
        {
          "name": "config/reachable"
        },
        {
          "name": "state/consumption",
          "refresh.interval": 300,
          "read": {
            "at": "0x0000",
            "cl": "0x0702",
            "ep": 0,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0000",
            "cl": "0x0702",
            "ep": 0,
            "eval": "Item.val = Attr.val * 10"
          },
          "default": 0
        },
        {
          "name": "state/lastupdated"
        }
      ]
    }
  ],
  "bindings": [
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0006",
      "report": [
        {
          "at": "0x0000",
          "dt": "0x10",
          "min": 1,
          "max": 300
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0702",
      "report": [
        {
          "at": "0x0000",
          "dt": "0x25",
          "min": 1,
          "max": 300,
          "change": "0x0000000A"
        }
      ]
    },
    {
      "bind": "unicast",
      "src.ep": 1,
      "cl": "0x0B04",
      "report": [
        {
          "at": "0x0505",
          "dt": "0x21",
          "min": 1,
          "max": 20,
          "change": "0x00000001"
        },
        {
          "at": "0x0508",
          "dt": "0x21",
          "min": 1,
          "max": 20,
          "change": "0x00000064"
        },
        {
          "at": "0x050B",
          "dt": "0x29",
          "min": 1,
          "max": 10,
          "change": "0x00000001"
        }
      ]
    }
  ]

Good question, I don’t know if it’s used, on my side I remove all “path” line for DDF.

That’s interesting. Couldn’t find it in the docs. Where did you get this quoted text from, maybe there’s the answer to that path question too?

I will try to ask to other devs about the “path” field.

1 Like

@bcutter ok, so I have answer from manup, he do like me, he remove all “path” field on DDF, so I think we can say it s totally useless.

1 Like

Thx. Now I like you too :smiley: :wink:
I removed it too in my custom DDF.

1 Like

So, even set to 10 seconds the best (lowest) update frequency I can get is roughly 50 to 70 seconds.

Quite good but still wondering.

Yeah it’s probably because your actual firmware don’t support reporting.
Even it’s still strange for me, philips bulbs are realy spammed for a report every 1/2s, strange this device is so few talkative.

Well that’s just what I discovered. I’m not aware of any version types of this device, but maybe others with the same device can check the interval and report here?

At least I can say they consistently behave like this, meaning: all my exemplars of this plug do this, so it’s not a single monday product thing.

Today I integrated another BW-SHP 13, ordered a few weeks ago and made a quite interesting observation:

The current consumption of that device updates almost INSTANTLY (like known from the Shelly Plug S e. g.), really on every change - while the best I could get out of all the formerly integrated ones was 50 to 70 seconds.

Old ones affected by this issue    : ZigBee ID _TZ3000_g5xawfcq (Model TS0121)
New ones not affected by this issue: ZigBee ID _TZ3000_amdymr7l (Model TS011F)

Interestingly both share the same DDF (the custom one I created):

I suspect that the internal hardware has changed, maybe they upgraded some chipsets. Wish all my “old” ones would behave like that new one, it’s really great - like that devices always should have worked!

I don’t think there’s an option to “flash” the old ones…? Definitely not going to update (in terms of replace) them as they are now pretty expensive, around 25 € each.

I don’t think there’s an option to “flash” the old ones…?

Except if the manufacture give firmware for old model …

Not sure if those are updateable at all. Searching for the model number in zigbee.blakadder.com also shows some Tuya devices.


But for now I see a (major) issue with the new one: its current consumption falls to 0 W almost exactly every 5 minutes:

:frowning:

Ha yes I have already see this issue. And it’s boring because no way to detect if it’s a bugged 0 value or a real one, state/current too = 0 in same time.
You have tried to increase time beetween report ?

Let’s continue that issue in a separate topic here:

1 Like