mirror of
https://github.com/thejeffreystone/home-assistant-configuration.git
synced 2025-08-20 20:56:44 +00:00
Adding External Converters
This commit is contained in:
64
config/zigbee2mqtt/aqara.js
Executable file
64
config/zigbee2mqtt/aqara.js
Executable file
@@ -0,0 +1,64 @@
|
||||
const exposes = require('zigbee-herdsman-converters/lib/exposes');
|
||||
const fz = {...require('zigbee-herdsman-converters/converters/fromZigbee'), legacy: require('zigbee-herdsman-converters/lib/legacy').fromZigbee};
|
||||
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
|
||||
const ota = require('zigbee-herdsman-converters/lib/ota');
|
||||
const constants = require('zigbee-herdsman-converters/lib/constants');
|
||||
const reporting = require('zigbee-herdsman-converters/lib/reporting');
|
||||
const extend = require('zigbee-herdsman-converters/lib/extend');
|
||||
const e = exposes.presets;
|
||||
const ea = exposes.access;
|
||||
const globalStore = require('zigbee-herdsman-converters/lib/store');
|
||||
|
||||
const xiaomiExtend = {
|
||||
light_onoff_brightness_colortemp: (options={disableColorTempStartup: true}) => ({
|
||||
...extend.light_onoff_brightness_colortemp(options),
|
||||
fromZigbee: extend.light_onoff_brightness_colortemp(options).fromZigbee.concat([
|
||||
fz.xiaomi_bulb_interval, fz.ignore_occupancy_report, fz.ignore_humidity_report,
|
||||
fz.ignore_pressure_report, fz.ignore_temperature_report,
|
||||
]),
|
||||
}),
|
||||
};
|
||||
|
||||
const preventReset = async (type, data, device) => {
|
||||
if (
|
||||
// options.allow_reset ||
|
||||
type !== 'message' ||
|
||||
data.type !== 'attributeReport' ||
|
||||
data.cluster !== 'genBasic' ||
|
||||
!data.data[0xfff0] ||
|
||||
// eg: [0xaa, 0x10, 0x05, 0x41, 0x87, 0x01, 0x01, 0x10, 0x00]
|
||||
!data.data[0xFFF0].slice(0, 5).equals(Buffer.from([0xaa, 0x10, 0x05, 0x41, 0x87]))
|
||||
) {
|
||||
return;
|
||||
}
|
||||
const options = {manufacturerCode: 0x115f};
|
||||
const payload = {[0xfff0]: {
|
||||
value: [0xaa, 0x10, 0x05, 0x41, 0x47, 0x01, 0x01, 0x10, 0x01],
|
||||
type: 0x41,
|
||||
}};
|
||||
await device.getEndpoint(1).write('genBasic', payload, options);
|
||||
};
|
||||
|
||||
module.exports = [
|
||||
{
|
||||
zigbeeModel: ['lumi.motion.ac02'],
|
||||
model: 'RTCGQ14LM',
|
||||
vendor: 'Xiaomi',
|
||||
whiteLabel: [{vendor: 'Xiaomi', model: 'MS-S02'}],
|
||||
description: 'Aqara P1 human body movement and illuminance sensor',
|
||||
fromZigbee: [fz.RTCGQ12LM_occupancy_illuminance, fz.aqara_opple, fz.battery],
|
||||
toZigbee: [tz.aqara_detection_interval, tz.aqara_motion_sensitivity],
|
||||
exposes: [e.occupancy(), e.illuminance().withUnit('lx').withDescription('Measured illuminance in lux'),
|
||||
exposes.enum('motion_sensitivity', ea.ALL, ['low', 'medium', 'high']),
|
||||
exposes.numeric('detection_interval', ea.ALL).withValueMin(2).withValueMax(65535).withUnit('s')
|
||||
.withDescription('Time interval for detecting actions'), e.temperature(), e.battery()],
|
||||
meta: {battery: {voltageToPercentage: '3V_2850_3000_log'}},
|
||||
configure: async (device, coordinatorEndpoint, logger) => {
|
||||
const endpoint = device.getEndpoint(1);
|
||||
await endpoint.read('genPowerCfg', ['batteryVoltage']);
|
||||
await endpoint.read('aqaraOpple', [0x0102], {manufacturerCode: 0x115f});
|
||||
await endpoint.read('aqaraOpple', [0x010c], {manufacturerCode: 0x115f});
|
||||
},
|
||||
ota: ota.zigbeeOTA,
|
||||
},
|
||||
];
|
Reference in New Issue
Block a user