/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ /*** THIS FILE IS GENERATED, DO NOT EDIT ***/ import { IdentifyServer as BaseIdentifyServer } from "../behaviors/identify/IdentifyServer.js"; import { GroupsServer as BaseGroupsServer } from "../behaviors/groups/GroupsServer.js"; import { OnOffServer as BaseOnOffServer } from "../behaviors/on-off/OnOffServer.js"; import { LevelControlServer as BaseLevelControlServer } from "../behaviors/level-control/LevelControlServer.js"; import { ScenesManagementServer as BaseScenesManagementServer } from "../behaviors/scenes-management/ScenesManagementServer.js"; import { OccupancySensingClient as BaseOccupancySensingClient } from "../behaviors/occupancy-sensing/OccupancySensingClient.js"; import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js"; import { SupportedBehaviors } from "../endpoint/properties/SupportedBehaviors.js"; import { Identity } from "@matter/general"; /** * A Mounted Dimmable Load Control is a fixed device that provides power to a load connected to it, and is capable of * being switched on or off and have its level adjusted. The Mounted Dimmable Load Control is typically used to control * a conventional non-communicating light through its mains connection using phase cutting. * * This device type is intended for any wall-mounted or hardwired dimmer-capable load controller, while Dimmable Plug-In * Unit is intended only for dimmer-capable smart plugs that are not permanently connected, and which can be unplugged * from their power source. * * > [!NOTE] * * > NOTE: Since this device type was added in Matter 1.4, for endpoints using this device type it is recommended to add * the subset device type Dimmable Plug-In Unit to the DeviceTypeList of the Descriptor cluster on the same endpoint * for backward compatibility with existing clients. See Dimmable Plug-In Unit client guidance for additional * information, regarding the inclusion of these two device types. * * @see {@link MatterSpecification.v161.Device} ยง 5.4 */ export interface MountedDimmableLoadControlDevice extends Identity {} export namespace MountedDimmableLoadControlRequirements { /** * The Identify cluster is required by the Matter specification. * * This version of {@link IdentifyServer} is specialized per the specification. */ export const IdentifyServer = BaseIdentifyServer.alter({ commands: { triggerEffect: { optional: false } } }); /** * The Groups cluster is required by the Matter specification. * * We provide this alias to the default implementation {@link GroupsServer} for convenience. */ export const GroupsServer = BaseGroupsServer; /** * The OnOff cluster is required by the Matter specification. * * This version of {@link OnOffServer} is specialized per the specification. */ export const OnOffServer = BaseOnOffServer.with("Lighting"); /** * The LevelControl cluster is required by the Matter specification. * * This version of {@link LevelControlServer} is specialized per the specification. */ export const LevelControlServer = BaseLevelControlServer .with("OnOff", "Lighting") .alter({ attributes: { currentLevel: { min: 1, max: 254 }, minLevel: { min: 1, max: 1, default: 1 }, maxLevel: { min: 254, max: 254, default: 254 } } }); /** * The ScenesManagement cluster is required by the Matter specification. * * This version of {@link ScenesManagementServer} is specialized per the specification. */ export const ScenesManagementServer = BaseScenesManagementServer .alter({ commands: { copyScene: { optional: false } } }); /** * The OccupancySensing cluster is optional per the Matter specification. * * We provide this alias to the default implementation {@link OccupancySensingClient} for convenience. */ export const OccupancySensingClient = BaseOccupancySensingClient; /** * An implementation for each server cluster supported by the endpoint per the Matter specification. */ export const server = { mandatory: { Identify: IdentifyServer, Groups: GroupsServer, OnOff: OnOffServer, LevelControl: LevelControlServer, ScenesManagement: ScenesManagementServer } }; /** * A definition for each client cluster supported by the endpoint per the Matter specification. */ export const client = { optional: { OccupancySensing: OccupancySensingClient } }; } export const MountedDimmableLoadControlDeviceDefinition = MutableEndpoint({ name: "MountedDimmableLoadControl", deviceType: 0x110, deviceRevision: 3, requirements: MountedDimmableLoadControlRequirements, behaviors: SupportedBehaviors( MountedDimmableLoadControlRequirements.server.mandatory.Identify, MountedDimmableLoadControlRequirements.server.mandatory.Groups, MountedDimmableLoadControlRequirements.server.mandatory.OnOff, MountedDimmableLoadControlRequirements.server.mandatory.LevelControl, MountedDimmableLoadControlRequirements.server.mandatory.ScenesManagement ) }); Object.freeze(MountedDimmableLoadControlDeviceDefinition); export const MountedDimmableLoadControlDevice: MountedDimmableLoadControlDevice = MountedDimmableLoadControlDeviceDefinition;