interface WindowCoveringBehavior {
    [reference]: Datasource<StateType>;
    agent: Agent;
    cluster: never;
    context: ActionContext;
    endpoint: Endpoint<Empty>;
    env: Environment;
    events: EventEmitter & Omit<ClusterEvents<Of<{
        attributes: {};
        commands: {};
        events: {};
        id: 0;
        name: "Unknown";
        revision: 0;
    }>, typeof ClusterBehavior>, never> & {
        configStatus$Changing: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
            liftEncoderControlled: BitFlag;
            liftMovementReversed: BitFlag;
            liftPositionAware: BitFlag;
            onlineReserved: BitFlag;
            operational: BitFlag;
            tiltEncoderControlled: BitFlag;
            tiltPositionAware: BitFlag;
        }>, any>>;
        endProductType$Changing: ClusterEvents.AttributeObservable<FixedAttribute<WindowCovering.EndProductType, any>>;
        mode$Changing: ClusterEvents.AttributeObservable<WritableAttribute<TypeFromPartialBitSchema<{
            calibrationMode: BitFlag;
            ledFeedback: BitFlag;
            maintenanceMode: BitFlag;
            motorDirectionReversed: BitFlag;
        }>, any>>;
        operationalStatus$Changing: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
            global: BitFieldEnum<WindowCovering.MovementStatus>;
            lift: BitFieldEnum<WindowCovering.MovementStatus>;
            tilt: BitFieldEnum<WindowCovering.MovementStatus>;
        }>, any>>;
        type$Changing: ClusterEvents.AttributeObservable<FixedAttribute<WindowCovering.WindowCoveringType, any>>;
    } & {
        safetyStatus$Changing: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<TypeFromPartialBitSchema<{
            failedCommunication: BitFlag;
            hardwareFailure: BitFlag;
            manualOperation: BitFlag;
            motorJammed: BitFlag;
            obstacleDetected: BitFlag;
            positionFailure: BitFlag;
            power: BitFlag;
            protection: BitFlag;
            remoteLockout: BitFlag;
            stopInput: BitFlag;
            tamperDetection: BitFlag;
            thermalProtection: BitFlag;
        }>, any>>;
    } & {
        configStatus$Changed: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
            liftEncoderControlled: BitFlag;
            liftMovementReversed: BitFlag;
            liftPositionAware: BitFlag;
            onlineReserved: BitFlag;
            operational: BitFlag;
            tiltEncoderControlled: BitFlag;
            tiltPositionAware: BitFlag;
        }>, any>>;
        endProductType$Changed: ClusterEvents.AttributeObservable<FixedAttribute<WindowCovering.EndProductType, any>>;
        mode$Changed: ClusterEvents.AttributeObservable<WritableAttribute<TypeFromPartialBitSchema<{
            calibrationMode: BitFlag;
            ledFeedback: BitFlag;
            maintenanceMode: BitFlag;
            motorDirectionReversed: BitFlag;
        }>, any>>;
        operationalStatus$Changed: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
            global: BitFieldEnum<WindowCovering.MovementStatus>;
            lift: BitFieldEnum<WindowCovering.MovementStatus>;
            tilt: BitFieldEnum<WindowCovering.MovementStatus>;
        }>, any>>;
        type$Changed: ClusterEvents.AttributeObservable<FixedAttribute<WindowCovering.WindowCoveringType, any>>;
    } & {
        safetyStatus$Changed: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<TypeFromPartialBitSchema<{
            failedCommunication: BitFlag;
            hardwareFailure: BitFlag;
            manualOperation: BitFlag;
            motorJammed: BitFlag;
            obstacleDetected: BitFlag;
            positionFailure: BitFlag;
            power: BitFlag;
            protection: BitFlag;
            remoteLockout: BitFlag;
            stopInput: BitFlag;
            tamperDetection: BitFlag;
            thermalProtection: BitFlag;
        }>, any>>;
    } & {} & {};
    features: TypeFromBitSchema<{}> & TypeFromBitSchema<{
        absolutePosition: BitFlag;
        lift: BitFlag;
        positionAwareLift: BitFlag;
        positionAwareTilt: BitFlag;
        tilt: BitFlag;
    }>;
    session: SecureSession;
    state: Omit<ClusterState.Type<Of<{
        attributes: {};
        commands: {};
        events: {};
        id: 0;
        name: "Unknown";
        revision: 0;
    }>, typeof ClusterBehavior>, never> & {
        configStatus: TypeFromPartialBitSchema<{
            liftEncoderControlled: BitFlag;
            liftMovementReversed: BitFlag;
            liftPositionAware: BitFlag;
            onlineReserved: BitFlag;
            operational: BitFlag;
            tiltEncoderControlled: BitFlag;
            tiltPositionAware: BitFlag;
        }>;
        mode: TypeFromPartialBitSchema<{
            calibrationMode: BitFlag;
            ledFeedback: BitFlag;
            maintenanceMode: BitFlag;
            motorDirectionReversed: BitFlag;
        }>;
        operationalStatus: TypeFromPartialBitSchema<{
            global: BitFieldEnum<WindowCovering.MovementStatus>;
            lift: BitFieldEnum<WindowCovering.MovementStatus>;
            tilt: BitFieldEnum<WindowCovering.MovementStatus>;
        }>;
    } & {
        safetyStatus?: TypeFromPartialBitSchema<{
            failedCommunication: BitFlag;
            hardwareFailure: BitFlag;
            manualOperation: BitFlag;
            motorJammed: BitFlag;
            obstacleDetected: BitFlag;
            positionFailure: BitFlag;
            power: BitFlag;
            protection: BitFlag;
            remoteLockout: BitFlag;
            stopInput: BitFlag;
            tamperDetection: BitFlag;
            thermalProtection: BitFlag;
        }>;
    } & {
        endProductType: WindowCovering.EndProductType;
        type: WindowCovering.WindowCoveringType;
    } & {};
    [asyncDispose](): MaybePromise;
    asAdmin(fn: (() => void)): void;
    assertAttributeEnabled<This, K>(this: This, attributeName: K): void;
    callback<A, R>(reactor: Reactor<A, R>, options?: Reactor.Options): ((...args: A) => undefined | R);
    downOrClose(): MaybePromise;
    initialize(_options?: {}): MaybePromise;
    reactTo<O>(observable: O, reactor: Reactor<Parameters<O["emit"]>, ReturnType<O["emit"]>>, options?: Reactor.Options): void;
    requireAttributeEnabled<This, K>(this: This, attributeName: K): Exclude<This["state"][K], undefined>;
    stopMotion(): MaybePromise;
    toString(): string;
    upOrOpen(): MaybePromise;
    State: any;
}

