zigbee-herdsman-converters
Version:
Collection of device converters to be used with zigbee-herdsman
1,240 lines • 50.5 kB
TypeScript
import type { MiboxerZone } from "zigbee-herdsman/dist/zspec/zcl/definition/tstype";
import * as exposes from "./exposes";
import * as modernExtend from "./modernExtend";
import type { Expose, Fz, KeyValue, KeyValueAny, ModernExtend, Publish, Range, Tuya, Tz, Zh } from "./types";
export interface TuyaClosuresWindowCovering {
attributes: {
tuyaMovingState: number;
tuyaCalibration: number;
tuyaMotorReversal: number;
moesCalibrationTime: number;
};
commands: never;
commandResponses: never;
}
export interface TuyaGenBasic {
attributes: never;
commands: {
tuyaSetup: Record<string, never>;
};
commandResponses: never;
}
export interface TuyaGenGroups {
attributes: never;
commands: {
miboxerSetZones: {
zones: MiboxerZone[];
};
};
commandResponses: never;
}
export interface TuyaGenOnOff {
attributes: {
tuyaBacklightSwitch: number;
tuyaBacklightMode: number;
moesStartUpOnOff: number;
tuyaOperationMode: number;
};
commands: {
tuyaCountdown: {
data: Buffer;
};
tuyaAction2: {
value: number;
};
tuyaAction: {
value: number;
data: Buffer;
};
};
commandResponses: never;
}
export interface TuyaGenLevelCtrl {
attributes: never;
commands: {
moveToLevelTuya: {
level: number;
transtime: number;
};
};
commandResponses: never;
}
export interface TuyaLightingColorCtrl {
attributes: {
tuyaRgbMode: number;
tuyaBrightness: number;
};
commands: {
tuyaMoveToHueAndSaturationBrightness: {
hue: number;
saturation: number;
transtime: number;
brightness: number;
};
tuyaSetMinimumBrightness: {
minimum: number;
};
tuyaMoveToHueAndSaturationBrightness2: {
hue: number;
saturation: number;
brightness: number;
};
tuyaRgbMode: {
enable: number;
};
tuyaOnStartUp: {
mode: number;
data: number[];
};
tuyaDoNotDisturb: {
enable: number;
};
tuyaOnOffTransitionTime: {
unknown: number;
onTransitionTime: number;
offTransitionTime: number;
};
};
commandResponses: never;
}
export interface ManuSpecificTuya2 {
attributes: {
alarmTemperatureMax: number;
alarmTemperatureMin: number;
alarmHumidityMax: number;
alarmHumidityMin: number;
alarmHumidity: number;
alarmTemperature: number;
unknown: number;
};
commands: never;
commandResponses: never;
}
export interface ManuSpecificTuya3 {
attributes: {
powerOnBehavior: number;
switchMode: number;
switchType: number;
};
commands: {
setOptions1: {
data: Buffer;
};
setOptions2: {
data: Buffer;
};
setOptions3: {
data: Buffer;
};
};
commandResponses: never;
}
interface Tuya4 {
attributes: {
random_timing: string;
cycle_timing: string;
inching: string;
};
commands: {
setRandomTiming: {
payload: Buffer;
};
setCycleTiming: {
payload: Buffer;
};
setInchingSwitch: {
payload: Buffer;
};
};
commandResponses: never;
}
export declare const dataTypes: {
raw: number;
bool: number;
number: number;
string: number;
enum: number;
bitmap: number;
};
export interface TuyaWeatherCondition {
sunny?: number;
heavy_rain?: number;
cloudy?: number;
sandstorm?: number;
light_snow?: number;
snow?: number;
freezing_fog?: number;
rainstorm?: number;
shower?: number;
dust?: number;
spit?: number;
sleet?: number;
yin?: number;
freezing_rain?: number;
rain?: number;
fog?: number;
heavy_shower?: number;
heavy_snow?: number;
heavy_downpour?: number;
blizzard?: number;
hailstone?: number;
snow_shower?: number;
haze?: number;
thunder_shower?: number;
floating_dust?: number;
thunder_and_lighting?: number;
dust_storm?: number;
light_shower?: number;
rain_and_snow?: number;
dust_bowl?: number;
ice_pellets?: number;
strong_dust_storms?: number;
sandy?: number;
light_to_moderate_rain?: number;
mostly_sunny?: number;
very_heavy_rain?: number;
ice_pod?: number;
light_to_moderate_snow?: number;
few_clouds?: number;
light_snow_showers?: number;
moderate_snow?: number;
icy_needles?: number;
thunderstorm_with_ice_pods?: number;
light_rain?: number;
thunder?: number;
moderate_rain?: number;
thunderstorm?: number;
moderate_to_heavy_rain?: number;
}
export declare const M8ProTuyaWeatherCondition: TuyaWeatherCondition;
export declare const F3ProTuyaWeatherCondition: TuyaWeatherCondition;
export declare enum TuyaWeatherID {
Temperature = 1,
Humidity = 2,
Condition = 3
}
export type ThermostatSchedule = KeyValue & {
enabled: boolean;
work_mode: "cooling" | "heating";
temperature_f: number;
start: {
hour: number;
minute: number;
};
end: {
hour: number;
minute: number;
};
week_days: {
sunday: boolean;
monday: boolean;
tuesday: boolean;
wednesday: boolean;
thursday: boolean;
friday: boolean;
saturday: boolean;
};
};
export declare function convertBufferToNumber(chunks: Buffer | number[]): number;
export declare function convertDecimalValueTo4ByteHexArray(value: number): number[];
export declare function dpValueFromString(dp: number, string: string): {
dp: number;
datatype: number;
data: Buffer<ArrayBuffer>;
};
export declare function sendDataPointValue(entity: Zh.Group | Zh.Endpoint, dp: number, value: number, cmd?: string, seq?: number): Promise<number>;
export declare function sendDataPointBool(entity: Zh.Group | Zh.Endpoint, dp: number, value: boolean, cmd?: string, seq?: number): Promise<number>;
export declare function sendDataPointEnum(entity: Zh.Group | Zh.Endpoint, dp: number, value: number, cmd?: string, seq?: number): Promise<number>;
export declare function sendDataPointRaw(entity: Zh.Group | Zh.Endpoint, dp: number, value: Buffer, cmd?: string, seq?: number): Promise<number>;
export declare function sendDataPointBitmap(entity: Zh.Group | Zh.Endpoint, dp: number, value: number, cmd?: string, seq?: number): Promise<number>;
export declare function sendDataPointStringBuffer(entity: Zh.Group | Zh.Endpoint, dp: number, value: string, cmd?: string, seq?: number): Promise<number>;
declare const tuyaExposes: {
lightType: () => exposes.Enum;
lightBrightnessWithMinMax: () => exposes.Light;
lightBrightness: () => exposes.Light;
countdown: () => exposes.Numeric;
countdown_min: () => exposes.Numeric;
on_with_countdown: () => exposes.Numeric;
countdown_left: () => exposes.Numeric;
single_watering_duration: () => exposes.Numeric;
flow_switch: () => exposes.Binary;
quantitative_watering: () => exposes.Numeric;
single_watering_amount: () => exposes.Numeric;
surplus_flow: () => exposes.Numeric;
water_total: () => exposes.Numeric;
water_current: () => exposes.Numeric;
water_total_reset: () => exposes.Enum;
refresh: () => exposes.Enum;
status_sprinkler: () => exposes.Enum;
switch: () => exposes.Switch;
selfTest: () => exposes.Binary;
selfTestResult: () => exposes.Enum;
fault: () => exposes.Binary;
faultAlarm: () => exposes.Binary;
silence: () => exposes.Binary;
frostProtection: (extraNote?: string) => exposes.Binary;
errorStatus: () => exposes.Numeric;
scheduleAllDays: (access: number, example: string) => exposes.Text[];
temperatureUnit: () => exposes.Enum;
temperatureCalibration: () => exposes.Numeric;
humidityCalibration: () => exposes.Numeric;
soilCalibration: () => exposes.Numeric;
temperatureSampling: () => exposes.Numeric;
soilSampling: () => exposes.Numeric;
soilWarning: () => exposes.Numeric;
gasValue: () => exposes.Numeric;
energyWithPhase: (phase: string) => exposes.Numeric;
energyProducedWithPhase: (phase: string) => exposes.Numeric;
energyFlowWithPhase: (phase: string, more: [string]) => exposes.Enum;
voltageWithPhase: (phase: string) => exposes.Numeric;
powerWithPhase: (phase: string) => exposes.Numeric;
currentWithPhase: (phase: string) => exposes.Numeric;
powerFactorWithPhase: (phase: string) => exposes.Numeric;
switchType: () => exposes.Enum;
switchTypeCurtain: () => exposes.Enum;
switchTypeButton: () => exposes.Enum;
backlightModeLowMediumHigh: () => exposes.Enum;
backlightModeOffNormalInverted: () => exposes.Enum;
backlightModeOffOn: () => exposes.Binary;
indicatorMode: () => exposes.Enum;
indicatorModeNoneRelayPos: () => exposes.Enum;
powerOutageMemory: () => exposes.Enum;
batteryState: () => exposes.Enum;
doNotDisturb: () => exposes.Binary;
colorPowerOnBehavior: () => exposes.Enum;
powerOnBehavior: () => exposes.Enum;
switchMode: () => exposes.Enum;
switchMode2: () => exposes.Enum;
lightMode: () => exposes.Enum;
inchingSwitch: (quantity: number) => exposes.Composite;
};
export { tuyaExposes as exposes };
export declare const skip: {
stateOnAndBrightnessPresent: (meta: Tz.Meta) => boolean;
};
export declare const configureMagicPacket: (device: Zh.Device, coordinatorEndpoint: Zh.Endpoint) => Promise<void>;
export declare const configureQuery: (device: Zh.Device, coordinatorEndpoint: Zh.Endpoint) => Promise<void>;
export declare const configureMcuVersionRequest: (device: Zh.Device, coordinatorEndpoint: Zh.Endpoint) => Promise<void>;
export declare const configureBindBasic: (device: Zh.Device, coordinatorEndpoint: Zh.Endpoint) => Promise<void>;
export declare const fingerprint: (modelID: string, manufacturerNames: string[]) => {
modelID: string;
manufacturerName: string;
}[];
export declare const whitelabel: (vendor: string, model: string, description: string, manufacturerNames: string[]) => {
vendor: string;
model: string;
description: string;
fingerprint: {
manufacturerName: string;
}[];
};
declare class Base {
value: number;
constructor(value: number);
valueOf(): number;
}
export declare class Enum extends Base {
}
declare const enumConstructor: (value: number) => Enum;
export { enumConstructor as enum };
export declare const BacklightColorEnum: {
readonly red: Enum;
readonly blue: Enum;
readonly green: Enum;
readonly white: Enum;
readonly yellow: Enum;
readonly magenta: Enum;
readonly cyan: Enum;
readonly warm_white: Enum;
};
export declare class Bitmap extends Base {
}
type LookupMap = {
[s: string]: number | boolean | Enum | string;
};
export declare const valueConverterBasic: {
lookup: (map: LookupMap | ((options: KeyValue, device: Zh.Device) => LookupMap), fallbackValue?: number | boolean | KeyValue | string | null) => {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
scale: (min1: number, max1: number, min2: number, max2: number) => {
to: (v: number) => number;
from: (v: number) => number;
};
raw: () => {
to: (v: string | number | boolean) => string | number | boolean;
from: (v: string | number | boolean) => string | number | boolean;
};
divideBy: (value: number) => {
to: (v: number) => number;
from: (v: number) => number;
};
multiplyBy: (value: number) => {
to: (v: number) => number;
from: (v: number) => number;
};
divideByFromOnly: (value: number) => {
to: (v: number) => number;
from: (v: number) => number;
};
divideByWithLimits: (value: number, min: number, max: number) => {
to: (v: number) => number;
from: (v: number) => number;
};
trueFalse: (valueTrue: number | Enum) => {
from: (v: number) => boolean;
};
};
export declare const valueConverter: {
trueFalse0: {
from: (v: number) => boolean;
};
trueFalse1: {
from: (v: number) => boolean;
};
trueFalseInvert: {
to: (v: boolean) => boolean;
from: (v: boolean) => boolean;
};
trueFalseEnum0: {
from: (v: number) => boolean;
};
trueFalseEnum1: {
from: (v: number) => boolean;
};
onOff: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
powerOnBehavior: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
powerOnBehaviorEnum: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
switchType: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
switchTypeCurtain: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
switchTypeButton: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
switchType2: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
backlightModeOffNormalInverted: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
backlightModeOffLowMediumHigh: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
lightType: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
countdown: {
to: (v: string | number | boolean) => string | number | boolean;
from: (v: string | number | boolean) => string | number | boolean;
};
scale0_254to0_1000: {
to: (v: number) => number;
from: (v: number) => number;
};
scale0_1to0_1000: {
to: (v: number) => number;
from: (v: number) => number;
};
temperatureUnit: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
temperatureUnitEnum: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
batteryState: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
divideBy2: {
to: (v: number) => number;
from: (v: number) => number;
};
divideBy10: {
to: (v: number) => number;
from: (v: number) => number;
};
divideBy100: {
to: (v: number) => number;
from: (v: number) => number;
};
divideBy1000: {
to: (v: number) => number;
from: (v: number) => number;
};
multiplyBy10: {
to: (v: number) => number;
from: (v: number) => number;
};
divideBy10FromOnly: {
to: (v: number) => number;
from: (v: number) => number;
};
switchMode: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
switchMode2: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
lightMode: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
raw: {
to: (v: string | number | boolean) => string | number | boolean;
from: (v: string | number | boolean) => string | number | boolean;
};
fault: {
from: (v: Bitmap) => boolean;
};
localTemperatureCalibration: {
from: (value: number) => number;
to: (value: number) => number;
};
localTemperatureCalibration_256: {
from: (value: number) => number;
to: (value: number) => number;
};
refresh: {
to: (v: string) => v is "refresh";
from: () => string;
};
waterConsumption: {
from: (v: string) => number;
};
setLimit: {
to: (v: number) => number;
from: (v: number) => number;
};
coverPosition: {
to: (v: number, meta: Tz.Meta) => number;
from: (v: number, meta: Fz.Meta, options: KeyValue, publish: Publish) => number;
};
coverPositionInverted: {
to: (v: number, meta: Tz.Meta) => number;
from: (v: number, meta: Fz.Meta, options: KeyValue, publish: Publish) => number;
};
tubularMotorDirection: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
plus1: {
from: (v: number) => number;
to: (v: number) => number;
};
static: (value: string | number) => {
from: (v: string | number) => string | number;
};
phaseVariant1: {
from: (v: string) => {
voltage: number;
current: number;
};
};
phaseVariant2: {
from: (v: string) => {
voltage: number;
current: number;
power: number;
};
};
phaseVariant2WithPhase: (phase: string) => {
from: (v: string) => {
[x: string]: number;
};
};
phaseVariant3: {
from: (v: string) => {
voltage: number;
current: number;
power: number;
};
};
power: {
from: (v: number) => number;
};
threshold: {
from: (v: string) => {
threshold_1_protection: unknown;
threshold_1: unknown;
threshold_1_value: number;
threshold_2_protection: unknown;
threshold_2: unknown;
threshold_2_value: number;
};
};
threshold_2: {
to: (v: number, meta: Tz.Meta) => Promise<void>;
from: (v: string) => KeyValue;
};
threshold_3: {
to: (v: number, meta: Tz.Meta) => Promise<void>;
from: (v: string) => KeyValue;
};
selfTestResult: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
lockUnlock: {
to: (v: string, meta: Tz.Meta) => string | number | boolean | Enum;
from: (v: number, _meta: Fz.Meta, options: KeyValue) => string | number | boolean | KeyValue;
};
localTempCalibration1: {
from: (v: number) => number;
to: (v: number) => number;
};
localTempCalibration2: {
from: (v: number) => number;
to: (v: number) => number;
};
localTempCalibration3: {
from: (v: number) => number;
to: (v: number) => number;
};
thermostatHolidayStartStop: {
from: (v: string) => string;
to: (v: string) => string;
};
thermostatHolidayStartStopUnixTS: {
from: (v: number[]) => string;
to: (v: string) => number[];
};
thermostatScheduleDaySingleDP: {
from: (v: number[]) => string;
to: (v: KeyValue, meta: Tz.Meta) => unknown[];
};
thermostatScheduleDayMultiDP: {
from: (v: string) => string;
to: (v: string) => number[];
};
thermostatScheduleDayMultiDPWithTransitionCount: (transitionCount?: number) => {
from: (v: string) => string;
to: (v: string) => number[];
};
thermostatScheduleDayMultiDPWithDayNumber: (dayNum: number, transitionCount?: number) => {
from: (v: string) => string;
to: (v: string) => number[];
};
thermostatScheduleDayMultiDP_TRV602Z: {
from: (v: string) => string;
to: (v: string) => number[];
};
thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber: (dayNum: number) => {
from: (v: string) => string;
to: (v: string) => number[];
};
thermostatScheduleDayMultiDP_TRV603WZ: {
from: (v: number[]) => string;
to: (v: string) => number[];
};
thermostatSchedule: {
from: (value: string) => ThermostatSchedule[];
to: (schedules: ThermostatSchedule[]) => string;
};
tv02Preset: () => {
from: (v: number) => "manual" | "auto" | "holiday";
to: (v: string, meta: Tz.Meta) => Enum;
};
/** @deprecated left for compatibility, use {@link thermostatSystemModeAndPresetMap} */
thermostatSystemModeAndPreset: (toKey: string) => {
from: (v: string) => {
preset: string;
system_mode: string;
};
to: (v: string) => Enum;
};
ZWT198_schedule: {
from: (value: number[], meta: Fz.Meta, options: KeyValue) => {
schedule_weekday: string;
schedule_holiday: string;
};
to: (v: string, meta: Tz.Meta) => Promise<void>;
};
PO_BOCO_ELEC_schedule: (day: number) => {
to: (v: string) => number[];
from: (v: number[]) => string;
};
PO_BOCO_ELEC_holiday: {
to: (v: string) => number[];
from: (v: number[]) => string;
};
TV02SystemMode: {
to: (v: number, meta: Tz.Meta) => Promise<void>;
from: (v: boolean) => {
system_mode: string;
heating_stop: string;
};
};
TV02FrostProtection: {
to: (v: unknown, meta: Tz.Meta) => Promise<void>;
from: (v: unknown) => {
frost_protection: string;
};
};
inverse: {
to: (v: boolean) => boolean;
from: (v: boolean) => boolean;
};
onOffNotStrict: {
from: (v: string) => "ON" | "OFF";
to: (v: string) => v is "ON";
};
errorOrBatteryLow: {
from: (v: number) => {
battery_low: boolean;
error?: undefined;
} | {
error: number;
battery_low?: undefined;
};
};
inchingSwitch: {
to: (value: KeyValueAny) => string;
from: (value: string) => KeyValue;
};
/** @param toMap the key is 'system_mode' or 'preset' related value */
thermostatSystemModeAndPresetMap: ({ fromMap, toMap, }: {
fromMap?: {
[modeId: number]: {
deviceMode: string;
systemMode: string;
preset: string;
};
};
toMap?: {
[key: string]: Enum;
};
}) => {
from: (v: string) => {
running_mode: string;
system_mode: string;
preset: string;
};
to: (v: string) => Enum;
};
utf16BEHexString: {
to: (v: string) => string;
from: (hex?: string) => string;
};
};
declare const tuyaTz: {
power_on_behavior_1: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
[x: string]: unknown;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
power_on_behavior_2: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
[x: string]: unknown;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
switch_type: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
[x: string]: unknown;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
switch_type_curtain: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
[x: string]: unknown;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
switch_type_button: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
[x: string]: unknown;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
backlight_indicator_mode_1: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
[x: string]: unknown;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
backlight_indicator_mode_2: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
[x: string]: unknown;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
backlight_indicator_mode_none_relay_pos: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
[x: string]: unknown;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
child_lock: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<void>;
};
min_brightness_attribute: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
min_brightness: number;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
min_brightness_command: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
min_brightness: number;
};
}>;
};
color_power_on_behavior: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
color_power_on_behavior: unknown;
};
}>;
};
datapoints: {
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: KeyValue;
}>;
};
do_not_disturb: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
do_not_disturb: unknown;
};
}>;
};
on_off_countdown: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: KeyValue;
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
inchingSwitch: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
inching_control_set: unknown;
};
}>;
};
cover_calibration: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
[x: string]: unknown;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
operation_mode: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
operation_mode: string;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
TS110E_onoff_brightness: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<Tz.ConvertSetResult>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
cover_reversal: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
motor_reversal: unknown;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
moes_cover_calibration: {
key: string[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: {
calibration_time: number;
};
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
led_control: {
key: string[];
options: exposes.Binary[];
convertSet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, value: unknown, meta: Tz.Meta) => Promise<{
state: KeyValueAny;
}>;
convertGet: (entity: import("zigbee-herdsman/dist/controller/model").Group | import("zigbee-herdsman/dist/controller/model").Endpoint, key: string, meta: Tz.Meta) => Promise<void>;
};
};
export { tuyaTz as tz };
declare const tuyaFz: {
brightness: {
cluster: "genLevelCtrl";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genLevelCtrl", undefined, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
[x: string]: number;
};
};
power_on_behavior_1: {
cluster: "genOnOff";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
[x: string]: unknown;
};
};
power_on_behavior_2: {
cluster: "manuSpecificTuya3";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"manuSpecificTuya3", ManuSpecificTuya3, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
[x: string]: unknown;
};
};
power_outage_memory: {
cluster: "genOnOff";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
[x: string]: unknown;
};
};
switch_type: {
cluster: "manuSpecificTuya3";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"manuSpecificTuya3", ManuSpecificTuya3, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
switch_type: unknown;
};
};
switch_type_curtain: {
cluster: "manuSpecificTuya3";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"manuSpecificTuya3", ManuSpecificTuya3, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
switch_type_curtain: unknown;
};
};
switch_type_button: {
cluster: "manuSpecificTuya3";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"manuSpecificTuya3", ManuSpecificTuya3, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
switch_type_button: unknown;
};
};
backlight_mode_low_medium_high: {
cluster: "genOnOff";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
backlight_mode: unknown;
};
};
backlight_mode_off_normal_inverted: {
cluster: "genOnOff";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
backlight_mode: string;
};
};
backlight_mode_off_on: {
cluster: "genOnOff";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
backlight_mode: string;
};
};
indicator_mode: {
cluster: "genOnOff";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
indicator_mode: string;
};
};
indicator_mode_none_relay_pos: {
cluster: "genOnOff";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
indicator_mode: string;
};
};
child_lock: {
cluster: "genOnOff";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", undefined, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
child_lock: string;
};
};
min_brightness_attribute: {
cluster: "genLevelCtrl";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genLevelCtrl", undefined, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
[x: string]: number;
};
};
datapoints: {
cluster: "manuSpecificTuya";
type: ["commandDataResponse", "commandDataReport", "commandActiveStatusReport", "commandActiveStatusReportAlt"];
convert: (model: import("./types").Definition, msg: Fz.Message<"manuSpecificTuya", undefined, ["commandDataResponse", "commandDataReport", "commandActiveStatusReport", "commandActiveStatusReportAlt"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => KeyValue;
};
on_off_action: {
cluster: "genOnOff";
type: "commandTuyaAction";
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, "commandTuyaAction">, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
action: string;
};
};
on_off_countdown: {
cluster: "genOnOff";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", undefined, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => KeyValue;
};
inchingSwitch: {
cluster: "manuSpecificTuya4";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"manuSpecificTuya4", Tuya4, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => KeyValue;
};
TS011F_electrical_measurement: {
convert: (model: import("./types").Definition, msg: Fz.Message<"haElectricalMeasurement", undefined, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => KeyValueAny;
cluster: "haElectricalMeasurement";
type: ["attributeReport", "readResponse"];
options?: import("./types").Option[] | ((definition: import("./types").Definition) => import("./types").Option[]);
};
cover_options: {
cluster: "closuresWindowCovering";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"closuresWindowCovering", TuyaClosuresWindowCovering, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => KeyValueAny;
};
cover_options_2: {
cluster: "closuresWindowCovering";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"closuresWindowCovering", TuyaClosuresWindowCovering, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => KeyValueAny;
};
operation_mode: {
cluster: "genOnOff";
type: ["attributeReport", "readResponse"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
operation_mode: any;
};
};
switch_scene: {
cluster: "genOnOff";
type: "commandTuyaAction";
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, "commandTuyaAction">, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
action: string;
action_scene: number;
};
};
multi_action: {
cluster: "genOnOff";
type: ["commandTuyaAction", "commandTuyaAction2"];
convert: (model: import("./types").Definition, msg: Fz.Message<"genOnOff", TuyaGenOnOff, ["commandTuyaAction", "commandTuyaAction2"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => {
action: any;
};
};
led_controller: {
cluster: "lightingColorCtrl";
type: ["attributeReport", "readResponse"];
options: exposes.Binary[];
convert: (model: import("./types").Definition, msg: Fz.Message<"lightingColorCtrl", TuyaLightingColorCtrl, ["attributeReport", "readResponse"]>, publish: Publish, options: KeyValue, meta: Fz.Meta) => KeyValueAny;
};
};
export { tuyaFz as fz };
export declare function getHandlersForDP(name: string, dp: number, type: number, converter: Tuya.ValueConverterSingle, readOnly?: boolean, skip?: (meta: Tz.Meta) => boolean, endpoint?: string, useGlobalSequence?: boolean): [Fz.Converter<"manuSpecificTuya", undefined, any>[], Tz.Converter[]];
export interface TuyaDPEnumLookupArgs {
name: string;
dp: number;
type?: number;
lookup?: KeyValue;
description?: string;
readOnly?: boolean;
endpoint?: string;
skip?: (meta: Tz.Meta) => boolean;
expose?: Expose;
}
export interface TuyaDPBinaryArgs {
name: string;
dp: number;
type: number;
valueOn: [string | boolean, unknown];
valueOff: [string | boolean, unknown];
description?: string;
readOnly?: boolean;
endpoint?: string;
skip?: (meta: Tz.Meta) => boolean;
expose?: Expose;
}
export interface TuyaDPNumericArgs {
name: string;
dp: number;
type: number;
description?: string;
readOnly?: boolean;
endpoint?: string;
unit?: string;
skip?: (meta: Tz.Meta) => boolean;
valueMin?: number;
valueMax?: number;
valueStep?: number;
scale?: number | [number, number, number, number];
expose?: exposes.Numeric;
}
export interface TuyaDPLightArgs {
state: {
dp: number;
type: number;
valueOn: [string | boolean, unknown];
valueOff: [string | boolean, unknown];
skip?: (meta: Tz.Meta) => boolean;
};
brightness: {
dp: number;
type: number;
scale?: number | [number, number, number, number];
};
max?: {
dp: number;
type: number;
scale?: number | [number, number, number, number];
};
min?: {
dp: number;
type: number;
scale?: number | [number, number, number, number];
};
colorTemp?: {
dp: number;
type: number;
range: Range;
scale?: number | [number, number, number, number];
};
endpoint?: string;
}
declare const tuyaModernExtend: {
electricityMeasurementPoll(args?: {
electricalMeasurement?: false | ((device: Zh.Device) => boolean);
metering?: true | ((device: Zh.Device) => boolean);
optionDescription?: string;
}): ModernExtend;
dpTHZBSettings(): ModernExtend;
tuyaBase(args?: {
dp?: true;
queryOnDeviceAnnounce?: true;
queryOnConfigure?: true;
bindBasicOnConfigure?: true;
queryIntervalSeconds?: number;
respondToMcuVersionResponse?: true;
mcuVersionRequestOnConfigure?: true;
forceTimeUpdates?: true;
timeStart?: "2000" | "1970";
}): ModernExtend;
dpEnumLookup(args: Partial<TuyaDPEnumLookupArgs>): ModernExtend;
dpBinary(args: Partial<TuyaDPBinaryArgs>): ModernExtend;
dpNumeric(args: Partial<TuyaDPNumericArgs>): ModernExtend;
dpLight(args: TuyaDPLightArgs): ModernExtend;
dpTemperature(args?: Partial<TuyaDPNumericArgs>): ModernExtend;
dpHumidity(args?: Partial<TuyaDPNumericArgs>): ModernExtend;
dpBattery(args?: Partial<TuyaDPNumericArgs>): ModernExtend;
dpBatteryState(args?: Partial<TuyaDPEnumLookupArgs>): ModernExtend;
dpTemperatureUnit(args?: Partial<TuyaDPEnumLookupArgs>): ModernExtend;
dpContact(args?: Partial<TuyaDPBinaryArgs>, invert?: boolean): ModernExtend;
dpAction(args?: Partial<TuyaDPEnumLookupArgs>): ModernExtend;
dpIlluminance(args?: Partial<TuyaDPNumericArgs>): ModernExtend;
dpGas(args?: Partial<TuyaDPBinaryArgs>, invert?: boolean): ModernExtend;
dpOnOff(args?: Partial<TuyaDPBinaryArgs>): ModernExtend;
dpPowerOnBehavior(args?: Partial<TuyaDPEnumLookupArgs>): ModernExtend;
tuyaLight(args?: modernExtend.LightArgs & {
minBrightness?: "none" | "attribute" | "command";
switchType?: boolean;
doNotDisturb?: boolean;
colorPowerOnBehavior?: boolean;
}): ModernExtend;
tuyaOnOff: (args?: {
endpoints?: string[];
powerOutageMemory?: boolean | ((manufacturerName: string) => boolean);
powerOnBehavior2?: boolean | ((manufacturerName: string) => boolean);
powerOnBehavior3?: boolean;
switchType?: boolean | ((manufacturerName: string) => boolean);
switchTypeCurtain?: boolean;
switchTypeButton?: boolean;
backlightModeLowMediumHigh?: boolean;
indicatorMode?: boolean | ((manufacturerName: string) => boolean);
indicatorModeNoneRelayPos?: boolean;
backlightModeOffNormalInverted?: boolean;
backlightModeOffOn?: boolean | ((manufacturerName: string) => boolean);
electricalMeasurements?: boolean;
electricalMeasurementsFzConverter?: Fz.Converter<"haElectricalMeasurement", undefined, any>;
childLock?: boolean | ((manufacturerName: string) => boolean);
switchMode?: boolean;
onOffCountdown?: boolean | ((manufacturerName: string) => boolean);
inchingSwitch?: boolean | ((manufacturerName: string) => boolean);
}) => ModernExtend;
dpBacklightMode(args?: Partial<TuyaDPEnumLookupArgs>): ModernExtend;
combineActions(actions: ModernExtend[]): ModernExtend;
tuyaSwitchMode: (args?: Partial<modernExtend.EnumLookupArgs<"manuSpecificTuya3">>) => ModernExtend;
tuyaLedIndicator(): ModernExtend;
tuyaMagicPacket(): ModernExtend;
tuyaOnOffAction(args?: Partial<modernExtend.ActionEnumLookupArgs<"genOnOff">>): ModernExtend;
tuyaOnOffActionLegacy(args: {
actions: ("single" | "double" | "hold")[];
endpointNames?: string[];
}): ModernExtend;
dpChildLock(args?: Partial<TuyaDPBinaryArgs>): ModernExtend;
tuyaWeatherForecast(args?: {
includeCurrentWeather?: boolean;
numberOfForecastDays?: number;
correctForNegativeValues?: boolean;
weatherConditionMap?: TuyaWeatherCondition;
}): ModernExtend;
};
export { tuyaModernExtend as modernExtend };
declare const tuyaClusters: {
addTuyaClosuresWindowCoveringCluster: () => ModernExtend;
addTuyaGenB