registry: SecurityPanelController with Arm.Response and its errors
Alexa.SecurityPanelController is described from its page: version 3 (the stub of 1.5.2 said 1), armState and the four alarms, Arm and Disarm. ctx.respond() answers Arm with Arm.Response under the namespace of the interface, its payload checked (exitDelayInSeconds 0 to 255, bypassedEndpoints), and Disarm with a Response. A Disarm carries the PIN the user said when the panel is declared with supportedAuthorizationTypes; the handler checks it and answers UNAUTHORIZED, which goes under Alexa.SecurityPanelController like the five other error types. A panel declared without options lists armState, where 1.5.2 listed no property; alarms are declared. 17 examples of the two pages are saved as fixtures. 215 tests pass, 207 before. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
f555a5df70
commit
c59cf3ff10
39 changed files with 1248 additions and 23 deletions
2
dist/types/index.d.ts
vendored
2
dist/types/index.d.ts
vendored
|
|
@ -5,7 +5,7 @@ export type { EndpointDefinition, EndpointJson } from "./device/Device.js";
|
|||
export { Capability } from "./device/Capability.js";
|
||||
export type { CapabilityJson, CommonOptions, Declaration } from "./device/Capability.js";
|
||||
export { registry, DeclarationError, SchemaError } from "./registry/index.js";
|
||||
export { Alexa, BrightnessController, ColorController, ColorTemperatureController, ContactSensor, HumiditySensor, LockController, ModeController, MotionSensor, PercentageController, PowerLevelController, RangeController, TemperatureSensor, ThermostatController, ThermostatControllerSchedule, ToggleController, } from "./registry/index.js";
|
||||
export { Alexa, BrightnessController, ColorController, ColorTemperatureController, ContactSensor, HumiditySensor, LockController, ModeController, MotionSensor, PercentageController, PowerLevelController, RangeController, SecurityPanelController, TemperatureSensor, ThermostatController, ThermostatControllerSchedule, ToggleController, } from "./registry/index.js";
|
||||
export { PowerController, EndpointHealth } from "./compat/enums.js";
|
||||
export { asset, text, semantics, SemanticsBuilder } from "./registry/index.js";
|
||||
export { ASSETS as Assets, UNITS_OF_MEASURE as Units, ACTIONS as Actions, STATES as States, DISPLAY_CATEGORIES as DisplayCategories, THERMOSTAT_MODES as ThermostatModes, } from "./registry/index.js";
|
||||
|
|
|
|||
3
dist/types/registry/index.d.ts
vendored
3
dist/types/registry/index.d.ts
vendored
|
|
@ -12,6 +12,7 @@ import { PercentageController } from "./interfaces/PercentageController.js";
|
|||
import { PowerController } from "./interfaces/PowerController.js";
|
||||
import { PowerLevelController } from "./interfaces/PowerLevelController.js";
|
||||
import { RangeController } from "./interfaces/RangeController.js";
|
||||
import { SecurityPanelController } from "./interfaces/SecurityPanelController.js";
|
||||
import { TemperatureSensor } from "./interfaces/TemperatureSensor.js";
|
||||
import { ThermostatController } from "./interfaces/ThermostatController.js";
|
||||
import { ThermostatControllerSchedule } from "./interfaces/ThermostatControllerSchedule.js";
|
||||
|
|
@ -25,7 +26,7 @@ export declare const registry: {
|
|||
/** Every descriptor, ordered by namespace. */
|
||||
list(): AnyDescriptor[];
|
||||
};
|
||||
export { Alexa, BrightnessController, ColorController, ColorTemperatureController, ContactSensor, EndpointHealth, HumiditySensor, LockController, ModeController, MotionSensor, PercentageController, PowerController, PowerLevelController, RangeController, TemperatureSensor, ThermostatController, ThermostatControllerSchedule, ToggleController, };
|
||||
export { Alexa, BrightnessController, ColorController, ColorTemperatureController, ContactSensor, EndpointHealth, HumiditySensor, LockController, ModeController, MotionSensor, PercentageController, PowerController, PowerLevelController, RangeController, SecurityPanelController, TemperatureSensor, ThermostatController, ThermostatControllerSchedule, ToggleController, };
|
||||
export type { Mode } from "./interfaces/ModeController.js";
|
||||
export { THERMOSTAT_MODES } from "./interfaces/ThermostatController.js";
|
||||
export type { ThermostatModeName } from "./interfaces/ThermostatController.js";
|
||||
|
|
|
|||
67
dist/types/registry/interfaces/SecurityPanelController.d.ts
vendored
Normal file
67
dist/types/registry/interfaces/SecurityPanelController.d.ts
vendored
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
/**
|
||||
* A security panel. Arm is answered with Arm.Response, Disarm with a Response, an error of errorTypes under the
|
||||
* namespace of the interface (alexa-securitypanelcontroller-errorresponse.html).
|
||||
*
|
||||
* Alexa sends Disarm only when the user switched on disarming by voice in the Alexa app. A panel declared with
|
||||
* supportedAuthorizationTypes gets the PIN the user said in payload.authorization and has to check it: a wrong PIN
|
||||
* is answered with UNAUTHORIZED. Without authorization in the payload Alexa checked a voice code of its own.
|
||||
*
|
||||
* A panel that is ARMED_AWAY is disarmed before it is armed another way: Arm to ARMED_STAY or ARMED_NIGHT is
|
||||
* then answered with AUTHORIZATION_REQUIRED. Arm to the state the panel is in is answered with Arm.Response.
|
||||
*/
|
||||
export declare const SecurityPanelController: import("../types.js").InterfaceDescriptor<{
|
||||
armState: {
|
||||
name: string;
|
||||
value: import("../schema.js").EnumSchema<"ARMED_AWAY" | "ARMED_STAY" | "ARMED_NIGHT" | "DISARMED">;
|
||||
};
|
||||
burglaryAlarm: {
|
||||
name: string;
|
||||
value: import("../schema.js").Schema<import("../schema.js").InferShape<{
|
||||
value: import("../schema.js").EnumSchema<"OK" | "ALARM">;
|
||||
}>>;
|
||||
};
|
||||
fireAlarm: {
|
||||
name: string;
|
||||
value: import("../schema.js").Schema<import("../schema.js").InferShape<{
|
||||
value: import("../schema.js").EnumSchema<"OK" | "ALARM">;
|
||||
}>>;
|
||||
};
|
||||
carbonMonoxideAlarm: {
|
||||
name: string;
|
||||
value: import("../schema.js").Schema<import("../schema.js").InferShape<{
|
||||
value: import("../schema.js").EnumSchema<"OK" | "ALARM">;
|
||||
}>>;
|
||||
};
|
||||
waterAlarm: {
|
||||
name: string;
|
||||
value: import("../schema.js").Schema<import("../schema.js").InferShape<{
|
||||
value: import("../schema.js").EnumSchema<"OK" | "ALARM">;
|
||||
}>>;
|
||||
};
|
||||
}, {
|
||||
Arm: {
|
||||
name: string;
|
||||
payload: import("../schema.js").Schema<import("../schema.js").InferShape<{
|
||||
armState: import("../schema.js").EnumSchema<"ARMED_AWAY" | "ARMED_STAY" | "ARMED_NIGHT" | "DISARMED">;
|
||||
bypassType: import("../schema.js").OptionalSchema<"BYPASS_ALL">;
|
||||
}>>;
|
||||
note: string;
|
||||
};
|
||||
Disarm: {
|
||||
name: string;
|
||||
payload: import("../schema.js").Schema<import("../schema.js").InferShape<{
|
||||
authorization: import("../schema.js").OptionalSchema<import("../schema.js").InferShape<{
|
||||
type: import("../schema.js").EnumSchema<"FOUR_DIGIT_PIN">;
|
||||
value: import("../schema.js").Schema<string>;
|
||||
}>>;
|
||||
}>>;
|
||||
note: string;
|
||||
};
|
||||
}, import("../schema.js").InferShape<{
|
||||
/** Default: Alexa takes the panel to have all four. */
|
||||
supportedArmStates: import("../schema.js").OptionalSchema<("ARMED_AWAY" | "ARMED_STAY" | "ARMED_NIGHT" | "DISARMED")[]>;
|
||||
/** For a panel that has four digit PINs and checks the PIN of a Disarm itself. */
|
||||
supportedAuthorizationTypes: import("../schema.js").OptionalSchema<"FOUR_DIGIT_PIN"[]>;
|
||||
/** The alarms the panel reports. Default: none. */
|
||||
alarms: import("../schema.js").OptionalSchema<("burglaryAlarm" | "fireAlarm" | "carbonMonoxideAlarm" | "waterAlarm")[]>;
|
||||
}>, false>;
|
||||
Loading…
Add table
Add a link
Reference in a new issue