Hierarchy

  • WindowCoveringBehaviorType
    • WindowCoveringBehavior

Properties

[reference]: Datasource<StateType>
agent: Agent
cluster: never

The implemented cluster.

context: ActionContext
endpoint: Endpoint<Empty>
events: EventEmitter & Omit<ClusterEvents<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior>, never> & {
    configStatus$Changing: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
        liftEncoderControlled: BitFlag;
        liftMovementReversed: BitFlag;
        liftPositionAware: BitFlag;
        onlineReserved: BitFlag;
        operational: BitFlag;
        tiltEncoderControlled: BitFlag;
        tiltPositionAware: BitFlag;
    }>, any>>;
    endProductType$Changing: ClusterEvents.AttributeObservable<FixedAttribute<WindowCovering.EndProductType, any>>;
    mode$Changing: ClusterEvents.AttributeObservable<WritableAttribute<TypeFromPartialBitSchema<{
        calibrationMode: BitFlag;
        ledFeedback: BitFlag;
        maintenanceMode: BitFlag;
        motorDirectionReversed: BitFlag;
    }>, any>>;
    operationalStatus$Changing: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
        global: BitFieldEnum<WindowCovering.MovementStatus>;
        lift: BitFieldEnum<WindowCovering.MovementStatus>;
        tilt: BitFieldEnum<WindowCovering.MovementStatus>;
    }>, any>>;
    type$Changing: ClusterEvents.AttributeObservable<FixedAttribute<WindowCovering.WindowCoveringType, any>>;
} & {
    safetyStatus$Changing: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<TypeFromPartialBitSchema<{
        failedCommunication: BitFlag;
        hardwareFailure: BitFlag;
        manualOperation: BitFlag;
        motorJammed: BitFlag;
        obstacleDetected: BitFlag;
        positionFailure: BitFlag;
        power: BitFlag;
        protection: BitFlag;
        remoteLockout: BitFlag;
        stopInput: BitFlag;
        tamperDetection: BitFlag;
        thermalProtection: BitFlag;
    }>, any>>;
} & {
    configStatus$Changed: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
        liftEncoderControlled: BitFlag;
        liftMovementReversed: BitFlag;
        liftPositionAware: BitFlag;
        onlineReserved: BitFlag;
        operational: BitFlag;
        tiltEncoderControlled: BitFlag;
        tiltPositionAware: BitFlag;
    }>, any>>;
    endProductType$Changed: ClusterEvents.AttributeObservable<FixedAttribute<WindowCovering.EndProductType, any>>;
    mode$Changed: ClusterEvents.AttributeObservable<WritableAttribute<TypeFromPartialBitSchema<{
        calibrationMode: BitFlag;
        ledFeedback: BitFlag;
        maintenanceMode: BitFlag;
        motorDirectionReversed: BitFlag;
    }>, any>>;
    operationalStatus$Changed: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
        global: BitFieldEnum<WindowCovering.MovementStatus>;
        lift: BitFieldEnum<WindowCovering.MovementStatus>;
        tilt: BitFieldEnum<WindowCovering.MovementStatus>;
    }>, any>>;
    type$Changed: ClusterEvents.AttributeObservable<FixedAttribute<WindowCovering.WindowCoveringType, any>>;
} & {
    safetyStatus$Changed: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<TypeFromPartialBitSchema<{
        failedCommunication: BitFlag;
        hardwareFailure: BitFlag;
        manualOperation: BitFlag;
        motorJammed: BitFlag;
        obstacleDetected: BitFlag;
        positionFailure: BitFlag;
        power: BitFlag;
        protection: BitFlag;
        remoteLockout: BitFlag;
        stopInput: BitFlag;
        tamperDetection: BitFlag;
        thermalProtection: BitFlag;
    }>, any>>;
} & {} & {}

