Open snakuzzo opened 4 years ago
this is how battery percentage is calculated on zigbee2mqtt. Battery on E1743 button is a 2032 3V...
Here the value returned calling toPercentageCR2032(voltage)
function...
https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/converters/fromZigbee.js#L1176
xiaomi_battery_3v: {
cluster: 'genBasic',
type: ['attributeReport', 'readResponse'],
convert: (model, msg, publish, options, meta) => {
let voltage = null;
if (msg.data['65281']) {
voltage = msg.data['65281']['1'];
} else if (msg.data['65282']) {
voltage = msg.data['65282']['1'].elmVal;
}
if (voltage) {
return {
battery: toPercentageCR2032(voltage),
voltage: voltage, // @deprecated
// voltage: voltage / 1000.0,
};
}
},
}
...and here the function...
https://github.com/Koenkk/zigbee-herdsman-converters/blob/7d5fcf0c0a3d6ea900a8ae2ac8c2169befab377d/converters/fromZigbee.js#L75
const toPercentageCR2032 = (voltage) => {
let percentage = null;
if (voltage < 2100) {
percentage = 0;
} else if (voltage < 2440) {
percentage = 6 - ((2440 - voltage) * 6) / 340;
} else if (voltage < 2740) {
percentage = 18 - ((2740 - voltage) * 12) / 300;
} else if (voltage < 2900) {
percentage = 42 - ((2900 - voltage) * 24) / 160;
} else if (voltage < 3000) {
percentage = 100 - ((3000 - voltage) * 58) / 100;
} else if (voltage >= 3000) {
percentage = 100;
}
return Math.round(percentage);
};
is it possible to add this or I have to calculate by myself ?
Thank you
Покажите лог репорта батарейки от устройства
Это то, что я вижу на webgui
Это то, что я вижу в журнале, когда нажимаю кнопку
[00:17:58.648] [1] Thread Main, core: 1
[00:18:08.652] [0] Thread Main, core: 1
[00:18:17.926] [D] -- ReceiveCmd: 0x4481 AREQ_AF_INCOMING_MSG, Len: 23, Data: 00000600514B0101002C008F123C000003012001A9390A
[00:18:17.931] [V] AREQ_AF_INCOMING_MSG GroupId: 0x0000, ClusterId: 0x0006 GEN_ON_OFF, SrcAddr: 0x4B51, SrcEn: 1, DstEn: 1, WasBr: 0x00, LinkQuality: 44, SecurityUse: 0x00, TimeStamp: 0x003C128F, TransSeqNum: 0, Len: 3, Data: 012001
[00:18:17.951] [V] ZCL FrameControl: 0x01, Type: 01, ManuSpecific: 00, Direction: 00, DisableDefaultRsp: 00, TrSeqNum: 32, CmdId: 0x01 ON, Payload:
[00:18:17.963] ParseZCLHeader time: 13
[00:18:17.967] [D] SetDeviceState nwkAddr: 0x4B51, linkquality = UINT8: 44
[00:18:17.978] [D] SetDeviceState nwkAddr: 0x4B51, trSeqNum = UINT8: 32
[00:18:17.985] FZ0 time: 18
[00:18:17.060] [D] SetDeviceState nwkAddr: 0x4B51, click = CHAR[]: ON
[00:18:17.065] FZ time: 6
[00:18:17.071] FZ [TRADFRI on/off switch : pulsante_ikea]: {"click":"ON","linkquality":44,"model_name":"TRADFRI on/off switch"}
[00:18:17.077] SendStates time: 7
[00:18:17.082] FromZigBeeConverter time: 114
[00:18:17.089] [MQTT] payload_length: 68
[00:18:17.089] ParseZCLPayload time: 121
[00:18:17.096] Zigbee.ProcessMessage() mem: 187708 - 175388 = 12320
[00:18:17.098] [MQTT] write_count: 68
[00:18:18.661] [5] Thread Main, core: 1
батарейка обычно приходит в кластере GEN_POWER_CFG
Я не знаю Я знаю, что это работает с zigbee2Tasmota. Если это может помочь, это MQTT опубликовать, чтобы прочитать значение батареи сразу же после нажатия кнопки
topic: 'cmnd/sonoff-z2t/ZbRead'
payload: '{"Device":"0xC132","Endpoint":1,"Cluster":1,"Read":[32,33]}'
Это ручное чтение, странно так делать для батарейного устройства.
вы правы, но это устройство, вероятно, не публикуется на standard endpoints
Смотри сюда...
Прошлой ночью я обновил прошивку устройства с помощью zigbee2mqtt. Затем я заново подключил устройство к SLS GW, но результат не изменился. как вы можете видеть в моем предыдущем посте, где я поделился исходным кодом Tasmota, мое устройство отображает значение батареи в кластере GEN_CFG, а не в GEN_POWER_CFG
у нас есть информация, когда это будет исправлено? из нескольких пользователей и десятков этих кнопок IKEA только одна сообщила о батарее ОДИН РАЗ, и ни одна из них не сделала этого; в zigbee2mqtt все работает отлично, и проблема была объяснена здесь выше и должна быть исправлена в SLS ...
Спасибо @papperone за ваш опыт. Как я уже говорил в предыдущих сообщениях, это происходит только на SLS. Значение напряжения правильно управляется и процент заряда батареи отображается правильно не только на zigbee2mqtt но и на tasmota
Log when I press a button... no GEN_POWER_CFG cluster is sent and no battery value on MQTT Payload
169357216 -- RawReceive[1,28]: fe 17 44 81 00 00 06 00 d5 36 01 01 00 34 00 17 70 aa 00 00 03 01 59 00 d5 36 0b 7d
169357221 [D] -- ReceiveCmd: 0x4481 AREQ_AF_INCOMING_MSG, Len: 23, Data: 00000600D53601010034001770AA000003015900D5360B
169357230 [V] AREQ_AF_INCOMING_MSG GroupId: 0x0000, ClusterId: 0x0006 GEN_ON_OFF, SrcAddr: 0x36D5, SrcEn: 1, DstEn: 1, WasBr: 0x00, LinkQuality: 52, SecurityUse: 0x00, TimeStamp: 0x00AA7017, TransSeqNum: 0, Len: 3, Data: 015900
169357250 [V] ZCL FrameControl: 0x01, Type: 01, ManuSpecific: 00, Direction: 00, DisableDefaultRsp: 00, TrSeqNum: 89, CmdId: 0x00 OFF, Payload:
169357262 ParseZCLHeader time: 13
169357267 [D] SetDeviceState nwkAddr: 0x36D5, linkquality = UINT8: 52
169357271 SimpleBind_Handle prepare 0x36D5, Name: linkquality, Value: 52
169357277 SimpleBind_Handle 0 ts: 6
169357280 SimpleBind_Handle 1 ts: 9
169357285 SimpleBind_Handle 2 ts: 14
169357290 SimpleBind_Handle 2.5 ts: 17 1 1 1
169357298 [D] SetDeviceState nwkAddr: 0x36D5, trSeqNum = UINT8: 89
169357303 SimpleBind_Handle prepare 0x36D5, Name: trSeqNum, Value: 89
169357307 SimpleBind_Handle 0 ts: 4
169357310 SimpleBind_Handle 1 ts: 7
169357316 SimpleBind_Handle 2 ts: 13
169357323 SimpleBind_Handle 2.5 ts: 17 1 1 1
169357329 FZ0 time: 63
169357335 [D] SetDeviceState nwkAddr: 0x36D5, click = CHAR[]: OFF
169357339 SimpleBind_Handle prepare 0x36D5, Name: click, Value: OFF
169357343 FZ time: 10
169357349 FZ [TRADFRI on/off switch : pulsante_ikea]: {"click":"OFF","linkquality":52,"model_name":"TRADFRI on/off switch"}
This is how z2m fixed battery percentage value on E1743
https://github.com/Koenkk/zigbee-herdsman-converters/commit/04474916ca1569613ae01aabc020ff6e25716de4
Hi all! I'm on fw 2020.05.11 I'm can control fine my IKEA button E1743 but it's not in your supported devices list All commands are ok, but I can't retreive battery percentage.
Here messages published over MQTT...
Here the device details...