zigbee-herdsman-converters
Version:
Collection of device converters to be used with zigbee-herdsman
120 lines • 5.33 kB
JavaScript
;
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 (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const exposes = __importStar(require("../lib/exposes"));
const iconv = __importStar(require("iconv-lite"));
const logger_1 = require("../lib/logger");
const NS = 'zhc:easyiot';
const ea = exposes.access;
const e = exposes.presets;
const fzLocal = {
easyiot_ir_recv_command: {
cluster: 'tunneling',
type: ['transferDataResp'],
convert: (model, msg, publish, options, meta) => {
logger_1.logger.debug(`"easyiot_ir_recv_command" received (msg:${JSON.stringify(msg.data)})`, NS);
const hexString = msg.data.data.toString('hex');
logger_1.logger.debug(`"easyiot_ir_recv_command" received command ${hexString}`, NS);
return { last_received_command: hexString };
},
},
easyiot_tts_recv_status: {
cluster: 'tunneling',
type: ['transferDataResp'],
convert: (model, msg, publish, options, meta) => {
logger_1.logger.debug(`"easyiot_tts_recv_status" received (msg:${JSON.stringify(msg.data)})`, NS);
const hexString = msg.data.data.toString('hex');
logger_1.logger.debug(`"easyiot_tts_recv_status" received status ${hexString}`, NS);
return { last_received_status: hexString };
},
},
};
const tzLocal = {
easyiot_ir_send_command: {
key: ['send_command'],
convertSet: async (entity, key, value, meta) => {
if (!value) {
throw new Error(`There is no IR code to send`);
}
logger_1.logger.debug(`Sending IR code: ${value}`, NS);
await entity.command('tunneling', 'transferData', {
'tunnelID': 0x0000,
'data': Buffer.from(value, 'hex'),
}, { disableDefaultResponse: true });
logger_1.logger.debug(`Sending IR command success.`, NS);
},
},
easyiot_tts_send_command: {
key: ['send_tts'],
convertSet: async (entity, key, value, meta) => {
if (!value) {
throw new Error(`There is no text to send`);
}
logger_1.logger.debug(`Sending IR code: ${value}`, NS);
const frameHeader = Buffer.from([0xFD]);
const gb2312Buffer = iconv.encode(value, 'GB2312');
const dataLength = gb2312Buffer.length + 2;
const dataLengthBuffer = Buffer.alloc(2);
dataLengthBuffer.writeUInt16BE(dataLength, 0);
const commandByte = Buffer.from([0x01, 0x01]);
const protocolFrame = Buffer.concat([frameHeader, dataLengthBuffer, commandByte, gb2312Buffer]);
await entity.command('tunneling', 'transferData', {
'tunnelID': 0x0000,
'data': protocolFrame,
}, { disableDefaultResponse: true });
logger_1.logger.debug(`Sending IR command success.`, NS);
},
},
};
const definitions = [
{
fingerprint: [{ modelID: 'ZB-IR01', manufacturerName: 'easyiot' }],
model: 'ZB-IR01',
vendor: 'easyiot',
description: 'This is an infrared remote control equipped with a local code library,' +
'supporting devices such as air conditioners, televisions, projectors, and more.',
fromZigbee: [fzLocal.easyiot_ir_recv_command],
toZigbee: [tzLocal.easyiot_ir_send_command],
exposes: [
e.text('last_received_command', ea.STATE).withDescription('Received infrared control command'),
e.text('send_command', ea.SET).withDescription('Send infrared control command'),
],
},
{
fingerprint: [{ modelID: 'ZB-TTS01', manufacturerName: 'easyiot' }],
model: 'ZB-TTS01',
vendor: 'easyiot',
description: 'This is a Simplified Chinese (GB2312) TTS converter that can convert GB2312 encoded text to speech',
fromZigbee: [fzLocal.easyiot_tts_recv_status],
toZigbee: [tzLocal.easyiot_tts_send_command],
exposes: [
e.text('last_received_status', ea.STATE).withDescription('status'),
e.text('send_tts', ea.SET).withDescription('Please enter text'),
],
},
];
exports.default = definitions;
module.exports = definitions;
//# sourceMappingURL=easyiot.js.map