Access the behavior's events.

features: TypeFromBitSchema<{}> & TypeFromBitSchema<{
    absolutePosition: BitFlag;
    lift: BitFlag;
    positionAwareLift: BitFlag;
    positionAwareTilt: BitFlag;
    tilt: BitFlag;
}>

Supported features as a flag object.

session: SecureSession
state: Omit<ClusterState.Type<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior>, never> & {
    configStatus: TypeFromPartialBitSchema<{
        liftEncoderControlled: BitFlag;
        liftMovementReversed: BitFlag;
        liftPositionAware: BitFlag;
        onlineReserved: BitFlag;
        operational: BitFlag;
        tiltEncoderControlled: BitFlag;
        tiltPositionAware: BitFlag;
    }>;
    mode: TypeFromPartialBitSchema<{
        calibrationMode: BitFlag;
        ledFeedback: BitFlag;
        maintenanceMode: BitFlag;
        motorDirectionReversed: BitFlag;
    }>;
    operationalStatus: TypeFromPartialBitSchema<{
        global: BitFieldEnum<WindowCovering.MovementStatus>;
        lift: BitFieldEnum<WindowCovering.MovementStatus>;
        tilt: BitFieldEnum<WindowCovering.MovementStatus>;
    }>;
} & {
    safetyStatus?: TypeFromPartialBitSchema<{
        failedCommunication: BitFlag;
        hardwareFailure: BitFlag;
        manualOperation: BitFlag;
        motorJammed: BitFlag;
        obstacleDetected: BitFlag;
        positionFailure: BitFlag;
        power: BitFlag;
        protection: BitFlag;
        remoteLockout: BitFlag;
        stopInput: BitFlag;
        tamperDetection: BitFlag;
        thermalProtection: BitFlag;
    }>;
} & {
    endProductType: WindowCovering.EndProductType;
    type: WindowCovering.WindowCoveringType;
} & {}

Access the behavior's state.

Type declaration

  • ReadonlyconfigStatus: TypeFromPartialBitSchema<{
        liftEncoderControlled: BitFlag;
        liftMovementReversed: BitFlag;
        liftPositionAware: BitFlag;
        onlineReserved: BitFlag;
        operational: BitFlag;
        tiltEncoderControlled: BitFlag;
        tiltPositionAware: BitFlag;
    }>

    This attribute specifies the configuration and status information of the window covering.

    To change settings, devices shall write to the Mode attribute. The behavior causing the setting or clearing of each bit is vendor specific.

    MatterSpecification.v13.Cluster § 5.3.6.9

  • Readonlymode: TypeFromPartialBitSchema<{
        calibrationMode: BitFlag;
        ledFeedback: BitFlag;
        maintenanceMode: BitFlag;
        motorDirectionReversed: BitFlag;
    }>

    The Mode attribute allows configuration of the window covering, such as: reversing the motor direction, placing the window covering into calibration mode, placing the motor into maintenance mode, disabling the network, and disabling status LEDs.

    In the case a device does not support or implement a specific mode, e.g. the device has a specific installation method and reversal is not relevant or the device does not include a maintenance mode, any write interaction to the Mode attribute, with an unsupported mode bit or any out of bounds bits set, must be ignored and a response containing the status of CONSTRAINT_ERROR will be returned.

    MatterSpecification.v13.Cluster § 5.3.6.22

  • ReadonlyoperationalStatus: TypeFromPartialBitSchema<{
        global: BitFieldEnum<WindowCovering.MovementStatus>;
        lift: BitFieldEnum<WindowCovering.MovementStatus>;
        tilt: BitFieldEnum<WindowCovering.MovementStatus>;
    }>

    Indicates the currently ongoing operations and applies to all type of devices.

    MatterSpecification.v13.Cluster § 5.3.6.16

