-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Open
Labels
Description
Link
https://heimgard.com/produkt/heimgard-smart-elektronisk-dorlas
Database entry
0xbc026efffe8b6b29
Zigbee2MQTT version
2.7.2 (unknown)
External converter
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const ota = require('zigbee-herdsman-converters/lib/ota');
const e = exposes.presets;
/*
Mapping av action_user β navn
*/
const userNameMap = {
0: "Master",
1: "User 01",
2: "User 02",
3: "User 03",
4: "User 04",
5: "User 05",
6: "User 06",
7: "User 07",
8: "User 08",
9: "User 09",
10: "User 10",
11: "User 11",
12: "User 12",
13: "User 13",
14: "User 14",
15: "User 15",
16: "User 16",
17: "User 17",
18: "User 18",
19: "User 19",
20: "User 20",
21: "User 21",
22: "User 22",
23: "User 23",
24: "User 24",
25: "User 25",
26: "User 26",
27: "User 27",
28: "User 28",
29: "User 29",
30: "User 30",
31: "User 31",
32: "User 32",
33: "User 33",
34: "User 34",
35: "User 35",
36: "User 36",
37: "User 37",
38: "User 38",
39: "User 39",
};
/*
Custom converter som oversetter user-ID til navn
*/
const fzLocal = {
lock_operation_event_user_name: {
cluster: 'closuresDoorLock',
type: ['commandOperationEventNotification'],
convert: (model, msg, publish, options, meta) => {
const user = msg.data.user;
const userName = userNameMap[user] || `Unknown (${user})`;
return {
action_user: user,
action_user_name: userName,
};
},
},
};
module.exports = [
{
zigbeeModel: ['HT-SLM-2'],
model: 'HT-SLM-2',
vendor: 'Heimgard Technologies',
description: 'Doorlock with fingerprint - with user name mapping',
fromZigbee: [
fz.lock,
fz.battery,
fz.lock_pin_code_response,
fz.lock_user_status_response,
fz.lock_operation_event,
fz.lock_programming_event,
fzLocal.lock_operation_event_user_name, // <-- lagt til
],
toZigbee: [
tz.lock,
tz.lock_sound_volume,
tz.identify,
tz.pincode_lock,
tz.lock_userstatus,
tz.lock_auto_relock_time,
],
meta: { pinCodeCount: 39 },
ota: ota.zigbeeOTA,
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ['closuresDoorLock', 'genPowerCfg']);
await reporting.lockState(endpoint);
await reporting.batteryPercentageRemaining(endpoint);
await endpoint.read('closuresDoorLock', ['lockState', 'soundVolume']);
},
exposes: [
e.lock(),
e.pincode(),
e.battery(),
e.sound_volume(),
e.auto_relock_time().withValueMin(0).withValueMax(3600),
e.text('action_user_name', 'r'), // <--- NY SENSOR
e.lock_action_user(),
e.lock_action_source_name(),
],
},
];What does/doesn't work with the external definition?
Lock/Unlock - works
Battery readout - works
Sound volume - works
Auto relock time - not tested
Pin code - not tested
Notes
software_build_id: undefined
date_code: undefined
endpoints:
{"1":{"clusters":{"input":["genBasic","genPowerCfg","genIdentify","genGroups","genScenes","genPollCtrl","closuresDoorLock"],"output":["genIdentify","genOta"]}}}