zigbee-herdsman-converters
Version:
Collection of device converters to be used with zigbee-herdsman
329 lines • 12.8 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.definitions = void 0;
const zigbee_herdsman_1 = require("zigbee-herdsman");
const exp = __importStar(require("../lib/exposes"));
const m = __importStar(require("../lib/modernExtend"));
const reporting = __importStar(require("../lib/reporting"));
const manufacturerId = 26214;
function sendCommand(args) {
const { name, cluster, command, description } = args;
const exposes = [exp.enum(name, exp.access.SET, ["SEND"]).withDescription(description)];
const toZigbee = [
{
key: [name],
convertSet: async (entity, key, value, meta) => {
// @ts-expect-error ignore
const payload = value.payload != null ? value.payload : {};
await entity.command(cluster, command, payload, { manufacturerCode: manufacturerId });
},
},
];
return { exposes, toZigbee, isModernExtend: true };
}
exports.definitions = [
{
zigbeeModel: ["Bed.box"],
model: "Bed.box",
vendor: "Sprut.device",
description: "Sprut bed.box ergomotion controller",
extend: [
m.deviceEndpoints({
endpoints: {
light: 1,
head_control: 2,
foot_control: 3,
head_massage_intensity: 4,
foot_massage_intensity: 5,
massage_duration: 6,
flat: 7,
zero_gravity: 8,
reading: 9,
tv: 10,
head_feedback: 11,
foot_feedback: 12,
clear_angles_settings: 16,
massage: 21,
anti_snoring: 24,
move: 26,
stop: 27,
},
}),
m.numeric({
name: "head_position",
endpointNames: ["head_control"],
cluster: "genMultistateInput",
attribute: "presentValue",
description: "Head position (0-100%)",
valueMin: 0,
valueMax: 100,
unit: "%",
reporting: {
min: 1,
max: 100,
change: 1,
},
}),
m.numeric({
name: "foot_position",
endpointNames: ["foot_control"],
cluster: "genMultistateInput",
attribute: "presentValue",
description: "Foot position (0-100%)",
valueMin: 0,
valueMax: 100,
unit: "%",
reporting: {
min: 1,
max: 100,
change: 1,
},
}),
m.numeric({
name: "current_head_position",
endpointNames: ["head_feedback"],
cluster: "genMultistateOutput",
attribute: "presentValue",
description: "Current head position",
access: "STATE_GET",
unit: "%",
}),
m.numeric({
name: "current_foot_position",
endpointNames: ["foot_feedback"],
cluster: "genMultistateOutput",
attribute: "presentValue",
description: "Current foot position",
access: "STATE_GET",
unit: "%",
}),
m.enumLookup({
name: "head_massage_intensity",
endpointName: "head_massage_intensity",
cluster: "genMultistateInput",
attribute: "presentValue",
description: "Head massage intensity (0-6)",
lookup: { off: 0, one: 1, two: 2, three: 3, four: 4, five: 5 },
}),
m.enumLookup({
name: "foot_massage_intensity",
endpointName: "foot_massage_intensity",
cluster: "genMultistateInput",
attribute: "presentValue",
description: "Foot massage intensity (0-6)",
lookup: { off: 0, one: 1, two: 2, three: 3, four: 4, five: 5 },
}),
m.enumLookup({
name: "massage_duration",
endpointName: "massage_duration",
cluster: "genMultistateInput",
attribute: "presentValue",
description: "Massage duration (0=off, 1=10min, 2=20min, 3=30min)",
lookup: { off: 0, ten_min: 1, twenty_min: 2, thirty_min: 3 },
}),
m.onOff({
powerOnBehavior: false,
endpointNames: ["light"],
description: "Backlight",
}),
m.onOff({
powerOnBehavior: false,
endpointNames: ["flat"],
description: "Flat mode",
}),
m.onOff({
powerOnBehavior: false,
endpointNames: ["zero_gravity"],
description: "Zero gravity mode",
}),
m.onOff({
powerOnBehavior: false,
endpointNames: ["reading"],
description: "Reading mode",
}),
m.onOff({
powerOnBehavior: false,
endpointNames: ["tv"],
description: "TV mode",
}),
m.onOff({
powerOnBehavior: false,
endpointNames: ["clear_angles_settings"],
description: "Clear angle settings",
}),
m.onOff({
powerOnBehavior: false,
endpointNames: ["massage"],
description: "Massage",
}),
m.onOff({
powerOnBehavior: false,
endpointNames: ["anti_snoring"],
description: "Anti snoring mode",
}),
m.onOff({
powerOnBehavior: false,
endpointNames: ["move"],
description: "Move",
}),
m.onOff({
powerOnBehavior: false,
endpointNames: ["stop"],
description: "Stop",
}),
],
configure: async (device, coordinatorEndpoint, logger) => {
const endpoint = device.getEndpoint(1);
await reporting.bind(endpoint, coordinatorEndpoint, ["genBasic", "genOnOff"]);
for (const ep of device.endpoints) {
if ([2, 3, 4, 5, 6].includes(ep.ID)) {
await reporting.bind(ep, coordinatorEndpoint, ["genMultistateInput"]);
}
if ([11, 12].includes(ep.ID)) {
await reporting.bind(ep, coordinatorEndpoint, ["genMultistateOutput"]);
}
}
},
},
{
zigbeeModel: ["Drivent"],
model: "Drivent",
vendor: "Sprut.device",
description: "Drivent window drive",
ota: true,
extend: [
m.deviceAddCustomCluster("closuresWindowCovering", {
name: "closuresWindowCovering",
ID: 258,
attributes: {},
commands: {
resetLimit: { name: "resetLimit", ID: 0x0000, parameters: [] },
openLimit: { name: "openLimit", ID: 0x0001, parameters: [] },
closeLimit: { name: "closeLimit", ID: 0x0002, parameters: [] },
resetBlock: { name: "resetBlock", ID: 0x0003, parameters: [] },
},
commandsResponse: {},
}),
m.windowCovering({ controls: ["lift"] }),
m.enumLookup({
name: "drive_state",
cluster: "closuresWindowCovering",
attribute: { ID: 0x6609, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
lookup: { closing: 0, opening: 1, stopped: 2 },
description: "Drive state",
zigbeeCommandOptions: { manufacturerCode: manufacturerId },
access: "STATE_GET",
}),
m.binary({
name: "blocked_jam",
valueOn: ["ON", true],
valueOff: ["OFF", false],
cluster: "closuresWindowCovering",
attribute: { ID: 0x660a, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
description: "Blocked after 5 jam",
zigbeeCommandOptions: { manufacturerCode: manufacturerId },
access: "STATE_GET",
}),
m.binary({
name: "blocked_many",
valueOn: ["ON", true],
valueOff: ["OFF", false],
cluster: "closuresWindowCovering",
attribute: { ID: 0x660b, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
description: "Blocked after 45 attempts",
zigbeeCommandOptions: { manufacturerCode: manufacturerId },
access: "STATE_GET",
}),
sendCommand({
name: "reset_block",
cluster: "closuresWindowCovering",
command: 0x0003,
description: "Reset block",
}),
m.numeric({
name: "speed",
cluster: "closuresWindowCovering",
attribute: { ID: 0x6606, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
valueMin: 0,
valueMax: 100,
valueStep: 25,
unit: "%",
description: "Speed",
zigbeeCommandOptions: { manufacturerCode: manufacturerId },
access: "ALL",
}),
sendCommand({
name: "open_limit",
cluster: "closuresWindowCovering",
command: 0x0001,
description: "Set open limit",
}),
sendCommand({
name: "close_limit",
cluster: "closuresWindowCovering",
command: 0x0002,
description: "Set close limit",
}),
sendCommand({
name: "reset_limit",
cluster: "closuresWindowCovering",
command: 0x0000,
description: "Reset limits",
}),
m.binary({
name: "calibrate",
valueOn: ["ON", true],
valueOff: ["OFF", false],
cluster: "closuresWindowCovering",
attribute: { ID: 0x6605, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
description: "Calibration",
zigbeeCommandOptions: { manufacturerCode: manufacturerId },
access: "ALL",
}),
m.binary({
name: "wifi",
valueOn: ["ON", true],
valueOff: ["OFF", false],
cluster: 0x6600,
attribute: { ID: 0x6600, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
description: "Enable Wifi AP",
zigbeeCommandOptions: { manufacturerCode: manufacturerId },
access: "ALL",
}),
],
},
];
//# sourceMappingURL=sprut.js.map