Type declaration

  • Optional ReadonlysafetyStatus?: TypeFromPartialBitSchema<{
        failedCommunication: BitFlag;
        hardwareFailure: BitFlag;
        manualOperation: BitFlag;
        motorJammed: BitFlag;
        obstacleDetected: BitFlag;
        positionFailure: BitFlag;
        power: BitFlag;
        protection: BitFlag;
        remoteLockout: BitFlag;
        stopInput: BitFlag;
        tamperDetection: BitFlag;
        thermalProtection: BitFlag;
    }>

    The SafetyStatus attribute reflects the state of the safety sensors and the common issues preventing movements. By default for nominal operation all flags are cleared (0). A device might support none, one or several bit flags from this attribute (all optional).

    MatterSpecification.v13.Cluster § 5.3.6.23

Type declaration

  • ReadonlyendProductType: WindowCovering.EndProductType

    This attribute SHOULD provide more detail about the product type than can be determined from the main category indicated by the Type attribute.

    The table below helps to match the EndProductType attribute with the Type attribute.

    MatterSpecification.v13.Cluster § 5.3.6.17

  • Readonlytype: WindowCovering.WindowCoveringType

    This attribute shall identify the type of window covering.

    MatterSpecification.v13.Cluster § 5.3.6.2

Methods

  • Create a generic callback function that has the same properties as a Reactor.

    Like a reactor, the callback's "this" will be bound to an active Behavior instance. Because of this: The reactor MUST be a real JS function - arrow functions will not work!

    Type Parameters

    • A extends any[]
    • R

    Parameters

    Returns ((...args: A) => undefined | R)

      • (...args): undefined | R
      • Parameters

        • Rest...args: A

        Returns undefined | R

  • Upon receipt of this command, the window covering will adjust its position so the physical lift/slide and tilt is at the maximum closed/down position. This will happen as fast as possible. The server attributes supported shall be updated as follows:

    if the PositionAware feature is supported:

    • TargetPositionLiftPercent100ths attribute shall be set to 100.00%.

    • TargetPositionTiltPercent100ths attribute shall be set to 100.00%.

    The server positioning attributes will follow the movements, once the movement has successfully finished, the server attributes shall be updated as follows:

    if the PositionAware feature is supported:

    • CurrentPositionLiftPercent100ths attribute shall be 100.00%.

    • CurrentPositionLiftPercentage attribute shall be 100%.

    • CurrentPositionTiltPercent100ths attribute shall be 100.00%.

    • CurrentPositionTiltPercentage attribute shall be 100%. if the AbsolutePosition feature is supported:

    • CurrentPositionLift attribute shall be equal to the InstalledClosedLimitLift attribute.

    • CurrentPositionTilt attribute shall be equal to the InstalledClosedLimitTilt attribute.

    Returns MaybePromise

    MatterSpecification.v13.Cluster § 5.3.7.2

  • Behaviors are ephemeral and should not perform initialization in their constructor. They can override this method instead.

    This method may be synchronous or asyncronous. If asynchronous, the behavior will not be available for external use until initialization completes.

    Parameters

    • Optional_options: {}

      Returns MaybePromise

    • Install a Reactor.

      Important: The reactor MUST be a real JS function - arrow functions will not work!

      Type Parameters

      Parameters

      Returns void

    • Upon receipt of this command, the window covering will stop any adjusting to the physical tilt and lift/slide that is currently occurring. The server attributes supported shall be updated as follows:

      • TargetPositionLiftPercent100ths attribute will be set to CurrentPositionLiftPercent100ths attribute value.

      • TargetPositionTiltPercent100ths attribute will be set to CurrentPositionTiltPercent100ths attribute value.

      Returns MaybePromise

      MatterSpecification.v13.Cluster § 5.3.7.3

    • Upon receipt of this command, the window covering will adjust its position so the physical lift/slide and tilt is at the maximum open/up position. This will happen as fast as possible. The server attributes shall be updated as follows:

      if the PositionAware feature is supported:

      • TargetPositionLiftPercent100ths attribute shall be set to 0.00%.

      • TargetPositionTiltPercent100ths attribute shall be set to 0.00%.

      The server positioning attributes will follow the movements, once the movement has successfully finished, the server attributes shall be updated as follows:

      if the PositionAware feature is supported:

      • CurrentPositionLiftPercent100ths attribute shall be 0.00%.

      • CurrentPositionLiftPercentage attribute shall be 0%.

      • CurrentPositionTiltPercent100ths attribute shall be 0.00%.

      • CurrentPositionTiltPercentage attribute shall be 0%. if the AbsolutePosition feature is supported:

      • CurrentPositionLift attribute shall be equal to the InstalledOpenLimitLift attribute.

      • CurrentPositionTilt attribute shall be equal to the InstalledOpenLimitTilt attribute.

      Returns MaybePromise

      MatterSpecification.v13.Cluster § 5.3.7.1