device: changeReport(cause, fill) sends a ChangeReport on the 2.0 API
The design has it (section 5) and 2.0 lacked it: a ChangeReport could only be sent with getChangeReport() of 1.x, which has no helper for a contact or a motion sensor. fill sets what changed, and after unchanged() what did not; the rest of the context is the state of device.state(). The report goes to <root>/changeReport. It throws MessageError without a changed property and resolves with the failure when the device is on no bridge, as raise() does. Four tests in test/device/raise.test.js. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
f0ca4c1fa4
commit
2cbcde563e
6 changed files with 165 additions and 6 deletions
13
dist/types/device/Device.d.ts
vendored
13
dist/types/device/Device.d.ts
vendored
|
|
@ -134,6 +134,19 @@ declare class Device extends EventEmitter {
|
|||
instance?: string;
|
||||
messageId?: string;
|
||||
}): Promise<PublishResult>;
|
||||
/**
|
||||
* Say that the state of the device changed, without a directive that asked for it:
|
||||
*
|
||||
* door.changeReport("PHYSICAL_INTERACTION", (s) => s.set(contact, "detectionState", "DETECTED"));
|
||||
*
|
||||
* fill sets what changed; after unchanged() it sets what did not. The rest of the context is the state of
|
||||
* device.state(). The report goes to <root>/changeReport, which Alex2MQTT posts to Alexa; Alexa takes it for a
|
||||
* capability declared with proactivelyReported. Resolves with what became of the publish and does not reject.
|
||||
*
|
||||
* Throws a MessageError when fill sets no property that changed, and a SchemaError for a value Alexa would not take.
|
||||
*/
|
||||
changeReport(cause: ChangeCause, fill: Fill): Promise<PublishResult>;
|
||||
private publish;
|
||||
/**
|
||||
* How the device reports its state, every retrievable property of it:
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue